Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / scripts / snf_service_export.py @ 559f8135

History | View | Annotate | Download (6.1 kB)

1
import os
2
os.environ['DJANGO_SETTINGS_MODULE'] = 'synnefo.settings'
3
from optparse import OptionParser
4
from synnefo.lib.services import fill_endpoints, filter_public
5
from django.utils import simplejson as json
6

    
7

    
8
astakos_services = {
9
    'astakos_account': {
10
        'type': 'account',
11
        'component': 'astakos',
12
        'prefix': 'account',
13
        'public': True,
14
        'endpoints': [
15
            {'versionId': 'v1.0',
16
             'publicURL': None},
17
        ],
18
        'resources': {
19
            'pending_app': {
20
                'desc': "Number of pending project applications",
21
                'name': "astakos.pending_app",
22
                'service_type': "account",
23
                'service_origin': "astakos_account",
24
                'allow_in_projects': False},
25
        },
26
    },
27

    
28
    'astakos_identity': {
29
        'type': 'identity',
30
        'component': 'astakos',
31
        'prefix': 'identity',
32
        'public': True,
33
        'endpoints': [
34
            {'versionId': 'v2.0',
35
             'publicURL': None},
36
        ],
37
        'resources': {},
38
    },
39

    
40
    'astakos_weblogin': {
41
        'type': 'astakos_weblogin',
42
        'component': 'astakos',
43
        'prefix': 'weblogin',
44
        'public': True,
45
        'endpoints': [
46
            {'versionId': '',
47
             'publicURL': None},
48
        ],
49
    },
50

    
51
    'astakos_ui': {
52
        'type': 'astakos_ui',
53
        'component': 'astakos',
54
        'prefix': 'ui',
55
        'public': False,
56
        'endpoints': [
57
            {'versionId': '',
58
             'publicURL': None},
59
        ],
60
    },
61
}
62

    
63
cyclades_services = {
64
    'cyclades_compute': {
65
        'type': 'compute',
66
        'component': 'cyclades',
67
        'prefix': 'compute',
68
        'public': True,
69
        'endpoints': [
70
            {'versionId': 'v2.0',
71
             'publicURL': None},
72
        ],
73
        'resources': {
74
            'vm': {
75
                "name": "cyclades.vm",
76
                "desc": "Number of virtual machines",
77
                "service_type": "compute",
78
                "service_origin": "cyclades_compute",
79
            },
80
            'cpu': {
81
                "name": "cyclades.cpu",
82
                "desc": "Number of virtual machine processors",
83
                "service_type": "compute",
84
                "service_origin": "cyclades_compute",
85
            },
86
            'ram': {
87
                "name": "cyclades.ram",
88
                "desc": "Virtual machine memory size",
89
                "unit": "bytes",
90
                "service_type": "compute",
91
                "service_origin": "cyclades_compute",
92
            },
93
            'disk': {
94
                "name": "cyclades.disk",
95
                "desc": "Virtual machine disk size",
96
                "unit": "bytes",
97
                "service_type": "compute",
98
                "service_origin": "cyclades_compute",
99
            },
100
            'network-private': {
101
                "name": "cyclades.network.private",
102
                "desc": "Number of private networks",
103
                "service_type": "compute",
104
                "service_origin": "cyclades_compute",
105
            },
106
        },
107
    },
108

    
109
    'cyclades_plankton': {
110
        'type': 'image',
111
        'component': 'cyclades',
112
        'prefix': 'image',
113
        'public': True,
114
        'endpoints': [
115
            {'versionId': 'v1.0',
116
             'publicURL': None},
117
        ],
118
        'resources': {},
119
    },
120

    
121
    'cyclades_vmapi': {
122
        'type': 'cyclades_vmapi',
123
        'component': 'cyclades',
124
        'prefix': 'vmapi',
125
        'public': True,
126
        'endpoints': [
127
            {'versionId': 'v1.0',
128
             'publicURL': None},
129
        ],
130
        'resources': {},
131
    },
132

    
133
    'cyclades_helpdesk': {
134
        'type': 'cyclades_helpdesk',
135
        'component': 'cyclades',
136
        'prefix': 'helpdesk',
137
        'public': False,
138
        'endpoints': [
139
            {'versionId': '',
140
             'publicURL': None},
141
        ],
142
    },
143

    
144
    'cyclades_userdata': {
145
        'type': 'cyclades_userdata',
146
        'component': 'cyclades',
147
        'prefix': 'userdata',
148
        'public': False,
149
        'endpoints': [
150
            {'versionId': '',
151
             'publicURL': None},
152
        ],
153
        'resources': {},
154
    },
155

    
156
    'cyclades_ui': {
157
        'type': 'cyclades_ui',
158
        'component': 'cyclades',
159
        'prefix': 'ui',
160
        'public': False,
161
        'endpoints': [
162
            {'versionId': '',
163
             'publicURL': None},
164
        ],
165
        'resources': {},
166
    },
167
}
168

    
169
pithos_services = {
170
    'pithos_object-store': {
171
        'type': 'object-store',
172
        'component': 'pithos',
173
        'prefix': 'object-store',
174
        'public': True,
175
        'endpoints': [
176
            {'versionId': 'v1',
177
             'publicURL': None},
178
        ],
179
        'resources': {
180
            'diskspace': {
181
                "desc": "Pithos account diskspace",
182
                "name": "pithos.diskspace",
183
                "unit": "bytes",
184
                "service_type": "object-store",
185
                "service_origin": "pithos_object-store",
186
            },
187
        },
188
    },
189

    
190
    'pithos_public': {
191
        'type': 'public',
192
        'component': 'pithos',
193
        'prefix': 'public',
194
        'public': True,
195
        'endpoints': [
196
            {'versionId': 'v2.0',
197
             'publicURL': None},
198
        ],
199
        'resources': {},
200
    },
201

    
202
    'pithos_ui': {
203
        'type': 'pithos_ui',
204
        'component': 'pithos',
205
        'prefix': 'ui',
206
        'public': False,
207
        'endpoints': [
208
            {'versionId': '',
209
             'publicURL': None},
210
        ],
211
        'resources': {},
212
    },
213
}
214

    
215

    
216
definitions = {
217
    'astakos': astakos_services,
218
    'cyclades': cyclades_services,
219
    'pithos': pithos_services,
220
}
221

    
222

    
223
def print_definitions(d, base_url):
224
    fill_endpoints(d, base_url)
225
    print json.dumps(filter_public(d), indent=4)
226

    
227

    
228
usage = "usage: %prog <component_name> <base_url>"
229
parser = OptionParser(usage=usage)
230

    
231

    
232
def main():
233
    (options, args) = parser.parse_args()
234
    if len(args) != 2:
235
        parser.error("Wrong number of arguments.")
236
    component = args[0]
237
    try:
238
        services = definitions[component]
239
    except KeyError:
240
        print "Unrecognized component %s" % component
241
        exit(1)
242
    base_url = args[1]
243
    print_definitions(services, base_url)
244

    
245
if __name__ == '__main__':
246
    main()