Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / scripts / snf_service_export.py @ 759b8a43

History | View | Annotate | Download (6.4 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 21879b7f Giorgos Korfiatis
                'allow_in_projects': False},
25 21879b7f Giorgos Korfiatis
        },
26 21879b7f Giorgos Korfiatis
    },
27 21879b7f Giorgos Korfiatis
28 923e6582 Georgios D. Tsoukalas
    'astakos_identity': {
29 21879b7f Giorgos Korfiatis
        'type': 'identity',
30 21879b7f Giorgos Korfiatis
        'component': 'astakos',
31 21879b7f Giorgos Korfiatis
        'prefix': 'identity',
32 21879b7f Giorgos Korfiatis
        'public': True,
33 21879b7f Giorgos Korfiatis
        'endpoints': [
34 21879b7f Giorgos Korfiatis
            {'versionId': 'v2.0',
35 21879b7f Giorgos Korfiatis
             'publicURL': None},
36 21879b7f Giorgos Korfiatis
        ],
37 21879b7f Giorgos Korfiatis
        'resources': {},
38 21879b7f Giorgos Korfiatis
    },
39 21879b7f Giorgos Korfiatis
40 559f8135 Giorgos Korfiatis
    'astakos_weblogin': {
41 559f8135 Giorgos Korfiatis
        'type': 'astakos_weblogin',
42 559f8135 Giorgos Korfiatis
        'component': 'astakos',
43 559f8135 Giorgos Korfiatis
        'prefix': 'weblogin',
44 559f8135 Giorgos Korfiatis
        'public': True,
45 559f8135 Giorgos Korfiatis
        'endpoints': [
46 559f8135 Giorgos Korfiatis
            {'versionId': '',
47 559f8135 Giorgos Korfiatis
             'publicURL': None},
48 559f8135 Giorgos Korfiatis
        ],
49 559f8135 Giorgos Korfiatis
    },
50 559f8135 Giorgos Korfiatis
51 21879b7f Giorgos Korfiatis
    'astakos_ui': {
52 21879b7f Giorgos Korfiatis
        'type': 'astakos_ui',
53 21879b7f Giorgos Korfiatis
        'component': 'astakos',
54 21879b7f Giorgos Korfiatis
        'prefix': 'ui',
55 21879b7f Giorgos Korfiatis
        'public': False,
56 21879b7f Giorgos Korfiatis
        'endpoints': [
57 21879b7f Giorgos Korfiatis
            {'versionId': '',
58 21879b7f Giorgos Korfiatis
             'publicURL': None},
59 21879b7f Giorgos Korfiatis
        ],
60 21879b7f Giorgos Korfiatis
    },
61 21879b7f Giorgos Korfiatis
}
62 21879b7f Giorgos Korfiatis
63 21879b7f Giorgos Korfiatis
cyclades_services = {
64 21879b7f Giorgos Korfiatis
    'cyclades_compute': {
65 21879b7f Giorgos Korfiatis
        'type': 'compute',
66 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
67 21879b7f Giorgos Korfiatis
        'prefix': 'compute',
68 21879b7f Giorgos Korfiatis
        'public': True,
69 21879b7f Giorgos Korfiatis
        'endpoints': [
70 21879b7f Giorgos Korfiatis
            {'versionId': 'v2.0',
71 21879b7f Giorgos Korfiatis
             'publicURL': None},
72 21879b7f Giorgos Korfiatis
        ],
73 21879b7f Giorgos Korfiatis
        'resources': {
74 21879b7f Giorgos Korfiatis
            'vm': {
75 21879b7f Giorgos Korfiatis
                "name": "cyclades.vm",
76 21879b7f Giorgos Korfiatis
                "desc": "Number of virtual machines",
77 21879b7f Giorgos Korfiatis
                "service_type": "compute",
78 21879b7f Giorgos Korfiatis
                "service_origin": "cyclades_compute",
79 21879b7f Giorgos Korfiatis
            },
80 21879b7f Giorgos Korfiatis
            'cpu': {
81 21879b7f Giorgos Korfiatis
                "name": "cyclades.cpu",
82 21879b7f Giorgos Korfiatis
                "desc": "Number of virtual machine processors",
83 21879b7f Giorgos Korfiatis
                "service_type": "compute",
84 21879b7f Giorgos Korfiatis
                "service_origin": "cyclades_compute",
85 21879b7f Giorgos Korfiatis
            },
86 21879b7f Giorgos Korfiatis
            'ram': {
87 21879b7f Giorgos Korfiatis
                "name": "cyclades.ram",
88 21879b7f Giorgos Korfiatis
                "desc": "Virtual machine memory size",
89 21879b7f Giorgos Korfiatis
                "unit": "bytes",
90 21879b7f Giorgos Korfiatis
                "service_type": "compute",
91 21879b7f Giorgos Korfiatis
                "service_origin": "cyclades_compute",
92 21879b7f Giorgos Korfiatis
            },
93 21879b7f Giorgos Korfiatis
            'disk': {
94 21879b7f Giorgos Korfiatis
                "name": "cyclades.disk",
95 21879b7f Giorgos Korfiatis
                "desc": "Virtual machine disk size",
96 21879b7f Giorgos Korfiatis
                "unit": "bytes",
97 21879b7f Giorgos Korfiatis
                "service_type": "compute",
98 21879b7f Giorgos Korfiatis
                "service_origin": "cyclades_compute",
99 21879b7f Giorgos Korfiatis
            },
100 21879b7f Giorgos Korfiatis
            'network-private': {
101 21879b7f Giorgos Korfiatis
                "name": "cyclades.network.private",
102 21879b7f Giorgos Korfiatis
                "desc": "Number of private networks",
103 21879b7f Giorgos Korfiatis
                "service_type": "compute",
104 21879b7f Giorgos Korfiatis
                "service_origin": "cyclades_compute",
105 21879b7f Giorgos Korfiatis
            },
106 21879b7f Giorgos Korfiatis
        },
107 21879b7f Giorgos Korfiatis
    },
108 21879b7f Giorgos Korfiatis
109 21879b7f Giorgos Korfiatis
    'cyclades_plankton': {
110 21879b7f Giorgos Korfiatis
        'type': 'image',
111 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
112 21879b7f Giorgos Korfiatis
        'prefix': 'image',
113 21879b7f Giorgos Korfiatis
        'public': True,
114 21879b7f Giorgos Korfiatis
        'endpoints': [
115 21879b7f Giorgos Korfiatis
            {'versionId': 'v1.0',
116 21879b7f Giorgos Korfiatis
             'publicURL': None},
117 21879b7f Giorgos Korfiatis
        ],
118 21879b7f Giorgos Korfiatis
        'resources': {},
119 21879b7f Giorgos Korfiatis
    },
120 21879b7f Giorgos Korfiatis
121 21879b7f Giorgos Korfiatis
    'cyclades_vmapi': {
122 5718706f Giorgos Korfiatis
        'type': 'vmapi',
123 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
124 21879b7f Giorgos Korfiatis
        'prefix': 'vmapi',
125 21879b7f Giorgos Korfiatis
        'public': True,
126 21879b7f Giorgos Korfiatis
        'endpoints': [
127 21879b7f Giorgos Korfiatis
            {'versionId': 'v1.0',
128 21879b7f Giorgos Korfiatis
             'publicURL': None},
129 21879b7f Giorgos Korfiatis
        ],
130 21879b7f Giorgos Korfiatis
        'resources': {},
131 21879b7f Giorgos Korfiatis
    },
132 21879b7f Giorgos Korfiatis
133 21879b7f Giorgos Korfiatis
    'cyclades_helpdesk': {
134 21879b7f Giorgos Korfiatis
        'type': 'cyclades_helpdesk',
135 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
136 21879b7f Giorgos Korfiatis
        'prefix': 'helpdesk',
137 21879b7f Giorgos Korfiatis
        'public': False,
138 21879b7f Giorgos Korfiatis
        'endpoints': [
139 21879b7f Giorgos Korfiatis
            {'versionId': '',
140 21879b7f Giorgos Korfiatis
             'publicURL': None},
141 21879b7f Giorgos Korfiatis
        ],
142 21879b7f Giorgos Korfiatis
    },
143 21879b7f Giorgos Korfiatis
144 21879b7f Giorgos Korfiatis
    'cyclades_userdata': {
145 21879b7f Giorgos Korfiatis
        'type': 'cyclades_userdata',
146 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
147 21879b7f Giorgos Korfiatis
        'prefix': 'userdata',
148 21879b7f Giorgos Korfiatis
        'public': False,
149 21879b7f Giorgos Korfiatis
        'endpoints': [
150 21879b7f Giorgos Korfiatis
            {'versionId': '',
151 21879b7f Giorgos Korfiatis
             'publicURL': None},
152 21879b7f Giorgos Korfiatis
        ],
153 21879b7f Giorgos Korfiatis
        'resources': {},
154 21879b7f Giorgos Korfiatis
    },
155 21879b7f Giorgos Korfiatis
156 21879b7f Giorgos Korfiatis
    'cyclades_ui': {
157 21879b7f Giorgos Korfiatis
        'type': 'cyclades_ui',
158 21879b7f Giorgos Korfiatis
        'component': 'cyclades',
159 21879b7f Giorgos Korfiatis
        'prefix': 'ui',
160 21879b7f Giorgos Korfiatis
        'public': False,
161 21879b7f Giorgos Korfiatis
        'endpoints': [
162 21879b7f Giorgos Korfiatis
            {'versionId': '',
163 21879b7f Giorgos Korfiatis
             'publicURL': None},
164 21879b7f Giorgos Korfiatis
        ],
165 21879b7f Giorgos Korfiatis
        'resources': {},
166 21879b7f Giorgos Korfiatis
    },
167 5718706f Giorgos Korfiatis
168 5718706f Giorgos Korfiatis
    'cyclades_admin': {
169 5718706f Giorgos Korfiatis
        'type': 'admin',
170 5718706f Giorgos Korfiatis
        'component': 'cyclades',
171 5718706f Giorgos Korfiatis
        'prefix': 'admin',
172 5718706f Giorgos Korfiatis
        'public': True,
173 5718706f Giorgos Korfiatis
        'endpoints': [
174 5718706f Giorgos Korfiatis
            {'versionId': '',
175 5718706f Giorgos Korfiatis
             'publicURL': None},
176 5718706f Giorgos Korfiatis
        ],
177 5718706f Giorgos Korfiatis
        'resources': {},
178 5718706f Giorgos Korfiatis
    },
179 21879b7f Giorgos Korfiatis
}
180 21879b7f Giorgos Korfiatis
181 21879b7f Giorgos Korfiatis
pithos_services = {
182 21879b7f Giorgos Korfiatis
    'pithos_object-store': {
183 21879b7f Giorgos Korfiatis
        'type': 'object-store',
184 21879b7f Giorgos Korfiatis
        'component': 'pithos',
185 21879b7f Giorgos Korfiatis
        'prefix': 'object-store',
186 21879b7f Giorgos Korfiatis
        'public': True,
187 21879b7f Giorgos Korfiatis
        'endpoints': [
188 21879b7f Giorgos Korfiatis
            {'versionId': 'v1',
189 21879b7f Giorgos Korfiatis
             'publicURL': None},
190 21879b7f Giorgos Korfiatis
        ],
191 21879b7f Giorgos Korfiatis
        'resources': {
192 21879b7f Giorgos Korfiatis
            'diskspace': {
193 21879b7f Giorgos Korfiatis
                "desc": "Pithos account diskspace",
194 21879b7f Giorgos Korfiatis
                "name": "pithos.diskspace",
195 21879b7f Giorgos Korfiatis
                "unit": "bytes",
196 21879b7f Giorgos Korfiatis
                "service_type": "object-store",
197 21879b7f Giorgos Korfiatis
                "service_origin": "pithos_object-store",
198 21879b7f Giorgos Korfiatis
            },
199 21879b7f Giorgos Korfiatis
        },
200 21879b7f Giorgos Korfiatis
    },
201 21879b7f Giorgos Korfiatis
202 21879b7f Giorgos Korfiatis
    'pithos_public': {
203 759b8a43 Giorgos Korfiatis
        'type': 'pithos_public',
204 21879b7f Giorgos Korfiatis
        'component': 'pithos',
205 db4761e6 Giorgos Korfiatis
        'prefix': 'public',
206 a08f9369 Giorgos Korfiatis
        'public': False,
207 21879b7f Giorgos Korfiatis
        'endpoints': [
208 759b8a43 Giorgos Korfiatis
            {'versionId': '',
209 21879b7f Giorgos Korfiatis
             'publicURL': None},
210 21879b7f Giorgos Korfiatis
        ],
211 21879b7f Giorgos Korfiatis
        'resources': {},
212 21879b7f Giorgos Korfiatis
    },
213 21879b7f Giorgos Korfiatis
214 21879b7f Giorgos Korfiatis
    'pithos_ui': {
215 21879b7f Giorgos Korfiatis
        'type': 'pithos_ui',
216 21879b7f Giorgos Korfiatis
        'component': 'pithos',
217 21879b7f Giorgos Korfiatis
        'prefix': 'ui',
218 21879b7f Giorgos Korfiatis
        'public': False,
219 21879b7f Giorgos Korfiatis
        'endpoints': [
220 21879b7f Giorgos Korfiatis
            {'versionId': '',
221 21879b7f Giorgos Korfiatis
             'publicURL': None},
222 21879b7f Giorgos Korfiatis
        ],
223 21879b7f Giorgos Korfiatis
        'resources': {},
224 21879b7f Giorgos Korfiatis
    },
225 21879b7f Giorgos Korfiatis
}
226 21879b7f Giorgos Korfiatis
227 21879b7f Giorgos Korfiatis
228 21879b7f Giorgos Korfiatis
definitions = {
229 21879b7f Giorgos Korfiatis
    'astakos': astakos_services,
230 21879b7f Giorgos Korfiatis
    'cyclades': cyclades_services,
231 21879b7f Giorgos Korfiatis
    'pithos': pithos_services,
232 21879b7f Giorgos Korfiatis
}
233 21879b7f Giorgos Korfiatis
234 21879b7f Giorgos Korfiatis
235 21879b7f Giorgos Korfiatis
def print_definitions(d, base_url):
236 21879b7f Giorgos Korfiatis
    fill_endpoints(d, base_url)
237 21879b7f Giorgos Korfiatis
    print json.dumps(filter_public(d), indent=4)
238 21879b7f Giorgos Korfiatis
239 21879b7f Giorgos Korfiatis
240 21879b7f Giorgos Korfiatis
usage = "usage: %prog <component_name> <base_url>"
241 21879b7f Giorgos Korfiatis
parser = OptionParser(usage=usage)
242 21879b7f Giorgos Korfiatis
243 21879b7f Giorgos Korfiatis
244 21879b7f Giorgos Korfiatis
def main():
245 21879b7f Giorgos Korfiatis
    (options, args) = parser.parse_args()
246 21879b7f Giorgos Korfiatis
    if len(args) != 2:
247 21879b7f Giorgos Korfiatis
        parser.error("Wrong number of arguments.")
248 21879b7f Giorgos Korfiatis
    component = args[0]
249 21879b7f Giorgos Korfiatis
    try:
250 21879b7f Giorgos Korfiatis
        services = definitions[component]
251 21879b7f Giorgos Korfiatis
    except KeyError:
252 21879b7f Giorgos Korfiatis
        print "Unrecognized component %s" % component
253 21879b7f Giorgos Korfiatis
        exit(1)
254 21879b7f Giorgos Korfiatis
    base_url = args[1]
255 21879b7f Giorgos Korfiatis
    print_definitions(services, base_url)
256 21879b7f Giorgos Korfiatis
257 21879b7f Giorgos Korfiatis
if __name__ == '__main__':
258 21879b7f Giorgos Korfiatis
    main()