Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / scripts / snf_service_export.py @ 4c657887

History | View | Annotate | Download (7.7 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
    'astakos_admin': {
63
        'type': 'astakos_admin',
64
        'component': 'astakos',
65
        'prefix': 'admin',
66
        'public': False,
67
        'endpoints': [
68
            {'versionId': '',
69
             'publicURL': None},
70
        ],
71
    },
72
}
73

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

    
128
    'cyclades_plankton': {
129
        'type': 'image',
130
        'component': 'cyclades',
131
        'prefix': 'image',
132
        'public': True,
133
        'endpoints': [
134
            {'versionId': 'v1.0',
135
             'publicURL': None},
136
        ],
137
        'resources': {},
138
    },
139

    
140
    'cyclades_network': {
141
        'type': 'network',
142
        'component': 'cyclades',
143
        'prefix': 'network',
144
        'public': True,
145
        'endpoints': [
146
            {'versionId': 'v2.0',
147
             'publicURL': None},
148
        ],
149
        'resources': {
150
            'network-private': {
151
                "name": "cyclades.network.private",
152
                "desc": "Number of private networks",
153
                "service_type": "network",
154
                "service_origin": "cyclades_network",
155
            },
156
            'floating_ip': {
157
                "name": "cyclades.floating_ip",
158
                "desc": "Number of Floating IP addresses",
159
                "service_type": "network",
160
                "service_origin": "cyclades_network",
161
            },
162
        },
163
    },
164

    
165
    'cyclades_vmapi': {
166
        'type': 'vmapi',
167
        'component': 'cyclades',
168
        'prefix': 'vmapi',
169
        'public': True,
170
        'endpoints': [
171
            {'versionId': 'v1.0',
172
             'publicURL': None},
173
        ],
174
        'resources': {},
175
    },
176

    
177
    'cyclades_helpdesk': {
178
        'type': 'cyclades_helpdesk',
179
        'component': 'cyclades',
180
        'prefix': 'helpdesk',
181
        'public': False,
182
        'endpoints': [
183
            {'versionId': '',
184
             'publicURL': None},
185
        ],
186
    },
187

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

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

    
212
    'cyclades_admin': {
213
        'type': 'admin',
214
        'component': 'cyclades',
215
        'prefix': 'admin',
216
        'public': True,
217
        'endpoints': [
218
            {'versionId': '',
219
             'publicURL': None},
220
        ],
221
        'resources': {},
222
    },
223
}
224

    
225
pithos_services = {
226
    'pithos_object-store': {
227
        'type': 'object-store',
228
        'component': 'pithos',
229
        'prefix': 'object-store',
230
        'public': True,
231
        'endpoints': [
232
            {'versionId': 'v1',
233
             'publicURL': None},
234
        ],
235
        'resources': {
236
            'diskspace': {
237
                "desc": "Pithos account diskspace",
238
                "name": "pithos.diskspace",
239
                "unit": "bytes",
240
                "service_type": "object-store",
241
                "service_origin": "pithos_object-store",
242
            },
243
        },
244
    },
245

    
246
    'pithos_public': {
247
        'type': 'pithos_public',
248
        'component': 'pithos',
249
        'prefix': 'public',
250
        'public': False,
251
        'endpoints': [
252
            {'versionId': '',
253
             'publicURL': None},
254
        ],
255
        'resources': {},
256
    },
257

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

    
271

    
272
definitions = {
273
    'astakos': astakos_services,
274
    'cyclades': cyclades_services,
275
    'pithos': pithos_services,
276
}
277

    
278

    
279
def print_definitions(d, base_url):
280
    fill_endpoints(d, base_url)
281
    print json.dumps(filter_public(d), indent=4)
282

    
283

    
284
usage = "usage: %prog <component_name> <base_url>"
285
parser = OptionParser(usage=usage)
286

    
287

    
288
def main():
289
    (options, args) = parser.parse_args()
290
    if len(args) != 2:
291
        parser.error("Wrong number of arguments.")
292
    component = args[0]
293
    try:
294
        services = definitions[component]
295
    except KeyError:
296
        print "Unrecognized component %s" % component
297
        exit(1)
298
    base_url = args[1]
299
    print_definitions(services, base_url)
300

    
301
if __name__ == '__main__':
302
    main()