Statistics
| Branch: | Tag: | Revision:

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

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_oa2': {
63
        'type': 'astakos_auth',
64
        'component': 'astakos',
65
        'prefix': 'oa2',
66
        'public': True,
67
        'endpoints': [
68
            {'versionId': '',
69
             'publicURL': None},
70
        ],
71
        'resources': {},
72
    },
73
}
74

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

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

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

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

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

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

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

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

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

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

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

    
272

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

    
279

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

    
284

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

    
288

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

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