Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / presentation.py @ 9202a57d

History | View | Annotate | Download (10.3 kB)

1
# Copyright 2012, 2013 GRNET S.A. All rights reserved.
2
#
3
# Redistribution and use in source and binary forms, with or
4
# without modification, are permitted provided that the following
5
# conditions are met:
6
#
7
#   1. Redistributions of source code must retain the above
8
#      copyright notice, this list of conditions and the following
9
#      disclaimer.
10
#
11
#   2. Redistributions in binary form must reproduce the above
12
#      copyright notice, this list of conditions and the following
13
#      disclaimer in the documentation and/or other materials
14
#      provided with the distribution.
15
#
16
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
# POSSIBILITY OF SUCH DAMAGE.
28
#
29
# The views and conclusions contained in the software and
30
# documentation are those of the authors and should not be
31
# interpreted as representing official policies, either expressed
32
# or implied, of GRNET S.A.
33

    
34
from astakos.im import settings
35
from synnefo.lib.utils import dict_merge
36

    
37
RESOURCES = {
38
    'groups': {
39
        'compute': {
40
            'help_text': ('Compute resources '
41
                          '(amount of VMs, CPUs, RAM, System disk) '),
42
            'is_abbreviation': False,
43
            'report_desc': '',
44
            'verbose_name': 'compute',
45
        },
46
        'storage': {
47
            'help_text': ('Storage resources '
48
                          '(amount of space to store files on Pithos) '),
49
            'is_abbreviation': False,
50
            'report_desc': '',
51
            'verbose_name': 'storage',
52
        },
53
        'network': {
54
            'help_text': ' Network resources (number of Private Networks)  ',
55
            'is_abbreviation': False,
56
            'report_desc': '',
57
            'verbose_name': 'network',
58
        },
59
    },
60
    'resources': {
61
        'pithos.diskspace': {
62
            'help_text': ('This is the space on Pithos for storing files '
63
                          'and VM Images. '),
64
            'help_text_input_each': ('This is the total amount of space on '
65
                                     'Pithos that will be granted to each '
66
                                     'user of this Project '),
67
            'is_abbreviation': False,
68
            'report_desc': 'Storage Space',
69
            'placeholder': 'eg. 10GB',
70
            'verbose_name': 'Storage Space',
71
            'group': 'storage'
72
        },
73
        'cyclades.disk': {
74
            'help_text': ('This is the System Disk that the VMs have that '
75
                          'run the OS '),
76
            'help_text_input_each': ("This is the total amount of System Disk "
77
                                     "that will be granted to each user of "
78
                                     "this Project (this refers to the total "
79
                                     "System Disk of all VMs, not each VM's "
80
                                     "System Disk)  "),
81
            'is_abbreviation': False,
82
            'report_desc': 'System Disk',
83
            'placeholder': 'eg. 5GB, 2GB etc',
84
            'verbose_name': 'System Disk',
85
            'group': 'compute'
86
        },
87
        'cyclades.total_ram': {
88
            'help_text': 'RAM used by VMs ',
89
            'help_text_input_each': ('This is the total amount of RAM that '
90
                                     'will be granted to each user of this '
91
                                     'Project (on all VMs)  '),
92
            'is_abbreviation': True,
93
            'report_desc': 'Total RAM',
94
            'placeholder': 'eg. 4GB',
95
            'verbose_name': 'Total ram',
96
            'group': 'compute'
97

    
98
        },
99
        'cyclades.ram': {
100
            'help_text': 'RAM used by active VMs ',
101
            'help_text_input_each': ('This is the total amount of RAM that '
102
                                     'will be granted to each user of this '
103
                                     'Project (on all active VMs)  '),
104
            'is_abbreviation': False,
105
            'report_desc': 'RAM',
106
            'placeholder': 'eg. 4GB',
107
            'verbose_name': 'RAM',
108
            'group': 'compute'
109

    
110
        },
111
        'cyclades.total_cpu': {
112
            'help_text': 'CPUs used by VMs ',
113
            'help_text_input_each': ('This is the total number of CPUs that '
114
                                     'will be granted to each user of this '
115
                                     'Project (on all VMs)  '),
116
            'is_abbreviation': True,
117
            'report_desc': 'Total CPUs',
118
            'placeholder': 'eg. 1',
119
            'verbose_name': 'Total cpu',
120
            'group': 'compute'
121

    
122
        },
123
        'cyclades.cpu': {
124
            'help_text': 'CPUs used by active VMs ',
125
            'help_text_input_each': ('This is the total number of CPUs that '
126
                                     'will be granted to each user of this '
127
                                     'Project (on all active VMs)  '),
128
            'is_abbreviation': False,
129
            'report_desc': 'CPUs',
130
            'placeholder': 'eg. 1',
131
            'verbose_name': 'CPU',
132
            'group': 'compute'
133

    
134
        },
135
        'cyclades.vm': {
136
            'help_text': ('These are the VMs one can create on the '
137
                          'Cyclades UI '),
138
            'help_text_input_each': ('This is the total number of VMs that '
139
                                     'will be granted to each user of this '
140
                                     'Project '),
141
            'is_abbreviation': True,
142
            'report_desc': 'Virtual Machines',
143
            'placeholder': 'eg. 2',
144
            'verbose_name': 'vm',
145
            'group': 'compute'
146

    
147
        },
148
        'cyclades.network.private': {
149
            'help_text': ('These are the Private Networks one can create on '
150
                          'the Cyclades UI. '),
151
            'help_text_input_each': ('This is the total number of Private '
152
                                     'Networks that will be granted to each '
153
                                     'user of this Project '),
154
            'is_abbreviation': False,
155
            'report_desc': 'Private Networks',
156
            'placeholder': 'eg. 1',
157
            'verbose_name': 'Private Network',
158
            'group': 'network'
159

    
160
        },
161
        'cyclades.floating_ip': {
162
            'help_text': ('These are the Public (Floating) IPs one can '
163
                          'reserve on the Cyclades UI. '),
164
            'help_text_input_each': ('This is the total number of Public '
165
                                     '(Floating) IPs that will be granted to '
166
                                     'each user of this Project '),
167
            'is_abbreviation': False,
168
            'report_desc': 'Public (Floating) IPs',
169
            'placeholder': 'eg. 1',
170
            'verbose_name': 'Public (Floating) IP',
171
            'group': 'network'
172

    
173
        },
174
        'astakos.pending_app': {
175
            'help_text': ('Pending project applications limit'),
176
            'help_text_input_each': ('Total pending project applications user '
177
                                     'is allowed to create'),
178
            'is_abbreviation': False,
179
            'report_desc': 'Pending Project Applications',
180
            'placeholder': 'eg. 2',
181
            'verbose_name': 'pending project application',
182
            'group': 'accounts'
183

    
184
        },
185
    },
186
    'groups_order': ['storage', 'compute', 'network', 'accounts'],
187
    'resources_order': ['pithos.diskspace',
188
                        'cyclades.disk',
189
                        'cyclades.total_cpu',
190
                        'cyclades.cpu',
191
                        'cyclades.total_ram',
192
                        'cyclades.ram',
193
                        'cyclades.vm',
194
                        'cyclades.network.private',
195
                        'cyclades.floating_ip',
196
                        'astakos.pending_app'
197
                        ],
198
}
199

    
200
# extend from settings
201
RESOURCES = dict_merge(RESOURCES, settings.RESOURCES_META)
202

    
203

    
204
def component_defaults(service_name):
205
    """
206
    Metadata for unkown services
207
    """
208
    return {
209
        'name': service_name,
210
        'order': 1000,
211
        'verbose_name': service_name.title(),
212
        'cloudbar': {
213
            'show': True,
214
            'title': service_name
215
        },
216
        'dashboard': {
217
            'show': True,
218
            'order': 1000,
219
            'description': '%s service' % service_name
220
        }
221
    }
222

    
223

    
224
COMPONENTS = {
225
    'astakos': {
226
        'order': 1,
227
        'dashboard': {
228
            'order': 3,
229
            'show': True,
230
            'description': "Access the dashboard from the top right corner "
231
                           "of your screen. Here you can manage your profile, "
232
                           "see the usage of your resources and manage "
233
                           "projects to share virtual resources with "
234
                           "colleagues."
235
        },
236
        'cloudbar': {
237
            'show': False
238
        }
239
    },
240
    'pithos': {
241
        'order': 2,
242
        'dashboard': {
243
            'order': 1,
244
            'show': True,
245
            'description': "Pithos is the File Storage service. "
246
                           "Click to start uploading and managing your "
247
                           "files on the cloud."
248
        },
249
        'cloudbar': {
250
            'show': True
251
        }
252
    },
253
    'cyclades': {
254
        'order': 3,
255
        'dashboard': {
256
            'order': 2,
257
            'show': True,
258
            'description': "Cyclades is the Compute and Network Service. "
259
                           "Click to start creating Virtual Machines and "
260
                           "connect them to arbitrary Networks."
261
        },
262
        'cloudbar': {
263
            'show': True
264
        }
265
    }
266
}
267

    
268

    
269
PROJECT_MEMBER_JOIN_POLICIES = {
270
    1: 'automatically accepted',
271
    2: 'owner accepts',
272
    3: 'closed',
273
}
274

    
275

    
276
PROJECT_MEMBER_LEAVE_POLICIES = {
277
    1: 'automatically accepted',
278
    2: 'owner accepts',
279
    3: 'closed',
280
}