Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (10.3 kB)

1 4161cb70 Giorgos Korfiatis
# Copyright 2012, 2013 GRNET S.A. All rights reserved.
2 4161cb70 Giorgos Korfiatis
#
3 4161cb70 Giorgos Korfiatis
# Redistribution and use in source and binary forms, with or
4 4161cb70 Giorgos Korfiatis
# without modification, are permitted provided that the following
5 4161cb70 Giorgos Korfiatis
# conditions are met:
6 4161cb70 Giorgos Korfiatis
#
7 4161cb70 Giorgos Korfiatis
#   1. Redistributions of source code must retain the above
8 4161cb70 Giorgos Korfiatis
#      copyright notice, this list of conditions and the following
9 4161cb70 Giorgos Korfiatis
#      disclaimer.
10 4161cb70 Giorgos Korfiatis
#
11 4161cb70 Giorgos Korfiatis
#   2. Redistributions in binary form must reproduce the above
12 4161cb70 Giorgos Korfiatis
#      copyright notice, this list of conditions and the following
13 4161cb70 Giorgos Korfiatis
#      disclaimer in the documentation and/or other materials
14 4161cb70 Giorgos Korfiatis
#      provided with the distribution.
15 4161cb70 Giorgos Korfiatis
#
16 4161cb70 Giorgos Korfiatis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
17 4161cb70 Giorgos Korfiatis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 4161cb70 Giorgos Korfiatis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 4161cb70 Giorgos Korfiatis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
20 4161cb70 Giorgos Korfiatis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 4161cb70 Giorgos Korfiatis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 4161cb70 Giorgos Korfiatis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
23 4161cb70 Giorgos Korfiatis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24 4161cb70 Giorgos Korfiatis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 4161cb70 Giorgos Korfiatis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
26 4161cb70 Giorgos Korfiatis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 4161cb70 Giorgos Korfiatis
# POSSIBILITY OF SUCH DAMAGE.
28 4161cb70 Giorgos Korfiatis
#
29 4161cb70 Giorgos Korfiatis
# The views and conclusions contained in the software and
30 4161cb70 Giorgos Korfiatis
# documentation are those of the authors and should not be
31 4161cb70 Giorgos Korfiatis
# interpreted as representing official policies, either expressed
32 4161cb70 Giorgos Korfiatis
# or implied, of GRNET S.A.
33 4161cb70 Giorgos Korfiatis
34 75380308 Kostas Papadimitriou
from astakos.im import settings
35 37d59b27 Kostas Papadimitriou
from synnefo.lib.utils import dict_merge
36 75380308 Kostas Papadimitriou
37 75380308 Kostas Papadimitriou
RESOURCES = {
38 4161cb70 Giorgos Korfiatis
    'groups': {
39 4161cb70 Giorgos Korfiatis
        'compute': {
40 4161cb70 Giorgos Korfiatis
            'help_text': ('Compute resources '
41 4161cb70 Giorgos Korfiatis
                          '(amount of VMs, CPUs, RAM, System disk) '),
42 4161cb70 Giorgos Korfiatis
            'is_abbreviation': False,
43 4161cb70 Giorgos Korfiatis
            'report_desc': '',
44 4161cb70 Giorgos Korfiatis
            'verbose_name': 'compute',
45 4161cb70 Giorgos Korfiatis
        },
46 4161cb70 Giorgos Korfiatis
        'storage': {
47 4161cb70 Giorgos Korfiatis
            'help_text': ('Storage resources '
48 4161cb70 Giorgos Korfiatis
                          '(amount of space to store files on Pithos) '),
49 4161cb70 Giorgos Korfiatis
            'is_abbreviation': False,
50 4161cb70 Giorgos Korfiatis
            'report_desc': '',
51 4161cb70 Giorgos Korfiatis
            'verbose_name': 'storage',
52 4161cb70 Giorgos Korfiatis
        },
53 4161cb70 Giorgos Korfiatis
        'network': {
54 4161cb70 Giorgos Korfiatis
            'help_text': ' Network resources (number of Private Networks)  ',
55 4161cb70 Giorgos Korfiatis
            'is_abbreviation': False,
56 4161cb70 Giorgos Korfiatis
            'report_desc': '',
57 4161cb70 Giorgos Korfiatis
            'verbose_name': 'network',
58 4161cb70 Giorgos Korfiatis
        },
59 4161cb70 Giorgos Korfiatis
    },
60 4161cb70 Giorgos Korfiatis
    'resources': {
61 75380308 Kostas Papadimitriou
        'pithos.diskspace': {
62 4161cb70 Giorgos Korfiatis
            'help_text': ('This is the space on Pithos for storing files '
63 4161cb70 Giorgos Korfiatis
                          'and VM Images. '),
64 4161cb70 Giorgos Korfiatis
            'help_text_input_each': ('This is the total amount of space on '
65 4161cb70 Giorgos Korfiatis
                                     'Pithos that will be granted to each '
66 4161cb70 Giorgos Korfiatis
                                     'user of this Project '),
67 4161cb70 Giorgos Korfiatis
            'is_abbreviation': False,
68 4161cb70 Giorgos Korfiatis
            'report_desc': 'Storage Space',
69 4161cb70 Giorgos Korfiatis
            'placeholder': 'eg. 10GB',
70 4161cb70 Giorgos Korfiatis
            'verbose_name': 'Storage Space',
71 75380308 Kostas Papadimitriou
            'group': 'storage'
72 4161cb70 Giorgos Korfiatis
        },
73 4161cb70 Giorgos Korfiatis
        'cyclades.disk': {
74 4161cb70 Giorgos Korfiatis
            'help_text': ('This is the System Disk that the VMs have that '
75 4161cb70 Giorgos Korfiatis
                          'run the OS '),
76 4161cb70 Giorgos Korfiatis
            'help_text_input_each': ("This is the total amount of System Disk "
77 4161cb70 Giorgos Korfiatis
                                     "that will be granted to each user of "
78 4161cb70 Giorgos Korfiatis
                                     "this Project (this refers to the total "
79 4161cb70 Giorgos Korfiatis
                                     "System Disk of all VMs, not each VM's "
80 4161cb70 Giorgos Korfiatis
                                     "System Disk)  "),
81 4161cb70 Giorgos Korfiatis
            'is_abbreviation': False,
82 4161cb70 Giorgos Korfiatis
            'report_desc': 'System Disk',
83 4161cb70 Giorgos Korfiatis
            'placeholder': 'eg. 5GB, 2GB etc',
84 75380308 Kostas Papadimitriou
            'verbose_name': 'System Disk',
85 75380308 Kostas Papadimitriou
            'group': 'compute'
86 4161cb70 Giorgos Korfiatis
        },
87 5083fc47 Christos Stavrakakis
        'cyclades.total_ram': {
88 4161cb70 Giorgos Korfiatis
            'help_text': 'RAM used by VMs ',
89 4161cb70 Giorgos Korfiatis
            'help_text_input_each': ('This is the total amount of RAM that '
90 4161cb70 Giorgos Korfiatis
                                     'will be granted to each user of this '
91 4161cb70 Giorgos Korfiatis
                                     'Project (on all VMs)  '),
92 4161cb70 Giorgos Korfiatis
            'is_abbreviation': True,
93 5083fc47 Christos Stavrakakis
            'report_desc': 'Total RAM',
94 4161cb70 Giorgos Korfiatis
            'placeholder': 'eg. 4GB',
95 5083fc47 Christos Stavrakakis
            'verbose_name': 'Total ram',
96 75380308 Kostas Papadimitriou
            'group': 'compute'
97 75380308 Kostas Papadimitriou
98 4161cb70 Giorgos Korfiatis
        },
99 5083fc47 Christos Stavrakakis
        'cyclades.ram': {
100 447475de Giorgos Korfiatis
            'help_text': 'RAM used by active VMs ',
101 447475de Giorgos Korfiatis
            'help_text_input_each': ('This is the total amount of RAM that '
102 447475de Giorgos Korfiatis
                                     'will be granted to each user of this '
103 447475de Giorgos Korfiatis
                                     'Project (on all active VMs)  '),
104 447475de Giorgos Korfiatis
            'is_abbreviation': False,
105 5083fc47 Christos Stavrakakis
            'report_desc': 'RAM',
106 447475de Giorgos Korfiatis
            'placeholder': 'eg. 4GB',
107 5083fc47 Christos Stavrakakis
            'verbose_name': 'RAM',
108 447475de Giorgos Korfiatis
            'group': 'compute'
109 447475de Giorgos Korfiatis
110 447475de Giorgos Korfiatis
        },
111 5083fc47 Christos Stavrakakis
        'cyclades.total_cpu': {
112 4161cb70 Giorgos Korfiatis
            'help_text': 'CPUs used by VMs ',
113 4161cb70 Giorgos Korfiatis
            'help_text_input_each': ('This is the total number of CPUs that '
114 4161cb70 Giorgos Korfiatis
                                     'will be granted to each user of this '
115 4161cb70 Giorgos Korfiatis
                                     'Project (on all VMs)  '),
116 4161cb70 Giorgos Korfiatis
            'is_abbreviation': True,
117 5083fc47 Christos Stavrakakis
            'report_desc': 'Total CPUs',
118 4161cb70 Giorgos Korfiatis
            'placeholder': 'eg. 1',
119 5083fc47 Christos Stavrakakis
            'verbose_name': 'Total cpu',
120 75380308 Kostas Papadimitriou
            'group': 'compute'
121 75380308 Kostas Papadimitriou
122 4161cb70 Giorgos Korfiatis
        },
123 5083fc47 Christos Stavrakakis
        'cyclades.cpu': {
124 447475de Giorgos Korfiatis
            'help_text': 'CPUs used by active VMs ',
125 447475de Giorgos Korfiatis
            'help_text_input_each': ('This is the total number of CPUs that '
126 447475de Giorgos Korfiatis
                                     'will be granted to each user of this '
127 447475de Giorgos Korfiatis
                                     'Project (on all active VMs)  '),
128 447475de Giorgos Korfiatis
            'is_abbreviation': False,
129 5083fc47 Christos Stavrakakis
            'report_desc': 'CPUs',
130 447475de Giorgos Korfiatis
            'placeholder': 'eg. 1',
131 5083fc47 Christos Stavrakakis
            'verbose_name': 'CPU',
132 447475de Giorgos Korfiatis
            'group': 'compute'
133 447475de Giorgos Korfiatis
134 447475de Giorgos Korfiatis
        },
135 4161cb70 Giorgos Korfiatis
        'cyclades.vm': {
136 4161cb70 Giorgos Korfiatis
            'help_text': ('These are the VMs one can create on the '
137 4161cb70 Giorgos Korfiatis
                          'Cyclades UI '),
138 4161cb70 Giorgos Korfiatis
            'help_text_input_each': ('This is the total number of VMs that '
139 4161cb70 Giorgos Korfiatis
                                     'will be granted to each user of this '
140 4161cb70 Giorgos Korfiatis
                                     'Project '),
141 4161cb70 Giorgos Korfiatis
            'is_abbreviation': True,
142 4161cb70 Giorgos Korfiatis
            'report_desc': 'Virtual Machines',
143 4161cb70 Giorgos Korfiatis
            'placeholder': 'eg. 2',
144 4161cb70 Giorgos Korfiatis
            'verbose_name': 'vm',
145 75380308 Kostas Papadimitriou
            'group': 'compute'
146 75380308 Kostas Papadimitriou
147 4161cb70 Giorgos Korfiatis
        },
148 4161cb70 Giorgos Korfiatis
        'cyclades.network.private': {
149 4161cb70 Giorgos Korfiatis
            'help_text': ('These are the Private Networks one can create on '
150 4161cb70 Giorgos Korfiatis
                          'the Cyclades UI. '),
151 4161cb70 Giorgos Korfiatis
            'help_text_input_each': ('This is the total number of Private '
152 4161cb70 Giorgos Korfiatis
                                     'Networks that will be granted to each '
153 4161cb70 Giorgos Korfiatis
                                     'user of this Project '),
154 4161cb70 Giorgos Korfiatis
            'is_abbreviation': False,
155 4161cb70 Giorgos Korfiatis
            'report_desc': 'Private Networks',
156 4161cb70 Giorgos Korfiatis
            'placeholder': 'eg. 1',
157 75380308 Kostas Papadimitriou
            'verbose_name': 'Private Network',
158 75380308 Kostas Papadimitriou
            'group': 'network'
159 75380308 Kostas Papadimitriou
160 37d59b27 Kostas Papadimitriou
        },
161 447475de Giorgos Korfiatis
        'cyclades.floating_ip': {
162 447475de Giorgos Korfiatis
            'help_text': ('These are the Public (Floating) IPs one can '
163 447475de Giorgos Korfiatis
                          'reserve on the Cyclades UI. '),
164 447475de Giorgos Korfiatis
            'help_text_input_each': ('This is the total number of Public '
165 447475de Giorgos Korfiatis
                                     '(Floating) IPs that will be granted to '
166 447475de Giorgos Korfiatis
                                     'each user of this Project '),
167 447475de Giorgos Korfiatis
            'is_abbreviation': False,
168 447475de Giorgos Korfiatis
            'report_desc': 'Public (Floating) IPs',
169 447475de Giorgos Korfiatis
            'placeholder': 'eg. 1',
170 447475de Giorgos Korfiatis
            'verbose_name': 'Public (Floating) IP',
171 447475de Giorgos Korfiatis
            'group': 'network'
172 447475de Giorgos Korfiatis
173 447475de Giorgos Korfiatis
        },
174 37d59b27 Kostas Papadimitriou
        'astakos.pending_app': {
175 37d59b27 Kostas Papadimitriou
            'help_text': ('Pending project applications limit'),
176 37d59b27 Kostas Papadimitriou
            'help_text_input_each': ('Total pending project applications user '
177 37d59b27 Kostas Papadimitriou
                                     'is allowed to create'),
178 37d59b27 Kostas Papadimitriou
            'is_abbreviation': False,
179 37d59b27 Kostas Papadimitriou
            'report_desc': 'Pending Project Applications',
180 37d59b27 Kostas Papadimitriou
            'placeholder': 'eg. 2',
181 37d59b27 Kostas Papadimitriou
            'verbose_name': 'pending project application',
182 37d59b27 Kostas Papadimitriou
            'group': 'accounts'
183 37d59b27 Kostas Papadimitriou
184 37d59b27 Kostas Papadimitriou
        },
185 4161cb70 Giorgos Korfiatis
    },
186 37d59b27 Kostas Papadimitriou
    'groups_order': ['storage', 'compute', 'network', 'accounts'],
187 75380308 Kostas Papadimitriou
    'resources_order': ['pithos.diskspace',
188 4161cb70 Giorgos Korfiatis
                        'cyclades.disk',
189 5083fc47 Christos Stavrakakis
                        'cyclades.total_cpu',
190 4161cb70 Giorgos Korfiatis
                        'cyclades.cpu',
191 5083fc47 Christos Stavrakakis
                        'cyclades.total_ram',
192 4161cb70 Giorgos Korfiatis
                        'cyclades.ram',
193 4161cb70 Giorgos Korfiatis
                        'cyclades.vm',
194 37d59b27 Kostas Papadimitriou
                        'cyclades.network.private',
195 447475de Giorgos Korfiatis
                        'cyclades.floating_ip',
196 37d59b27 Kostas Papadimitriou
                        'astakos.pending_app'
197 37d59b27 Kostas Papadimitriou
                        ],
198 4161cb70 Giorgos Korfiatis
}
199 0156e40c Kostas Papadimitriou
200 37d59b27 Kostas Papadimitriou
# extend from settings
201 37d59b27 Kostas Papadimitriou
RESOURCES = dict_merge(RESOURCES, settings.RESOURCES_META)
202 37d59b27 Kostas Papadimitriou
203 0156e40c Kostas Papadimitriou
204 bea584e1 Giorgos Korfiatis
def component_defaults(service_name):
205 0156e40c Kostas Papadimitriou
    """
206 0156e40c Kostas Papadimitriou
    Metadata for unkown services
207 0156e40c Kostas Papadimitriou
    """
208 0156e40c Kostas Papadimitriou
    return {
209 0156e40c Kostas Papadimitriou
        'name': service_name,
210 0156e40c Kostas Papadimitriou
        'order': 1000,
211 0156e40c Kostas Papadimitriou
        'verbose_name': service_name.title(),
212 0156e40c Kostas Papadimitriou
        'cloudbar': {
213 0156e40c Kostas Papadimitriou
            'show': True,
214 0156e40c Kostas Papadimitriou
            'title': service_name
215 0156e40c Kostas Papadimitriou
        },
216 0156e40c Kostas Papadimitriou
        'dashboard': {
217 0156e40c Kostas Papadimitriou
            'show': True,
218 0156e40c Kostas Papadimitriou
            'order': 1000,
219 0156e40c Kostas Papadimitriou
            'description': '%s service' % service_name
220 0156e40c Kostas Papadimitriou
        }
221 0156e40c Kostas Papadimitriou
    }
222 0156e40c Kostas Papadimitriou
223 0156e40c Kostas Papadimitriou
224 bea584e1 Giorgos Korfiatis
COMPONENTS = {
225 0156e40c Kostas Papadimitriou
    'astakos': {
226 0156e40c Kostas Papadimitriou
        'order': 1,
227 0156e40c Kostas Papadimitriou
        'dashboard': {
228 0156e40c Kostas Papadimitriou
            'order': 3,
229 0156e40c Kostas Papadimitriou
            'show': True,
230 0156e40c Kostas Papadimitriou
            'description': "Access the dashboard from the top right corner "
231 0156e40c Kostas Papadimitriou
                           "of your screen. Here you can manage your profile, "
232 0156e40c Kostas Papadimitriou
                           "see the usage of your resources and manage "
233 0156e40c Kostas Papadimitriou
                           "projects to share virtual resources with "
234 0156e40c Kostas Papadimitriou
                           "colleagues."
235 0156e40c Kostas Papadimitriou
        },
236 0156e40c Kostas Papadimitriou
        'cloudbar': {
237 0156e40c Kostas Papadimitriou
            'show': False
238 0156e40c Kostas Papadimitriou
        }
239 0156e40c Kostas Papadimitriou
    },
240 0156e40c Kostas Papadimitriou
    'pithos': {
241 0156e40c Kostas Papadimitriou
        'order': 2,
242 0156e40c Kostas Papadimitriou
        'dashboard': {
243 0156e40c Kostas Papadimitriou
            'order': 1,
244 0156e40c Kostas Papadimitriou
            'show': True,
245 0156e40c Kostas Papadimitriou
            'description': "Pithos is the File Storage service. "
246 0156e40c Kostas Papadimitriou
                           "Click to start uploading and managing your "
247 0156e40c Kostas Papadimitriou
                           "files on the cloud."
248 0156e40c Kostas Papadimitriou
        },
249 0156e40c Kostas Papadimitriou
        'cloudbar': {
250 0156e40c Kostas Papadimitriou
            'show': True
251 0156e40c Kostas Papadimitriou
        }
252 0156e40c Kostas Papadimitriou
    },
253 0156e40c Kostas Papadimitriou
    'cyclades': {
254 0156e40c Kostas Papadimitriou
        'order': 3,
255 0156e40c Kostas Papadimitriou
        'dashboard': {
256 0156e40c Kostas Papadimitriou
            'order': 2,
257 0156e40c Kostas Papadimitriou
            'show': True,
258 0156e40c Kostas Papadimitriou
            'description': "Cyclades is the Compute and Network Service. "
259 0156e40c Kostas Papadimitriou
                           "Click to start creating Virtual Machines and "
260 0156e40c Kostas Papadimitriou
                           "connect them to arbitrary Networks."
261 0156e40c Kostas Papadimitriou
        },
262 0156e40c Kostas Papadimitriou
        'cloudbar': {
263 0156e40c Kostas Papadimitriou
            'show': True
264 0156e40c Kostas Papadimitriou
        }
265 0156e40c Kostas Papadimitriou
    }
266 0156e40c Kostas Papadimitriou
}
267 251b83be Giorgos Korfiatis
268 251b83be Giorgos Korfiatis
269 251b83be Giorgos Korfiatis
PROJECT_MEMBER_JOIN_POLICIES = {
270 251b83be Giorgos Korfiatis
    1: 'automatically accepted',
271 251b83be Giorgos Korfiatis
    2: 'owner accepts',
272 251b83be Giorgos Korfiatis
    3: 'closed',
273 251b83be Giorgos Korfiatis
}
274 251b83be Giorgos Korfiatis
275 251b83be Giorgos Korfiatis
276 251b83be Giorgos Korfiatis
PROJECT_MEMBER_LEAVE_POLICIES = {
277 251b83be Giorgos Korfiatis
    1: 'automatically accepted',
278 251b83be Giorgos Korfiatis
    2: 'owner accepts',
279 251b83be Giorgos Korfiatis
    3: 'closed',
280 251b83be Giorgos Korfiatis
}