Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / scripts / snf_service_export.py @ d9a7f0bb

History | View | Annotate | Download (8 kB)

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

    
8

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

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

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

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

    
64
    'astakos_admin': {
65
        'type': 'astakos_admin',
66
        'component': 'astakos',
67
        'prefix': 'admin',
68
        'public': False,
69
        'endpoints': [
70
            {'versionId': '',
71
             'publicURL': None},
72
        ],
73
        'resources': {},
74
    },
75

    
76
}
77

    
78
from astakos.oa2.services import oa2_services
79
astakos_services.update(oa2_services)
80

    
81
cyclades_services = {
82
    'cyclades_compute': {
83
        'type': 'compute',
84
        'component': 'cyclades',
85
        'prefix': 'compute',
86
        'public': True,
87
        'endpoints': [
88
            {'versionId': 'v2.0',
89
             'publicURL': None},
90
        ],
91
        'resources': {
92
            'vm': {
93
                "name": "cyclades.vm",
94
                "desc": "Number of virtual machines",
95
                "service_type": "compute",
96
                "service_origin": "cyclades_compute",
97
            },
98
            'total_cpu': {
99
                "name": "cyclades.total_cpu",
100
                "desc": "Number of virtual machine processors",
101
                "service_type": "compute",
102
                "service_origin": "cyclades_compute",
103
                "ui_visible": False,
104
                "api_visible": False,
105
            },
106
            'cpu': {
107
                "name": "cyclades.cpu",
108
                "desc": "Number of virtual machine processors of running"
109
                        " servers",
110
                "service_type": "compute",
111
                "service_origin": "cyclades_compute",
112
            },
113
            'total_ram': {
114
                "name": "cyclades.total_ram",
115
                "desc": "Virtual machine memory size",
116
                "unit": "bytes",
117
                "service_type": "compute",
118
                "service_origin": "cyclades_compute",
119
                "ui_visible": False,
120
                "api_visible": False,
121
            },
122
            'ram': {
123
                "name": "cyclades.ram",
124
                "desc": "Virtual machine memory size of running servers",
125
                "unit": "bytes",
126
                "service_type": "compute",
127
                "service_origin": "cyclades_compute",
128
            },
129
            'disk': {
130
                "name": "cyclades.disk",
131
                "desc": "Virtual machine disk size",
132
                "unit": "bytes",
133
                "service_type": "compute",
134
                "service_origin": "cyclades_compute",
135
            },
136
        },
137
    },
138

    
139
    'cyclades_plankton': {
140
        'type': 'image',
141
        'component': 'cyclades',
142
        'prefix': 'image',
143
        'public': True,
144
        'endpoints': [
145
            {'versionId': 'v1.0',
146
             'publicURL': None},
147
        ],
148
        'resources': {},
149
    },
150

    
151
    'cyclades_network': {
152
        'type': 'network',
153
        'component': 'cyclades',
154
        'prefix': 'network',
155
        'public': True,
156
        'endpoints': [
157
            {'versionId': 'v2.0',
158
             'publicURL': None},
159
        ],
160
        'resources': {
161
            'network-private': {
162
                "name": "cyclades.network.private",
163
                "desc": "Number of private networks",
164
                "service_type": "network",
165
                "service_origin": "cyclades_network",
166
            },
167
            'floating_ip': {
168
                "name": "cyclades.floating_ip",
169
                "desc": "Number of Floating IP addresses",
170
                "service_type": "network",
171
                "service_origin": "cyclades_network",
172
            },
173
        },
174
    },
175

    
176
    'cyclades_vmapi': {
177
        'type': 'vmapi',
178
        'component': 'cyclades',
179
        'prefix': 'vmapi',
180
        'public': True,
181
        'endpoints': [
182
            {'versionId': 'v1.0',
183
             'publicURL': None},
184
        ],
185
        'resources': {},
186
    },
187

    
188
    'cyclades_helpdesk': {
189
        'type': 'cyclades_helpdesk',
190
        'component': 'cyclades',
191
        'prefix': 'helpdesk',
192
        'public': False,
193
        'endpoints': [
194
            {'versionId': '',
195
             'publicURL': None},
196
        ],
197
    },
198

    
199
    'cyclades_userdata': {
200
        'type': 'cyclades_userdata',
201
        'component': 'cyclades',
202
        'prefix': 'userdata',
203
        'public': False,
204
        'endpoints': [
205
            {'versionId': '',
206
             'publicURL': None},
207
        ],
208
        'resources': {},
209
    },
210

    
211
    'cyclades_ui': {
212
        'type': 'cyclades_ui',
213
        'component': 'cyclades',
214
        'prefix': 'ui',
215
        'public': False,
216
        'endpoints': [
217
            {'versionId': '',
218
             'publicURL': None},
219
        ],
220
        'resources': {},
221
    },
222

    
223
    'cyclades_admin': {
224
        'type': 'admin',
225
        'component': 'cyclades',
226
        'prefix': 'admin',
227
        'public': True,
228
        'endpoints': [
229
            {'versionId': '',
230
             'publicURL': None},
231
        ],
232
        'resources': {},
233
    },
234
}
235

    
236
pithos_services = {
237
    'pithos_object-store': {
238
        'type': 'object-store',
239
        'component': 'pithos',
240
        'prefix': 'object-store',
241
        'public': True,
242
        'endpoints': [
243
            {'versionId': 'v1',
244
             'publicURL': None},
245
        ],
246
        'resources': {
247
            'diskspace': {
248
                "desc": "Pithos account diskspace",
249
                "name": "pithos.diskspace",
250
                "unit": "bytes",
251
                "service_type": "object-store",
252
                "service_origin": "pithos_object-store",
253
            },
254
        },
255
    },
256

    
257
    'pithos_public': {
258
        'type': 'pithos_public',
259
        'component': 'pithos',
260
        'prefix': 'public',
261
        'public': False,
262
        'endpoints': [
263
            {'versionId': '',
264
             'publicURL': None},
265
        ],
266
        'resources': {},
267
    },
268

    
269
    'pithos_ui': {
270
        'type': 'pithos_ui',
271
        'component': 'pithos',
272
        'prefix': 'ui',
273
        'public': False,
274
        'endpoints': [
275
            {'versionId': '',
276
             'publicURL': None},
277
        ],
278
        'resources': {},
279
    },
280
}
281

    
282

    
283
definitions = {
284
    'astakos': astakos_services,
285
    'cyclades': cyclades_services,
286
    'pithos': pithos_services,
287
}
288

    
289

    
290
def print_definitions(d, base_url):
291
    fill_endpoints(d, base_url)
292
    print json.dumps(filter_public(d), indent=4)
293

    
294

    
295
usage = "usage: %prog <component_name> <base_url>"
296
parser = OptionParser(usage=usage)
297

    
298

    
299
def main():
300
    (options, args) = parser.parse_args()
301
    if len(args) != 2:
302
        parser.error("Wrong number of arguments.")
303
    component = args[0]
304
    try:
305
        services = definitions[component]
306
    except KeyError:
307
        print >> sys.stderr, "Unrecognized component %s" % component
308
        exit(1)
309
    base_url = args[1]
310
    print_definitions(services, base_url)
311

    
312
if __name__ == '__main__':
313
    main()