Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (7.9 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 21879b7f Giorgos Korfiatis
    },
73 21879b7f Giorgos Korfiatis
}
74 21879b7f Giorgos Korfiatis
75 21879b7f Giorgos Korfiatis
cyclades_services = {
76 21879b7f Giorgos Korfiatis
    'cyclades_compute': {
77 21879b7f Giorgos Korfiatis
        'type': 'compute',
78 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
79 21879b7f Giorgos Korfiatis
        'prefix': 'compute',
80 21879b7f Giorgos Korfiatis
        'public': True,
81 21879b7f Giorgos Korfiatis
        'endpoints': [
82 21879b7f Giorgos Korfiatis
            {'versionId': 'v2.0',
83 21879b7f Giorgos Korfiatis
             'publicURL': None},
84 21879b7f Giorgos Korfiatis
        ],
85 21879b7f Giorgos Korfiatis
        'resources': {
86 21879b7f Giorgos Korfiatis
            'vm': {
87 21879b7f Giorgos Korfiatis
                "name": "cyclades.vm",
88 21879b7f Giorgos Korfiatis
                "desc": "Number of virtual machines",
89 21879b7f Giorgos Korfiatis
                "service_type": "compute",
90 21879b7f Giorgos Korfiatis
                "service_origin": "cyclades_compute",
91 21879b7f Giorgos Korfiatis
            },
92 5083fc47 Christos Stavrakakis
            'total_cpu': {
93 5083fc47 Christos Stavrakakis
                "name": "cyclades.total_cpu",
94 21879b7f Giorgos Korfiatis
                "desc": "Number of virtual machine processors",
95 21879b7f Giorgos Korfiatis
                "service_type": "compute",
96 21879b7f Giorgos Korfiatis
                "service_origin": "cyclades_compute",
97 2dc27ac1 Giorgos Korfiatis
                "ui_visible": False,
98 2dc27ac1 Giorgos Korfiatis
                "api_visible": False,
99 21879b7f Giorgos Korfiatis
            },
100 5083fc47 Christos Stavrakakis
            'cpu': {
101 5083fc47 Christos Stavrakakis
                "name": "cyclades.cpu",
102 5febd1fa Giorgos Korfiatis
                "desc": "Number of virtual machine processors of running"
103 5febd1fa Giorgos Korfiatis
                        " servers",
104 5febd1fa Giorgos Korfiatis
                "service_type": "compute",
105 5febd1fa Giorgos Korfiatis
                "service_origin": "cyclades_compute",
106 5febd1fa Giorgos Korfiatis
            },
107 5083fc47 Christos Stavrakakis
            'total_ram': {
108 5083fc47 Christos Stavrakakis
                "name": "cyclades.total_ram",
109 21879b7f Giorgos Korfiatis
                "desc": "Virtual machine memory size",
110 21879b7f Giorgos Korfiatis
                "unit": "bytes",
111 21879b7f Giorgos Korfiatis
                "service_type": "compute",
112 21879b7f Giorgos Korfiatis
                "service_origin": "cyclades_compute",
113 2dc27ac1 Giorgos Korfiatis
                "ui_visible": False,
114 2dc27ac1 Giorgos Korfiatis
                "api_visible": False,
115 21879b7f Giorgos Korfiatis
            },
116 5083fc47 Christos Stavrakakis
            'ram': {
117 5083fc47 Christos Stavrakakis
                "name": "cyclades.ram",
118 5febd1fa Giorgos Korfiatis
                "desc": "Virtual machine memory size of running servers",
119 5febd1fa Giorgos Korfiatis
                "unit": "bytes",
120 5febd1fa Giorgos Korfiatis
                "service_type": "compute",
121 5febd1fa Giorgos Korfiatis
                "service_origin": "cyclades_compute",
122 5febd1fa Giorgos Korfiatis
            },
123 21879b7f Giorgos Korfiatis
            'disk': {
124 21879b7f Giorgos Korfiatis
                "name": "cyclades.disk",
125 21879b7f Giorgos Korfiatis
                "desc": "Virtual machine disk size",
126 21879b7f Giorgos Korfiatis
                "unit": "bytes",
127 21879b7f Giorgos Korfiatis
                "service_type": "compute",
128 21879b7f Giorgos Korfiatis
                "service_origin": "cyclades_compute",
129 21879b7f Giorgos Korfiatis
            },
130 21879b7f Giorgos Korfiatis
        },
131 21879b7f Giorgos Korfiatis
    },
132 21879b7f Giorgos Korfiatis
133 21879b7f Giorgos Korfiatis
    'cyclades_plankton': {
134 21879b7f Giorgos Korfiatis
        'type': 'image',
135 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
136 21879b7f Giorgos Korfiatis
        'prefix': 'image',
137 21879b7f Giorgos Korfiatis
        'public': True,
138 21879b7f Giorgos Korfiatis
        'endpoints': [
139 21879b7f Giorgos Korfiatis
            {'versionId': 'v1.0',
140 21879b7f Giorgos Korfiatis
             'publicURL': None},
141 21879b7f Giorgos Korfiatis
        ],
142 21879b7f Giorgos Korfiatis
        'resources': {},
143 21879b7f Giorgos Korfiatis
    },
144 21879b7f Giorgos Korfiatis
145 0b315fc9 Giorgos Korfiatis
    'cyclades_network': {
146 0b315fc9 Giorgos Korfiatis
        'type': 'network',
147 0b315fc9 Giorgos Korfiatis
        'component': 'cyclades',
148 0b315fc9 Giorgos Korfiatis
        'prefix': 'network',
149 0b315fc9 Giorgos Korfiatis
        'public': True,
150 0b315fc9 Giorgos Korfiatis
        'endpoints': [
151 0b315fc9 Giorgos Korfiatis
            {'versionId': 'v2.0',
152 0b315fc9 Giorgos Korfiatis
             'publicURL': None},
153 0b315fc9 Giorgos Korfiatis
        ],
154 0b315fc9 Giorgos Korfiatis
        'resources': {
155 0b315fc9 Giorgos Korfiatis
            'network-private': {
156 0b315fc9 Giorgos Korfiatis
                "name": "cyclades.network.private",
157 0b315fc9 Giorgos Korfiatis
                "desc": "Number of private networks",
158 0b315fc9 Giorgos Korfiatis
                "service_type": "network",
159 0b315fc9 Giorgos Korfiatis
                "service_origin": "cyclades_network",
160 0b315fc9 Giorgos Korfiatis
            },
161 0b315fc9 Giorgos Korfiatis
            'floating_ip': {
162 0b315fc9 Giorgos Korfiatis
                "name": "cyclades.floating_ip",
163 0b315fc9 Giorgos Korfiatis
                "desc": "Number of Floating IP addresses",
164 0b315fc9 Giorgos Korfiatis
                "service_type": "network",
165 0b315fc9 Giorgos Korfiatis
                "service_origin": "cyclades_network",
166 0b315fc9 Giorgos Korfiatis
            },
167 0b315fc9 Giorgos Korfiatis
        },
168 0b315fc9 Giorgos Korfiatis
    },
169 0b315fc9 Giorgos Korfiatis
170 21879b7f Giorgos Korfiatis
    'cyclades_vmapi': {
171 5febd1fa Giorgos Korfiatis
        'type': 'vmapi',
172 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
173 21879b7f Giorgos Korfiatis
        'prefix': 'vmapi',
174 21879b7f Giorgos Korfiatis
        'public': True,
175 21879b7f Giorgos Korfiatis
        'endpoints': [
176 21879b7f Giorgos Korfiatis
            {'versionId': 'v1.0',
177 21879b7f Giorgos Korfiatis
             'publicURL': None},
178 21879b7f Giorgos Korfiatis
        ],
179 21879b7f Giorgos Korfiatis
        'resources': {},
180 21879b7f Giorgos Korfiatis
    },
181 21879b7f Giorgos Korfiatis
182 21879b7f Giorgos Korfiatis
    'cyclades_helpdesk': {
183 21879b7f Giorgos Korfiatis
        'type': 'cyclades_helpdesk',
184 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
185 21879b7f Giorgos Korfiatis
        'prefix': 'helpdesk',
186 21879b7f Giorgos Korfiatis
        'public': False,
187 21879b7f Giorgos Korfiatis
        'endpoints': [
188 21879b7f Giorgos Korfiatis
            {'versionId': '',
189 21879b7f Giorgos Korfiatis
             'publicURL': None},
190 21879b7f Giorgos Korfiatis
        ],
191 21879b7f Giorgos Korfiatis
    },
192 21879b7f Giorgos Korfiatis
193 21879b7f Giorgos Korfiatis
    'cyclades_userdata': {
194 21879b7f Giorgos Korfiatis
        'type': 'cyclades_userdata',
195 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
196 21879b7f Giorgos Korfiatis
        'prefix': 'userdata',
197 21879b7f Giorgos Korfiatis
        'public': False,
198 21879b7f Giorgos Korfiatis
        'endpoints': [
199 21879b7f Giorgos Korfiatis
            {'versionId': '',
200 21879b7f Giorgos Korfiatis
             'publicURL': None},
201 21879b7f Giorgos Korfiatis
        ],
202 21879b7f Giorgos Korfiatis
        'resources': {},
203 21879b7f Giorgos Korfiatis
    },
204 21879b7f Giorgos Korfiatis
205 21879b7f Giorgos Korfiatis
    'cyclades_ui': {
206 21879b7f Giorgos Korfiatis
        'type': 'cyclades_ui',
207 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
208 21879b7f Giorgos Korfiatis
        'prefix': 'ui',
209 21879b7f Giorgos Korfiatis
        'public': False,
210 21879b7f Giorgos Korfiatis
        'endpoints': [
211 21879b7f Giorgos Korfiatis
            {'versionId': '',
212 21879b7f Giorgos Korfiatis
             'publicURL': None},
213 21879b7f Giorgos Korfiatis
        ],
214 21879b7f Giorgos Korfiatis
        'resources': {},
215 21879b7f Giorgos Korfiatis
    },
216 5febd1fa Giorgos Korfiatis
217 5febd1fa Giorgos Korfiatis
    'cyclades_admin': {
218 5febd1fa Giorgos Korfiatis
        'type': 'admin',
219 5febd1fa Giorgos Korfiatis
        'component': 'cyclades',
220 5febd1fa Giorgos Korfiatis
        'prefix': 'admin',
221 5febd1fa Giorgos Korfiatis
        'public': True,
222 5febd1fa Giorgos Korfiatis
        'endpoints': [
223 5febd1fa Giorgos Korfiatis
            {'versionId': '',
224 5febd1fa Giorgos Korfiatis
             'publicURL': None},
225 5febd1fa Giorgos Korfiatis
        ],
226 5febd1fa Giorgos Korfiatis
        'resources': {},
227 5febd1fa Giorgos Korfiatis
    },
228 21879b7f Giorgos Korfiatis
}
229 21879b7f Giorgos Korfiatis
230 21879b7f Giorgos Korfiatis
pithos_services = {
231 21879b7f Giorgos Korfiatis
    'pithos_object-store': {
232 21879b7f Giorgos Korfiatis
        'type': 'object-store',
233 21879b7f Giorgos Korfiatis
        'component': 'pithos',
234 21879b7f Giorgos Korfiatis
        'prefix': 'object-store',
235 21879b7f Giorgos Korfiatis
        'public': True,
236 21879b7f Giorgos Korfiatis
        'endpoints': [
237 21879b7f Giorgos Korfiatis
            {'versionId': 'v1',
238 21879b7f Giorgos Korfiatis
             'publicURL': None},
239 21879b7f Giorgos Korfiatis
        ],
240 21879b7f Giorgos Korfiatis
        'resources': {
241 21879b7f Giorgos Korfiatis
            'diskspace': {
242 21879b7f Giorgos Korfiatis
                "desc": "Pithos account diskspace",
243 21879b7f Giorgos Korfiatis
                "name": "pithos.diskspace",
244 21879b7f Giorgos Korfiatis
                "unit": "bytes",
245 21879b7f Giorgos Korfiatis
                "service_type": "object-store",
246 21879b7f Giorgos Korfiatis
                "service_origin": "pithos_object-store",
247 21879b7f Giorgos Korfiatis
            },
248 21879b7f Giorgos Korfiatis
        },
249 21879b7f Giorgos Korfiatis
    },
250 21879b7f Giorgos Korfiatis
251 21879b7f Giorgos Korfiatis
    'pithos_public': {
252 759b8a43 Giorgos Korfiatis
        'type': 'pithos_public',
253 21879b7f Giorgos Korfiatis
        'component': 'pithos',
254 db4761e6 Giorgos Korfiatis
        'prefix': 'public',
255 a08f9369 Giorgos Korfiatis
        'public': False,
256 21879b7f Giorgos Korfiatis
        'endpoints': [
257 759b8a43 Giorgos Korfiatis
            {'versionId': '',
258 21879b7f Giorgos Korfiatis
             'publicURL': None},
259 21879b7f Giorgos Korfiatis
        ],
260 21879b7f Giorgos Korfiatis
        'resources': {},
261 21879b7f Giorgos Korfiatis
    },
262 21879b7f Giorgos Korfiatis
263 21879b7f Giorgos Korfiatis
    'pithos_ui': {
264 21879b7f Giorgos Korfiatis
        'type': 'pithos_ui',
265 21879b7f Giorgos Korfiatis
        'component': 'pithos',
266 21879b7f Giorgos Korfiatis
        'prefix': 'ui',
267 21879b7f Giorgos Korfiatis
        'public': False,
268 21879b7f Giorgos Korfiatis
        'endpoints': [
269 21879b7f Giorgos Korfiatis
            {'versionId': '',
270 21879b7f Giorgos Korfiatis
             'publicURL': None},
271 21879b7f Giorgos Korfiatis
        ],
272 21879b7f Giorgos Korfiatis
        'resources': {},
273 21879b7f Giorgos Korfiatis
    },
274 21879b7f Giorgos Korfiatis
}
275 21879b7f Giorgos Korfiatis
276 21879b7f Giorgos Korfiatis
277 21879b7f Giorgos Korfiatis
definitions = {
278 21879b7f Giorgos Korfiatis
    'astakos': astakos_services,
279 21879b7f Giorgos Korfiatis
    'cyclades': cyclades_services,
280 21879b7f Giorgos Korfiatis
    'pithos': pithos_services,
281 21879b7f Giorgos Korfiatis
}
282 21879b7f Giorgos Korfiatis
283 21879b7f Giorgos Korfiatis
284 21879b7f Giorgos Korfiatis
def print_definitions(d, base_url):
285 21879b7f Giorgos Korfiatis
    fill_endpoints(d, base_url)
286 21879b7f Giorgos Korfiatis
    print json.dumps(filter_public(d), indent=4)
287 21879b7f Giorgos Korfiatis
288 21879b7f Giorgos Korfiatis
289 21879b7f Giorgos Korfiatis
usage = "usage: %prog <component_name> <base_url>"
290 21879b7f Giorgos Korfiatis
parser = OptionParser(usage=usage)
291 21879b7f Giorgos Korfiatis
292 21879b7f Giorgos Korfiatis
293 21879b7f Giorgos Korfiatis
def main():
294 21879b7f Giorgos Korfiatis
    (options, args) = parser.parse_args()
295 21879b7f Giorgos Korfiatis
    if len(args) != 2:
296 21879b7f Giorgos Korfiatis
        parser.error("Wrong number of arguments.")
297 21879b7f Giorgos Korfiatis
    component = args[0]
298 21879b7f Giorgos Korfiatis
    try:
299 21879b7f Giorgos Korfiatis
        services = definitions[component]
300 21879b7f Giorgos Korfiatis
    except KeyError:
301 21879b7f Giorgos Korfiatis
        print "Unrecognized component %s" % component
302 21879b7f Giorgos Korfiatis
        exit(1)
303 21879b7f Giorgos Korfiatis
    base_url = args[1]
304 21879b7f Giorgos Korfiatis
    print_definitions(services, base_url)
305 21879b7f Giorgos Korfiatis
306 21879b7f Giorgos Korfiatis
if __name__ == '__main__':
307 21879b7f Giorgos Korfiatis
    main()