Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / scripts / snf_service_export.py @ 2f8a7c0e

History | View | Annotate | Download (8 kB)

1 21879b7f Giorgos Korfiatis
import os
2 21879b7f Giorgos Korfiatis
os.environ['DJANGO_SETTINGS_MODULE'] = 'synnefo.settings'
3 21879b7f Giorgos Korfiatis
from optparse import OptionParser
4 21879b7f Giorgos Korfiatis
from synnefo.lib.services import fill_endpoints, filter_public
5 21879b7f Giorgos Korfiatis
from django.utils import simplejson as json
6 21879b7f Giorgos Korfiatis
7 21879b7f Giorgos Korfiatis
8 21879b7f Giorgos Korfiatis
astakos_services = {
9 21879b7f Giorgos Korfiatis
    'astakos_account': {
10 21879b7f Giorgos Korfiatis
        'type': 'account',
11 21879b7f Giorgos Korfiatis
        'component': 'astakos',
12 21879b7f Giorgos Korfiatis
        'prefix': 'account',
13 21879b7f Giorgos Korfiatis
        'public': True,
14 21879b7f Giorgos Korfiatis
        'endpoints': [
15 21879b7f Giorgos Korfiatis
            {'versionId': 'v1.0',
16 21879b7f Giorgos Korfiatis
             'publicURL': None},
17 21879b7f Giorgos Korfiatis
        ],
18 21879b7f Giorgos Korfiatis
        'resources': {
19 21879b7f Giorgos Korfiatis
            'pending_app': {
20 21879b7f Giorgos Korfiatis
                'desc': "Number of pending project applications",
21 21879b7f Giorgos Korfiatis
                'name': "astakos.pending_app",
22 21879b7f Giorgos Korfiatis
                'service_type': "account",
23 21879b7f Giorgos Korfiatis
                'service_origin': "astakos_account",
24 2dc27ac1 Giorgos Korfiatis
                "ui_visible": False,
25 2dc27ac1 Giorgos Korfiatis
                "api_visible": False},
26 21879b7f Giorgos Korfiatis
        },
27 21879b7f Giorgos Korfiatis
    },
28 21879b7f Giorgos Korfiatis
29 923e6582 Georgios D. Tsoukalas
    'astakos_identity': {
30 21879b7f Giorgos Korfiatis
        'type': 'identity',
31 21879b7f Giorgos Korfiatis
        'component': 'astakos',
32 21879b7f Giorgos Korfiatis
        'prefix': 'identity',
33 21879b7f Giorgos Korfiatis
        'public': True,
34 21879b7f Giorgos Korfiatis
        'endpoints': [
35 21879b7f Giorgos Korfiatis
            {'versionId': 'v2.0',
36 21879b7f Giorgos Korfiatis
             'publicURL': None},
37 21879b7f Giorgos Korfiatis
        ],
38 21879b7f Giorgos Korfiatis
        'resources': {},
39 21879b7f Giorgos Korfiatis
    },
40 21879b7f Giorgos Korfiatis
41 559f8135 Giorgos Korfiatis
    'astakos_weblogin': {
42 559f8135 Giorgos Korfiatis
        'type': 'astakos_weblogin',
43 559f8135 Giorgos Korfiatis
        'component': 'astakos',
44 559f8135 Giorgos Korfiatis
        'prefix': 'weblogin',
45 559f8135 Giorgos Korfiatis
        'public': True,
46 559f8135 Giorgos Korfiatis
        'endpoints': [
47 559f8135 Giorgos Korfiatis
            {'versionId': '',
48 559f8135 Giorgos Korfiatis
             'publicURL': None},
49 559f8135 Giorgos Korfiatis
        ],
50 559f8135 Giorgos Korfiatis
    },
51 559f8135 Giorgos Korfiatis
52 21879b7f Giorgos Korfiatis
    'astakos_ui': {
53 21879b7f Giorgos Korfiatis
        'type': 'astakos_ui',
54 21879b7f Giorgos Korfiatis
        'component': 'astakos',
55 21879b7f Giorgos Korfiatis
        'prefix': 'ui',
56 21879b7f Giorgos Korfiatis
        'public': False,
57 21879b7f Giorgos Korfiatis
        'endpoints': [
58 21879b7f Giorgos Korfiatis
            {'versionId': '',
59 21879b7f Giorgos Korfiatis
             'publicURL': None},
60 4c657887 Giorgos Korfiatis
        ],
61 4c657887 Giorgos Korfiatis
    },
62 4c657887 Giorgos Korfiatis
63 4c657887 Giorgos Korfiatis
    'astakos_admin': {
64 4c657887 Giorgos Korfiatis
        'type': 'astakos_admin',
65 4c657887 Giorgos Korfiatis
        'component': 'astakos',
66 4c657887 Giorgos Korfiatis
        'prefix': 'admin',
67 4c657887 Giorgos Korfiatis
        'public': False,
68 4c657887 Giorgos Korfiatis
        'endpoints': [
69 4c657887 Giorgos Korfiatis
            {'versionId': '',
70 4c657887 Giorgos Korfiatis
             'publicURL': None},
71 21879b7f Giorgos Korfiatis
        ],
72 e28a4841 Sofia Papagiannaki
        'resources': {},
73 21879b7f Giorgos Korfiatis
    },
74 e28a4841 Sofia Papagiannaki
75 21879b7f Giorgos Korfiatis
}
76 21879b7f Giorgos Korfiatis
77 2f8a7c0e Sofia Papagiannaki
from astakos.oa2.services import oa2_services
78 2f8a7c0e Sofia Papagiannaki
astakos_services.update(oa2_services)
79 2f8a7c0e Sofia Papagiannaki
80 21879b7f Giorgos Korfiatis
cyclades_services = {
81 21879b7f Giorgos Korfiatis
    'cyclades_compute': {
82 21879b7f Giorgos Korfiatis
        'type': 'compute',
83 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
84 21879b7f Giorgos Korfiatis
        'prefix': 'compute',
85 21879b7f Giorgos Korfiatis
        'public': True,
86 21879b7f Giorgos Korfiatis
        'endpoints': [
87 21879b7f Giorgos Korfiatis
            {'versionId': 'v2.0',
88 21879b7f Giorgos Korfiatis
             'publicURL': None},
89 21879b7f Giorgos Korfiatis
        ],
90 21879b7f Giorgos Korfiatis
        'resources': {
91 21879b7f Giorgos Korfiatis
            'vm': {
92 21879b7f Giorgos Korfiatis
                "name": "cyclades.vm",
93 21879b7f Giorgos Korfiatis
                "desc": "Number of virtual machines",
94 21879b7f Giorgos Korfiatis
                "service_type": "compute",
95 21879b7f Giorgos Korfiatis
                "service_origin": "cyclades_compute",
96 21879b7f Giorgos Korfiatis
            },
97 5083fc47 Christos Stavrakakis
            'total_cpu': {
98 5083fc47 Christos Stavrakakis
                "name": "cyclades.total_cpu",
99 21879b7f Giorgos Korfiatis
                "desc": "Number of virtual machine processors",
100 21879b7f Giorgos Korfiatis
                "service_type": "compute",
101 21879b7f Giorgos Korfiatis
                "service_origin": "cyclades_compute",
102 2dc27ac1 Giorgos Korfiatis
                "ui_visible": False,
103 2dc27ac1 Giorgos Korfiatis
                "api_visible": False,
104 21879b7f Giorgos Korfiatis
            },
105 5083fc47 Christos Stavrakakis
            'cpu': {
106 5083fc47 Christos Stavrakakis
                "name": "cyclades.cpu",
107 5febd1fa Giorgos Korfiatis
                "desc": "Number of virtual machine processors of running"
108 5febd1fa Giorgos Korfiatis
                        " servers",
109 5febd1fa Giorgos Korfiatis
                "service_type": "compute",
110 5febd1fa Giorgos Korfiatis
                "service_origin": "cyclades_compute",
111 5febd1fa Giorgos Korfiatis
            },
112 5083fc47 Christos Stavrakakis
            'total_ram': {
113 5083fc47 Christos Stavrakakis
                "name": "cyclades.total_ram",
114 21879b7f Giorgos Korfiatis
                "desc": "Virtual machine memory size",
115 21879b7f Giorgos Korfiatis
                "unit": "bytes",
116 21879b7f Giorgos Korfiatis
                "service_type": "compute",
117 21879b7f Giorgos Korfiatis
                "service_origin": "cyclades_compute",
118 2dc27ac1 Giorgos Korfiatis
                "ui_visible": False,
119 2dc27ac1 Giorgos Korfiatis
                "api_visible": False,
120 21879b7f Giorgos Korfiatis
            },
121 5083fc47 Christos Stavrakakis
            'ram': {
122 5083fc47 Christos Stavrakakis
                "name": "cyclades.ram",
123 5febd1fa Giorgos Korfiatis
                "desc": "Virtual machine memory size of running servers",
124 5febd1fa Giorgos Korfiatis
                "unit": "bytes",
125 5febd1fa Giorgos Korfiatis
                "service_type": "compute",
126 5febd1fa Giorgos Korfiatis
                "service_origin": "cyclades_compute",
127 5febd1fa Giorgos Korfiatis
            },
128 21879b7f Giorgos Korfiatis
            'disk': {
129 21879b7f Giorgos Korfiatis
                "name": "cyclades.disk",
130 21879b7f Giorgos Korfiatis
                "desc": "Virtual machine disk size",
131 21879b7f Giorgos Korfiatis
                "unit": "bytes",
132 21879b7f Giorgos Korfiatis
                "service_type": "compute",
133 21879b7f Giorgos Korfiatis
                "service_origin": "cyclades_compute",
134 21879b7f Giorgos Korfiatis
            },
135 21879b7f Giorgos Korfiatis
        },
136 21879b7f Giorgos Korfiatis
    },
137 21879b7f Giorgos Korfiatis
138 21879b7f Giorgos Korfiatis
    'cyclades_plankton': {
139 21879b7f Giorgos Korfiatis
        'type': 'image',
140 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
141 21879b7f Giorgos Korfiatis
        'prefix': 'image',
142 21879b7f Giorgos Korfiatis
        'public': True,
143 21879b7f Giorgos Korfiatis
        'endpoints': [
144 21879b7f Giorgos Korfiatis
            {'versionId': 'v1.0',
145 21879b7f Giorgos Korfiatis
             'publicURL': None},
146 21879b7f Giorgos Korfiatis
        ],
147 21879b7f Giorgos Korfiatis
        'resources': {},
148 21879b7f Giorgos Korfiatis
    },
149 21879b7f Giorgos Korfiatis
150 0b315fc9 Giorgos Korfiatis
    'cyclades_network': {
151 0b315fc9 Giorgos Korfiatis
        'type': 'network',
152 0b315fc9 Giorgos Korfiatis
        'component': 'cyclades',
153 0b315fc9 Giorgos Korfiatis
        'prefix': 'network',
154 0b315fc9 Giorgos Korfiatis
        'public': True,
155 0b315fc9 Giorgos Korfiatis
        'endpoints': [
156 0b315fc9 Giorgos Korfiatis
            {'versionId': 'v2.0',
157 0b315fc9 Giorgos Korfiatis
             'publicURL': None},
158 0b315fc9 Giorgos Korfiatis
        ],
159 0b315fc9 Giorgos Korfiatis
        'resources': {
160 0b315fc9 Giorgos Korfiatis
            'network-private': {
161 0b315fc9 Giorgos Korfiatis
                "name": "cyclades.network.private",
162 0b315fc9 Giorgos Korfiatis
                "desc": "Number of private networks",
163 0b315fc9 Giorgos Korfiatis
                "service_type": "network",
164 0b315fc9 Giorgos Korfiatis
                "service_origin": "cyclades_network",
165 0b315fc9 Giorgos Korfiatis
            },
166 0b315fc9 Giorgos Korfiatis
            'floating_ip': {
167 0b315fc9 Giorgos Korfiatis
                "name": "cyclades.floating_ip",
168 0b315fc9 Giorgos Korfiatis
                "desc": "Number of Floating IP addresses",
169 0b315fc9 Giorgos Korfiatis
                "service_type": "network",
170 0b315fc9 Giorgos Korfiatis
                "service_origin": "cyclades_network",
171 0b315fc9 Giorgos Korfiatis
            },
172 0b315fc9 Giorgos Korfiatis
        },
173 0b315fc9 Giorgos Korfiatis
    },
174 0b315fc9 Giorgos Korfiatis
175 21879b7f Giorgos Korfiatis
    'cyclades_vmapi': {
176 5febd1fa Giorgos Korfiatis
        'type': 'vmapi',
177 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
178 21879b7f Giorgos Korfiatis
        'prefix': 'vmapi',
179 21879b7f Giorgos Korfiatis
        'public': True,
180 21879b7f Giorgos Korfiatis
        'endpoints': [
181 21879b7f Giorgos Korfiatis
            {'versionId': 'v1.0',
182 21879b7f Giorgos Korfiatis
             'publicURL': None},
183 21879b7f Giorgos Korfiatis
        ],
184 21879b7f Giorgos Korfiatis
        'resources': {},
185 21879b7f Giorgos Korfiatis
    },
186 21879b7f Giorgos Korfiatis
187 21879b7f Giorgos Korfiatis
    'cyclades_helpdesk': {
188 21879b7f Giorgos Korfiatis
        'type': 'cyclades_helpdesk',
189 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
190 21879b7f Giorgos Korfiatis
        'prefix': 'helpdesk',
191 21879b7f Giorgos Korfiatis
        'public': False,
192 21879b7f Giorgos Korfiatis
        'endpoints': [
193 21879b7f Giorgos Korfiatis
            {'versionId': '',
194 21879b7f Giorgos Korfiatis
             'publicURL': None},
195 21879b7f Giorgos Korfiatis
        ],
196 21879b7f Giorgos Korfiatis
    },
197 21879b7f Giorgos Korfiatis
198 21879b7f Giorgos Korfiatis
    'cyclades_userdata': {
199 21879b7f Giorgos Korfiatis
        'type': 'cyclades_userdata',
200 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
201 21879b7f Giorgos Korfiatis
        'prefix': 'userdata',
202 21879b7f Giorgos Korfiatis
        'public': False,
203 21879b7f Giorgos Korfiatis
        'endpoints': [
204 21879b7f Giorgos Korfiatis
            {'versionId': '',
205 21879b7f Giorgos Korfiatis
             'publicURL': None},
206 21879b7f Giorgos Korfiatis
        ],
207 21879b7f Giorgos Korfiatis
        'resources': {},
208 21879b7f Giorgos Korfiatis
    },
209 21879b7f Giorgos Korfiatis
210 21879b7f Giorgos Korfiatis
    'cyclades_ui': {
211 21879b7f Giorgos Korfiatis
        'type': 'cyclades_ui',
212 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
213 21879b7f Giorgos Korfiatis
        'prefix': 'ui',
214 21879b7f Giorgos Korfiatis
        'public': False,
215 21879b7f Giorgos Korfiatis
        'endpoints': [
216 21879b7f Giorgos Korfiatis
            {'versionId': '',
217 21879b7f Giorgos Korfiatis
             'publicURL': None},
218 21879b7f Giorgos Korfiatis
        ],
219 21879b7f Giorgos Korfiatis
        'resources': {},
220 21879b7f Giorgos Korfiatis
    },
221 5febd1fa Giorgos Korfiatis
222 5febd1fa Giorgos Korfiatis
    'cyclades_admin': {
223 5febd1fa Giorgos Korfiatis
        'type': 'admin',
224 5febd1fa Giorgos Korfiatis
        'component': 'cyclades',
225 5febd1fa Giorgos Korfiatis
        'prefix': 'admin',
226 5febd1fa Giorgos Korfiatis
        'public': True,
227 5febd1fa Giorgos Korfiatis
        'endpoints': [
228 5febd1fa Giorgos Korfiatis
            {'versionId': '',
229 5febd1fa Giorgos Korfiatis
             'publicURL': None},
230 5febd1fa Giorgos Korfiatis
        ],
231 5febd1fa Giorgos Korfiatis
        'resources': {},
232 5febd1fa Giorgos Korfiatis
    },
233 21879b7f Giorgos Korfiatis
}
234 21879b7f Giorgos Korfiatis
235 21879b7f Giorgos Korfiatis
pithos_services = {
236 21879b7f Giorgos Korfiatis
    'pithos_object-store': {
237 21879b7f Giorgos Korfiatis
        'type': 'object-store',
238 21879b7f Giorgos Korfiatis
        'component': 'pithos',
239 21879b7f Giorgos Korfiatis
        'prefix': 'object-store',
240 21879b7f Giorgos Korfiatis
        'public': True,
241 21879b7f Giorgos Korfiatis
        'endpoints': [
242 21879b7f Giorgos Korfiatis
            {'versionId': 'v1',
243 21879b7f Giorgos Korfiatis
             'publicURL': None},
244 21879b7f Giorgos Korfiatis
        ],
245 21879b7f Giorgos Korfiatis
        'resources': {
246 21879b7f Giorgos Korfiatis
            'diskspace': {
247 21879b7f Giorgos Korfiatis
                "desc": "Pithos account diskspace",
248 21879b7f Giorgos Korfiatis
                "name": "pithos.diskspace",
249 21879b7f Giorgos Korfiatis
                "unit": "bytes",
250 21879b7f Giorgos Korfiatis
                "service_type": "object-store",
251 21879b7f Giorgos Korfiatis
                "service_origin": "pithos_object-store",
252 21879b7f Giorgos Korfiatis
            },
253 21879b7f Giorgos Korfiatis
        },
254 21879b7f Giorgos Korfiatis
    },
255 21879b7f Giorgos Korfiatis
256 21879b7f Giorgos Korfiatis
    'pithos_public': {
257 759b8a43 Giorgos Korfiatis
        'type': 'pithos_public',
258 21879b7f Giorgos Korfiatis
        'component': 'pithos',
259 db4761e6 Giorgos Korfiatis
        'prefix': 'public',
260 a08f9369 Giorgos Korfiatis
        'public': False,
261 21879b7f Giorgos Korfiatis
        'endpoints': [
262 759b8a43 Giorgos Korfiatis
            {'versionId': '',
263 21879b7f Giorgos Korfiatis
             'publicURL': None},
264 21879b7f Giorgos Korfiatis
        ],
265 21879b7f Giorgos Korfiatis
        'resources': {},
266 21879b7f Giorgos Korfiatis
    },
267 21879b7f Giorgos Korfiatis
268 21879b7f Giorgos Korfiatis
    'pithos_ui': {
269 21879b7f Giorgos Korfiatis
        'type': 'pithos_ui',
270 21879b7f Giorgos Korfiatis
        'component': 'pithos',
271 21879b7f Giorgos Korfiatis
        'prefix': 'ui',
272 21879b7f Giorgos Korfiatis
        'public': False,
273 21879b7f Giorgos Korfiatis
        'endpoints': [
274 21879b7f Giorgos Korfiatis
            {'versionId': '',
275 21879b7f Giorgos Korfiatis
             'publicURL': None},
276 21879b7f Giorgos Korfiatis
        ],
277 21879b7f Giorgos Korfiatis
        'resources': {},
278 21879b7f Giorgos Korfiatis
    },
279 21879b7f Giorgos Korfiatis
}
280 21879b7f Giorgos Korfiatis
281 21879b7f Giorgos Korfiatis
282 21879b7f Giorgos Korfiatis
definitions = {
283 21879b7f Giorgos Korfiatis
    'astakos': astakos_services,
284 21879b7f Giorgos Korfiatis
    'cyclades': cyclades_services,
285 21879b7f Giorgos Korfiatis
    'pithos': pithos_services,
286 21879b7f Giorgos Korfiatis
}
287 21879b7f Giorgos Korfiatis
288 21879b7f Giorgos Korfiatis
289 21879b7f Giorgos Korfiatis
def print_definitions(d, base_url):
290 21879b7f Giorgos Korfiatis
    fill_endpoints(d, base_url)
291 21879b7f Giorgos Korfiatis
    print json.dumps(filter_public(d), indent=4)
292 21879b7f Giorgos Korfiatis
293 21879b7f Giorgos Korfiatis
294 21879b7f Giorgos Korfiatis
usage = "usage: %prog <component_name> <base_url>"
295 21879b7f Giorgos Korfiatis
parser = OptionParser(usage=usage)
296 21879b7f Giorgos Korfiatis
297 21879b7f Giorgos Korfiatis
298 21879b7f Giorgos Korfiatis
def main():
299 21879b7f Giorgos Korfiatis
    (options, args) = parser.parse_args()
300 21879b7f Giorgos Korfiatis
    if len(args) != 2:
301 21879b7f Giorgos Korfiatis
        parser.error("Wrong number of arguments.")
302 21879b7f Giorgos Korfiatis
    component = args[0]
303 21879b7f Giorgos Korfiatis
    try:
304 21879b7f Giorgos Korfiatis
        services = definitions[component]
305 21879b7f Giorgos Korfiatis
    except KeyError:
306 21879b7f Giorgos Korfiatis
        print "Unrecognized component %s" % component
307 21879b7f Giorgos Korfiatis
        exit(1)
308 21879b7f Giorgos Korfiatis
    base_url = args[1]
309 21879b7f Giorgos Korfiatis
    print_definitions(services, base_url)
310 21879b7f Giorgos Korfiatis
311 21879b7f Giorgos Korfiatis
if __name__ == '__main__':
312 21879b7f Giorgos Korfiatis
    main()