~ubuntu-branches/ubuntu/quantal/horizon/quantal-security

« back to all changes in this revision

Viewing changes to horizon/dashboards/nova/networks/forms.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2012-03-09 11:50:22 UTC
  • mfrom: (1.1.9)
  • Revision ID: package-import@ubuntu.com-20120309115022-ymiww5i58rbg97my
Tags: 2012.1~rc1~20120308.1479-0ubuntu1
* New upstream version.
* debian/rules: Fix symlink when installing horizon.
  (LP: #947118)
* debian/control: Add python-django-nose as a dep. (LP: #944235)
* debian/control: Fix broken depends.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
 
 
3
 
# Copyright 2012 United States Government as represented by the
4
 
# Administrator of the National Aeronautics and Space Administration.
5
 
# All Rights Reserved.
6
 
#
7
 
# Copyright 2012 Nebula, Inc.
8
 
#
9
 
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
10
 
#    not use this file except in compliance with the License. You may obtain
11
 
#    a copy of the License at
12
 
#
13
 
#         http://www.apache.org/licenses/LICENSE-2.0
14
 
#
15
 
#    Unless required by applicable law or agreed to in writing, software
16
 
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17
 
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18
 
#    License for the specific language governing permissions and limitations
19
 
#    under the License.
20
 
 
21
 
import logging
22
 
 
23
 
from django import shortcuts
24
 
from django.contrib import messages
25
 
from django.utils.translation import ugettext as _
26
 
 
27
 
from horizon import api
28
 
from horizon import exceptions
29
 
from horizon import forms
30
 
 
31
 
 
32
 
LOG = logging.getLogger(__name__)
33
 
 
34
 
 
35
 
class CreateNetwork(forms.SelfHandlingForm):
36
 
    name = forms.CharField(required=True, label=_("Network Name"))
37
 
 
38
 
    def handle(self, request, data):
39
 
        network_name = data['name']
40
 
        try:
41
 
            data = {'network': {'name': network_name}}
42
 
            api.quantum.quantum_create_network(request, data)
43
 
            messages.success(request,
44
 
                             _('Network %s has been created.') % network_name)
45
 
        except:
46
 
            exceptions.handle(request, _("Unable to create network."))
47
 
        return shortcuts.redirect('horizon:nova:networks:index')
48
 
 
49
 
 
50
 
class RenameNetwork(forms.SelfHandlingForm):
51
 
    network = forms.CharField(widget=forms.HiddenInput())
52
 
    new_name = forms.CharField(required=True)
53
 
 
54
 
    def handle(self, request, data):
55
 
        try:
56
 
            LOG.info('Renaming network %s to %s' %
57
 
                     (data['network'], data['new_name']))
58
 
            send_data = {'network': {'name': '%s' % data['new_name']}}
59
 
            api.quantum_update_network(request, data['network'], send_data)
60
 
        except Exception, e:
61
 
            if not hasattr(e, 'message'):
62
 
                e.message = str(e)
63
 
            messages.error(request,
64
 
                    _('Unable to rename network %(network)s: %(msg)s') %
65
 
                    {"network": data['network'], "msg": e.message})
66
 
        else:
67
 
            msg = _('Network %(net)s has been renamed to %(new_name)s.') % {
68
 
                  "net": data['network'], "new_name": data['new_name']}
69
 
            LOG.info(msg)
70
 
            messages.success(request, msg)
71
 
 
72
 
        return shortcuts.redirect('horizon:nova:networks:index')
73
 
 
74
 
 
75
 
class CreatePort(forms.SelfHandlingForm):
76
 
    network = forms.CharField(widget=forms.HiddenInput())
77
 
    ports_num = forms.IntegerField(required=True, label=_("Number of Ports"))
78
 
 
79
 
    def handle(self, request, data):
80
 
        try:
81
 
            LOG.info('Creating %s ports on network %s' %
82
 
                     (data['ports_num'], data['network']))
83
 
            for i in range(0, data['ports_num']):
84
 
                api.quantum_create_port(request, data['network'])
85
 
        except Exception, e:
86
 
            if not hasattr(e, 'message'):
87
 
                e.message = str(e)
88
 
            messages.error(request,
89
 
                _('Unable to create ports on network %(network)s: %(msg)s') %
90
 
                {"network": data['network'], "msg": e.message})
91
 
        else:
92
 
            msg = _('%(num_ports)s ports created on network %(network)s.') % {
93
 
                  "num_ports": data['ports_num'], "network": data['network']}
94
 
            LOG.info(msg)
95
 
            messages.success(request, msg)
96
 
 
97
 
        return shortcuts.redirect('horizon:nova:networks:detail',
98
 
                                  network_id=data['network'])
99
 
 
100
 
 
101
 
class AttachPort(forms.SelfHandlingForm):
102
 
    network = forms.CharField(widget=forms.HiddenInput())
103
 
    port = forms.CharField(widget=forms.HiddenInput())
104
 
    vif_id = forms.ChoiceField(label=_("Select VIF to connect"))
105
 
 
106
 
    def __init__(self, request, *args, **kwargs):
107
 
        super(AttachPort, self).__init__(*args, **kwargs)
108
 
        # Populate VIF choices
109
 
        vif_choices = [('', "Select a VIF")]
110
 
        for vif in api.get_vif_ids(request):
111
 
            if vif['available']:
112
 
                name = "Instance %s VIF %s" % (vif['instance_name'], vif['id'])
113
 
                vif_choices.append((vif['id'], name,))
114
 
        self.fields['vif_id'].choices = vif_choices
115
 
 
116
 
    @classmethod
117
 
    def _instantiate(cls, request, *args, **kwargs):
118
 
        return cls(request, *args, **kwargs)
119
 
 
120
 
    def handle(self, request, data):
121
 
        try:
122
 
            body = {'attachment': {'id': '%s' % data['vif_id']}}
123
 
            api.quantum_attach_port(request,
124
 
                                    data['network'],
125
 
                                    data['port'],
126
 
                                    body)
127
 
            messages.success(request, _("Port attached."))
128
 
        except:
129
 
            exceptions.handle(request, _('Unable to attach port.'))
130
 
        return shortcuts.redirect("horizon:nova:networks:detail",
131
 
                                  data['network'])