Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / scripts / snf_service_export.py @ 900325e8

History | View | Annotate | Download (5.9 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_ui': {
41
        'type': 'astakos_ui',
42
        'component': 'astakos',
43
        'prefix': 'ui',
44
        'public': False,
45
        'endpoints': [
46
            {'versionId': '',
47
             'publicURL': None},
48
        ],
49
    },
50
}
51

    
52
cyclades_services = {
53
    'cyclades_compute': {
54
        'type': 'compute',
55
        'component': 'cyclades',
56
        'prefix': 'compute',
57
        'public': True,
58
        'endpoints': [
59
            {'versionId': 'v2.0',
60
             'publicURL': None},
61
        ],
62
        'resources': {
63
            'vm': {
64
                "name": "cyclades.vm",
65
                "desc": "Number of virtual machines",
66
                "service_type": "compute",
67
                "service_origin": "cyclades_compute",
68
            },
69
            'cpu': {
70
                "name": "cyclades.cpu",
71
                "desc": "Number of virtual machine processors",
72
                "service_type": "compute",
73
                "service_origin": "cyclades_compute",
74
            },
75
            'ram': {
76
                "name": "cyclades.ram",
77
                "desc": "Virtual machine memory size",
78
                "unit": "bytes",
79
                "service_type": "compute",
80
                "service_origin": "cyclades_compute",
81
            },
82
            'disk': {
83
                "name": "cyclades.disk",
84
                "desc": "Virtual machine disk size",
85
                "unit": "bytes",
86
                "service_type": "compute",
87
                "service_origin": "cyclades_compute",
88
            },
89
            'network-private': {
90
                "name": "cyclades.network.private",
91
                "desc": "Number of private networks",
92
                "service_type": "compute",
93
                "service_origin": "cyclades_compute",
94
            },
95
        },
96
    },
97

    
98
    'cyclades_plankton': {
99
        'type': 'image',
100
        'component': 'cyclades',
101
        'prefix': 'image',
102
        'public': True,
103
        'endpoints': [
104
            {'versionId': 'v1.0',
105
             'publicURL': None},
106
        ],
107
        'resources': {},
108
    },
109

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

    
122
    'cyclades_helpdesk': {
123
        'type': 'cyclades_helpdesk',
124
        'component': 'cyclades',
125
        'prefix': 'helpdesk',
126
        'public': False,
127
        'endpoints': [
128
            {'versionId': '',
129
             'publicURL': None},
130
        ],
131
    },
132

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

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

    
158
pithos_services = {
159
    'pithos_object-store': {
160
        'type': 'object-store',
161
        'component': 'pithos',
162
        'prefix': 'object-store',
163
        'public': True,
164
        'endpoints': [
165
            {'versionId': 'v1',
166
             'publicURL': None},
167
        ],
168
        'resources': {
169
            'diskspace': {
170
                "desc": "Pithos account diskspace",
171
                "name": "pithos.diskspace",
172
                "unit": "bytes",
173
                "service_type": "object-store",
174
                "service_origin": "pithos_object-store",
175
            },
176
        },
177
    },
178

    
179
    'pithos_public': {
180
        'type': 'public',
181
        'component': 'pithos',
182
        'prefix': 'public',
183
        'public': True,
184
        'endpoints': [
185
            {'versionId': 'v2.0',
186
             'publicURL': None},
187
        ],
188
        'resources': {},
189
    },
190

    
191
    'pithos_ui': {
192
        'type': 'pithos_ui',
193
        'component': 'pithos',
194
        'prefix': 'ui',
195
        'public': False,
196
        'endpoints': [
197
            {'versionId': '',
198
             'publicURL': None},
199
        ],
200
        'resources': {},
201
    },
202
}
203

    
204

    
205
definitions = {
206
    'astakos': astakos_services,
207
    'cyclades': cyclades_services,
208
    'pithos': pithos_services,
209
}
210

    
211

    
212
def print_definitions(d, base_url):
213
    fill_endpoints(d, base_url)
214
    print json.dumps(filter_public(d), indent=4)
215

    
216

    
217
usage = "usage: %prog <component_name> <base_url>"
218
parser = OptionParser(usage=usage)
219

    
220

    
221
def main():
222
    (options, args) = parser.parse_args()
223
    if len(args) != 2:
224
        parser.error("Wrong number of arguments.")
225
    component = args[0]
226
    try:
227
        services = definitions[component]
228
    except KeyError:
229
        print "Unrecognized component %s" % component
230
        exit(1)
231
    base_url = args[1]
232
    print_definitions(services, base_url)
233

    
234
if __name__ == '__main__':
235
    main()