Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (6.4 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

    
63
cyclades_services = {
64
    'cyclades_compute': {
65
        'type': 'compute',
66
        'component': 'cyclades',
67
        'prefix': 'compute',
68
        'public': True,
69
        'endpoints': [
70
            {'versionId': 'v2.0',
71
             'publicURL': None},
72
        ],
73
        'resources': {
74
            'vm': {
75
                "name": "cyclades.vm",
76
                "desc": "Number of virtual machines",
77
                "service_type": "compute",
78
                "service_origin": "cyclades_compute",
79
            },
80
            'cpu': {
81
                "name": "cyclades.cpu",
82
                "desc": "Number of virtual machine processors",
83
                "service_type": "compute",
84
                "service_origin": "cyclades_compute",
85
            },
86
            'ram': {
87
                "name": "cyclades.ram",
88
                "desc": "Virtual machine memory size",
89
                "unit": "bytes",
90
                "service_type": "compute",
91
                "service_origin": "cyclades_compute",
92
            },
93
            'disk': {
94
                "name": "cyclades.disk",
95
                "desc": "Virtual machine disk size",
96
                "unit": "bytes",
97
                "service_type": "compute",
98
                "service_origin": "cyclades_compute",
99
            },
100
            'network-private': {
101
                "name": "cyclades.network.private",
102
                "desc": "Number of private networks",
103
                "service_type": "compute",
104
                "service_origin": "cyclades_compute",
105
            },
106
        },
107
    },
108

    
109
    'cyclades_plankton': {
110
        'type': 'image',
111
        'component': 'cyclades',
112
        'prefix': 'image',
113
        'public': True,
114
        'endpoints': [
115
            {'versionId': 'v1.0',
116
             'publicURL': None},
117
        ],
118
        'resources': {},
119
    },
120

    
121
    'cyclades_vmapi': {
122
        'type': 'vmapi',
123
        'component': 'cyclades',
124
        'prefix': 'vmapi',
125
        'public': True,
126
        'endpoints': [
127
            {'versionId': 'v1.0',
128
             'publicURL': None},
129
        ],
130
        'resources': {},
131
    },
132

    
133
    'cyclades_helpdesk': {
134
        'type': 'cyclades_helpdesk',
135
        'component': 'cyclades',
136
        'prefix': 'helpdesk',
137
        'public': False,
138
        'endpoints': [
139
            {'versionId': '',
140
             'publicURL': None},
141
        ],
142
    },
143

    
144
    'cyclades_userdata': {
145
        'type': 'cyclades_userdata',
146
        'component': 'cyclades',
147
        'prefix': 'userdata',
148
        'public': False,
149
        'endpoints': [
150
            {'versionId': '',
151
             'publicURL': None},
152
        ],
153
        'resources': {},
154
    },
155

    
156
    'cyclades_ui': {
157
        'type': 'cyclades_ui',
158
        'component': 'cyclades',
159
        'prefix': 'ui',
160
        'public': False,
161
        'endpoints': [
162
            {'versionId': '',
163
             'publicURL': None},
164
        ],
165
        'resources': {},
166
    },
167

    
168
    'cyclades_admin': {
169
        'type': 'admin',
170
        'component': 'cyclades',
171
        'prefix': 'admin',
172
        'public': True,
173
        'endpoints': [
174
            {'versionId': '',
175
             'publicURL': None},
176
        ],
177
        'resources': {},
178
    },
179
}
180

    
181
pithos_services = {
182
    'pithos_object-store': {
183
        'type': 'object-store',
184
        'component': 'pithos',
185
        'prefix': 'object-store',
186
        'public': True,
187
        'endpoints': [
188
            {'versionId': 'v1',
189
             'publicURL': None},
190
        ],
191
        'resources': {
192
            'diskspace': {
193
                "desc": "Pithos account diskspace",
194
                "name": "pithos.diskspace",
195
                "unit": "bytes",
196
                "service_type": "object-store",
197
                "service_origin": "pithos_object-store",
198
            },
199
        },
200
    },
201

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

    
214
    'pithos_ui': {
215
        'type': 'pithos_ui',
216
        'component': 'pithos',
217
        'prefix': 'ui',
218
        'public': False,
219
        'endpoints': [
220
            {'versionId': '',
221
             'publicURL': None},
222
        ],
223
        'resources': {},
224
    },
225
}
226

    
227

    
228
definitions = {
229
    'astakos': astakos_services,
230
    'cyclades': cyclades_services,
231
    'pithos': pithos_services,
232
}
233

    
234

    
235
def print_definitions(d, base_url):
236
    fill_endpoints(d, base_url)
237
    print json.dumps(filter_public(d), indent=4)
238

    
239

    
240
usage = "usage: %prog <component_name> <base_url>"
241
parser = OptionParser(usage=usage)
242

    
243

    
244
def main():
245
    (options, args) = parser.parse_args()
246
    if len(args) != 2:
247
        parser.error("Wrong number of arguments.")
248
    component = args[0]
249
    try:
250
        services = definitions[component]
251
    except KeyError:
252
        print "Unrecognized component %s" % component
253
        exit(1)
254
    base_url = args[1]
255
    print_definitions(services, base_url)
256

    
257
if __name__ == '__main__':
258
    main()