Revision f019f93d snf-cyclades-app/synnefo/ui/views.py
b/snf-cyclades-app/synnefo/ui/views.py | ||
---|---|---|
34 | 34 |
|
35 | 35 |
import os |
36 | 36 |
|
37 |
from urlparse import urlparse |
|
38 |
|
|
39 | 37 |
from django.conf import settings |
40 | 38 |
from django.utils.translation import gettext_lazy as _ |
41 | 39 |
from django.template import loader |
... | ... | |
45 | 43 |
from synnefo_branding.utils import render_to_string |
46 | 44 |
from django.core.urlresolvers import reverse |
47 | 45 |
from django.template import RequestContext |
48 |
from synnefo_branding import settings as snf_settings |
|
49 | 46 |
|
50 | 47 |
from synnefo.util.version import get_component_version |
51 |
from synnefo.lib import join_urls |
|
52 | 48 |
|
53 |
from synnefo import cyclades_settings |
|
54 | 49 |
from synnefo.ui import settings as uisettings |
55 | 50 |
|
56 | 51 |
SYNNEFO_JS_LIB_VERSION = get_component_version('app') |
... | ... | |
101 | 96 |
# Additional settings |
102 | 97 |
VM_NAME_TEMPLATE = getattr(settings, "VM_CREATE_NAME_TPL", "My {0} server") |
103 | 98 |
VM_HOSTNAME_FORMAT = getattr(settings, "UI_VM_HOSTNAME_FORMAT", |
104 |
'snf-%(id)s.vm.synnefo.org')
|
|
99 |
'snf-%(id)s.vm.synnefo.org') |
|
105 | 100 |
|
106 | 101 |
if isinstance(VM_HOSTNAME_FORMAT, basestring): |
107 | 102 |
VM_HOSTNAME_FORMAT = VM_HOSTNAME_FORMAT % {'id': '{0}'} |
... | ... | |
173 | 168 |
current_template = template_path + name + '.html' |
174 | 169 |
t = loader.get_template(current_template) |
175 | 170 |
media_context = { |
176 |
'UI_MEDIA_URL': UI_MEDIA_URL, |
|
177 |
'SYNNEFO_JS_URL': UI_SYNNEFO_JS_URL, |
|
178 |
'SYNNEFO_JS_LIB_URL': UI_SYNNEFO_JS_LIB_URL, |
|
179 |
'SYNNEFO_JS_WEB_URL': UI_SYNNEFO_JS_WEB_URL, |
|
180 |
'SYNNEFO_IMAGES_URL': UI_SYNNEFO_IMAGES_URL, |
|
181 |
'SYNNEFO_CSS_URL': UI_SYNNEFO_CSS_URL, |
|
182 |
'SYNNEFO_JS_LIB_VERSION': SYNNEFO_JS_LIB_VERSION, |
|
183 |
'DEBUG': settings.DEBUG |
|
171 |
'UI_MEDIA_URL': UI_MEDIA_URL,
|
|
172 |
'SYNNEFO_JS_URL': UI_SYNNEFO_JS_URL,
|
|
173 |
'SYNNEFO_JS_LIB_URL': UI_SYNNEFO_JS_LIB_URL,
|
|
174 |
'SYNNEFO_JS_WEB_URL': UI_SYNNEFO_JS_WEB_URL,
|
|
175 |
'SYNNEFO_IMAGES_URL': UI_SYNNEFO_IMAGES_URL,
|
|
176 |
'SYNNEFO_CSS_URL': UI_SYNNEFO_CSS_URL,
|
|
177 |
'SYNNEFO_JS_LIB_VERSION': SYNNEFO_JS_LIB_VERSION,
|
|
178 |
'DEBUG': settings.DEBUG
|
|
184 | 179 |
} |
185 | 180 |
context.update(media_context) |
186 | 181 |
return HttpResponse(t.render(RequestContext(request, context))) |
187 | 182 |
|
188 | 183 |
|
189 | 184 |
def home(request): |
190 |
context = {'timeout': TIMEOUT, |
|
191 |
'project': '+nefo', |
|
192 |
'request': request, |
|
193 |
'current_lang': get_language() or 'en', |
|
194 |
'compute_api_url': json.dumps(uisettings.COMPUTE_URL), |
|
195 |
'user_catalog_url': json.dumps(uisettings.USER_CATALOG_URL), |
|
196 |
'feedback_post_url': json.dumps(uisettings.FEEDBACK_URL), |
|
197 |
'accounts_api_url': json.dumps(uisettings.ACCOUNT_URL), |
|
198 |
'logout_redirect': json.dumps(uisettings.LOGOUT_REDIRECT), |
|
199 |
'login_redirect': json.dumps(uisettings.LOGIN_URL), |
|
200 |
'glance_api_url': json.dumps(uisettings.GLANCE_URL), |
|
201 |
'translate_uuids': json.dumps(True), |
|
202 |
# update interval settings |
|
203 |
'update_interval': UPDATE_INTERVAL, |
|
204 |
'update_interval_increase': UPDATE_INTERVAL_INCREASE, |
|
205 |
'update_interval_increase_after_calls': |
|
206 |
UPDATE_INTERVAL_INCREASE_AFTER_CALLS_COUNT, |
|
207 |
'update_interval_fast': UPDATE_INTERVAL_FAST, |
|
208 |
'update_interval_max': UPDATE_INTERVAL_MAX, |
|
209 |
'changes_since_alignment': CHANGES_SINCE_ALIGNMENT, |
|
210 |
'image_icons': IMAGE_ICONS, |
|
211 |
'auth_cookie_name': AUTH_COOKIE_NAME, |
|
212 |
'auth_skip_redirects': json.dumps(AUTH_SKIP_REDIRECTS), |
|
213 |
'suggested_flavors': json.dumps(SUGGESTED_FLAVORS), |
|
214 |
'suggested_roles': json.dumps(SUGGESTED_ROLES), |
|
215 |
'vm_image_common_metadata': json.dumps(VM_IMAGE_COMMON_METADATA), |
|
216 |
'synnefo_version': SYNNEFO_JS_LIB_VERSION, |
|
217 |
'delay_on_blur': json.dumps(DELAY_ON_BLUR), |
|
218 |
'update_hidden_views': json.dumps(UPDATE_HIDDEN_VIEWS), |
|
219 |
'handle_window_exceptions': json.dumps(HANDLE_WINDOW_EXCEPTIONS), |
|
220 |
'skip_timeouts': json.dumps(SKIP_TIMEOUTS), |
|
221 |
'vm_name_template': json.dumps(VM_NAME_TEMPLATE), |
|
222 |
'flavors_disk_templates_info': |
|
223 |
json.dumps(FLAVORS_DISK_TEMPLATES_INFO), |
|
224 |
'support_ssh_os_list': json.dumps(SUPPORT_SSH_OS_LIST), |
|
225 |
'unknown_os': json.dumps(UNKNOWN_OS), |
|
226 |
'os_created_users': json.dumps(OS_CREATED_USERS), |
|
227 |
'userdata_keys_limit': json.dumps(MAX_SSH_KEYS_PER_USER), |
|
228 |
'use_glance': json.dumps(ENABLE_GLANCE), |
|
229 |
'system_images_owners': json.dumps(SYSTEM_IMAGES_OWNERS), |
|
230 |
'custom_image_help_url': CUSTOM_IMAGE_HELP_URL, |
|
231 |
'image_deleted_title': json.dumps(IMAGE_DELETED_TITLE), |
|
232 |
'image_deleted_size_title': json.dumps(IMAGE_DELETED_SIZE_TITLE), |
|
233 |
'network_suggested_subnets': json.dumps(NETWORK_SUBNETS), |
|
234 |
'network_available_types': json.dumps(NETWORK_TYPES), |
|
235 |
'network_allow_duplicate_vm_nics': |
|
236 |
json.dumps(NETWORK_DUPLICATE_NICS), |
|
237 |
'network_strict_destroy': json.dumps(NETWORK_STRICT_DESTROY), |
|
238 |
'network_allow_multiple_destroy': |
|
239 |
json.dumps(NETWORK_ALLOW_MULTIPLE_DESTROY), |
|
240 |
'automatic_network_range_format': |
|
241 |
json.dumps(AUTOMATIC_NETWORK_RANGE_FORMAT), |
|
242 |
'grouped_public_network_name': |
|
243 |
json.dumps(GROUPED_PUBLIC_NETWORK_NAME), |
|
244 |
'group_public_networks': json.dumps(GROUP_PUBLIC_NETWORKS), |
|
245 |
'private_networks_nic_hotplug': |
|
246 |
json.dumps(PRIVATE_NETWORKS_NIC_HOTPLUG), |
|
247 |
'diagnostics_update_interval': |
|
248 |
json.dumps(DIAGNOSTICS_UPDATE_INTERVAL), |
|
249 |
'vm_hostname_format': json.dumps(VM_HOSTNAME_FORMAT) |
|
250 |
} |
|
185 |
context = { |
|
186 |
'timeout': TIMEOUT, |
|
187 |
'project': '+nefo', |
|
188 |
'request': request, |
|
189 |
'current_lang': get_language() or 'en', |
|
190 |
'compute_api_url': json.dumps(uisettings.COMPUTE_URL), |
|
191 |
'user_catalog_url': json.dumps(uisettings.USER_CATALOG_URL), |
|
192 |
'feedback_post_url': json.dumps(uisettings.FEEDBACK_URL), |
|
193 |
'accounts_api_url': json.dumps(uisettings.ACCOUNT_URL), |
|
194 |
'logout_redirect': json.dumps(uisettings.LOGOUT_REDIRECT), |
|
195 |
'login_redirect': json.dumps(uisettings.LOGIN_URL), |
|
196 |
'glance_api_url': json.dumps(uisettings.GLANCE_URL), |
|
197 |
'translate_uuids': json.dumps(True), |
|
198 |
# update interval settings |
|
199 |
'update_interval': UPDATE_INTERVAL, |
|
200 |
'update_interval_increase': UPDATE_INTERVAL_INCREASE, |
|
201 |
'update_interval_increase_after_calls': |
|
202 |
UPDATE_INTERVAL_INCREASE_AFTER_CALLS_COUNT, |
|
203 |
'update_interval_fast': UPDATE_INTERVAL_FAST, |
|
204 |
'update_interval_max': UPDATE_INTERVAL_MAX, |
|
205 |
'changes_since_alignment': CHANGES_SINCE_ALIGNMENT, |
|
206 |
'image_icons': IMAGE_ICONS, |
|
207 |
'auth_cookie_name': AUTH_COOKIE_NAME, |
|
208 |
'auth_skip_redirects': json.dumps(AUTH_SKIP_REDIRECTS), |
|
209 |
'suggested_flavors': json.dumps(SUGGESTED_FLAVORS), |
|
210 |
'suggested_roles': json.dumps(SUGGESTED_ROLES), |
|
211 |
'vm_image_common_metadata': json.dumps(VM_IMAGE_COMMON_METADATA), |
|
212 |
'synnefo_version': SYNNEFO_JS_LIB_VERSION, |
|
213 |
'delay_on_blur': json.dumps(DELAY_ON_BLUR), |
|
214 |
'update_hidden_views': json.dumps(UPDATE_HIDDEN_VIEWS), |
|
215 |
'handle_window_exceptions': json.dumps(HANDLE_WINDOW_EXCEPTIONS), |
|
216 |
'skip_timeouts': json.dumps(SKIP_TIMEOUTS), |
|
217 |
'vm_name_template': json.dumps(VM_NAME_TEMPLATE), |
|
218 |
'flavors_disk_templates_info': json.dumps(FLAVORS_DISK_TEMPLATES_INFO), |
|
219 |
'support_ssh_os_list': json.dumps(SUPPORT_SSH_OS_LIST), |
|
220 |
'unknown_os': json.dumps(UNKNOWN_OS), |
|
221 |
'os_created_users': json.dumps(OS_CREATED_USERS), |
|
222 |
'userdata_keys_limit': json.dumps(MAX_SSH_KEYS_PER_USER), |
|
223 |
'use_glance': json.dumps(ENABLE_GLANCE), |
|
224 |
'system_images_owners': json.dumps(SYSTEM_IMAGES_OWNERS), |
|
225 |
'custom_image_help_url': CUSTOM_IMAGE_HELP_URL, |
|
226 |
'image_deleted_title': json.dumps(IMAGE_DELETED_TITLE), |
|
227 |
'image_deleted_size_title': json.dumps(IMAGE_DELETED_SIZE_TITLE), |
|
228 |
'network_suggested_subnets': json.dumps(NETWORK_SUBNETS), |
|
229 |
'network_available_types': json.dumps(NETWORK_TYPES), |
|
230 |
'network_allow_duplicate_vm_nics': json.dumps(NETWORK_DUPLICATE_NICS), |
|
231 |
'network_strict_destroy': json.dumps(NETWORK_STRICT_DESTROY), |
|
232 |
'network_allow_multiple_destroy': |
|
233 |
json.dumps(NETWORK_ALLOW_MULTIPLE_DESTROY), |
|
234 |
'automatic_network_range_format': |
|
235 |
json.dumps(AUTOMATIC_NETWORK_RANGE_FORMAT), |
|
236 |
'grouped_public_network_name': json.dumps(GROUPED_PUBLIC_NETWORK_NAME), |
|
237 |
'group_public_networks': json.dumps(GROUP_PUBLIC_NETWORKS), |
|
238 |
'private_networks_nic_hotplug': |
|
239 |
json.dumps(PRIVATE_NETWORKS_NIC_HOTPLUG), |
|
240 |
'diagnostics_update_interval': json.dumps(DIAGNOSTICS_UPDATE_INTERVAL), |
|
241 |
'vm_hostname_format': json.dumps(VM_HOSTNAME_FORMAT) |
|
242 |
} |
|
251 | 243 |
return template('home', request, context) |
252 | 244 |
|
245 |
|
|
253 | 246 |
def machines_console(request): |
254 | 247 |
host, port, password = ('', '', '') |
255 | 248 |
host = request.GET.get('host', '') |
... | ... | |
259 | 252 |
host_ip = request.GET.get('host_ip', '') |
260 | 253 |
host_ip_v6 = request.GET.get('host_ip_v6', '') |
261 | 254 |
context = {'host': host, 'port': port, 'password': password, |
262 |
'machine': machine, 'host_ip': host_ip, 'host_ip_v6': host_ip_v6} |
|
255 |
'machine': machine, 'host_ip': host_ip, |
|
256 |
'host_ip_v6': host_ip_v6} |
|
263 | 257 |
return template('machines_console', request, context) |
264 | 258 |
|
265 | 259 |
|
... | ... | |
278 | 272 |
<a target="_blank" |
279 | 273 |
href="http://en.wikipedia.org/wiki/Remote_Desktop_Services"> |
280 | 274 |
Remote Desktop Service</a>. |
281 |
To do so, open the following file with an appropriate remote desktop client.""") |
|
275 |
To do so, open the following file with an appropriate \ |
|
276 |
remote desktop client.""") |
|
282 | 277 |
CONNECT_LINUX_WINDOWS_SUBMESSAGE = \ |
283 | 278 |
_("""If you don't have a Remote Desktop client already installed, |
284 | 279 |
we suggest the use of <a target="_blank" |
... | ... | |
389 | 384 |
'ip_address': ip_address, |
390 | 385 |
'hostname': hostname, |
391 | 386 |
'user': username |
392 |
}
|
|
387 |
} |
|
393 | 388 |
|
394 | 389 |
rdp_context = { |
395 | 390 |
'username': username, |
... | ... | |
454 | 449 |
mimetype='application/json') # no windows, no rdp |
455 | 450 |
|
456 | 451 |
return response |
457 |
|
Also available in: Unified diff