diff options
Diffstat (limited to 'horizon/horizon/dashboards/nova/security_groups/views.py')
-rw-r--r-- | horizon/horizon/dashboards/nova/security_groups/views.py | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/horizon/horizon/dashboards/nova/security_groups/views.py b/horizon/horizon/dashboards/nova/security_groups/views.py new file mode 100644 index 00000000..9d6530c4 --- /dev/null +++ b/horizon/horizon/dashboards/nova/security_groups/views.py @@ -0,0 +1,103 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2011 United States Government as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All Rights Reserved. +# +# Copyright 2011 Nebula, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +""" +Views for managing Nova instances. +""" +import logging + +from django.contrib import messages +from django.contrib.auth.decorators import login_required +from django import shortcuts +from django.utils.translation import ugettext as _ +from novaclient import exceptions as novaclient_exceptions + +from horizon import api +from horizon.dashboards.nova.security_groups.forms import (CreateGroup, + DeleteGroup, AddRule, DeleteRule) + + +LOG = logging.getLogger(__name__) + + +@login_required +def index(request): + tenant_id = request.user.tenant_id + delete_form, handled = DeleteGroup.maybe_handle(request, + initial={'tenant_id': tenant_id}) + + if handled: + return handled + + try: + security_groups = api.security_group_list(request) + except novaclient_exceptions.ClientException, e: + security_groups = [] + LOG.exception("ClientException in security_groups index") + messages.error(request, _('Error fetching security_groups: %s') + % e.message) + + return shortcuts.render(request, + 'nova/security_groups/index.html', { + 'security_groups': security_groups, + 'delete_form': delete_form}) + + +@login_required +def edit_rules(request, security_group_id): + tenant_id = request.user.tenant_id + add_form, handled = AddRule.maybe_handle(request, + initial={'tenant_id': tenant_id, + 'security_group_id': security_group_id}) + if handled: + return handled + + delete_form, handled = DeleteRule.maybe_handle(request, + initial={'tenant_id': tenant_id, + 'security_group_id': security_group_id}) + if handled: + return handled + + try: + security_group = api.security_group_get(request, security_group_id) + except novaclient_exceptions.ClientException, e: + LOG.exception("ClientException in security_groups rules edit") + messages.error(request, _('Error getting security_group: %s') + % e.message) + return shortcuts.redirect('horizon:nova:security_groups:index') + + return shortcuts.render(request, + 'nova/security_groups/edit_rules.html', { + 'security_group': security_group, + 'delete_form': delete_form, + 'form': add_form}) + + +@login_required +def create(request): + tenant_id = request.user.tenant_id + form, handled = CreateGroup.maybe_handle(request, + initial={'tenant_id': tenant_id}) + if handled: + return handled + + return shortcuts.render(request, + 'nova/security_groups/create.html', { + 'form': form}) |