예제 #1
0
class UpdateTenant(forms.SelfHandlingForm):
    id = forms.CharField(
        label=_("ID"), widget=forms.TextInput(attrs={'readonly': 'readonly'}))
    name = forms.CharField(
        label=_("Name"),
        widget=forms.TextInput(attrs={'readonly': 'readonly'}))
    description = forms.CharField(widget=forms.widgets.Textarea(),
                                  label=_("Description"))
    enabled = forms.BooleanField(required=False, label=_("Enabled"))

    def handle(self, request, data):
        try:
            LOG.info('Updating tenant with id "%s"' % data['id'])
            api.tenant_update(request, data['id'], data['name'],
                              data['description'], data['enabled'])
            messages.success(request,
                             _('%s was successfully updated.') % data['name'])
        except api_exceptions.ApiException, e:
            LOG.exception(
                'ApiException while updating tenant\n'
                'Id: "%s", Name: "%s", Description: "%s", Enabled "%s"' %
                (data['id'], data['name'], data['description'],
                 data['enabled']))
            messages.error(request,
                           _('Unable to update tenant: %s') % e.message)
        return redirect('syspanel_tenants')
예제 #2
0
class FloatingIpAssociate(forms.SelfHandlingForm):
    floating_ip_id = forms.CharField(widget=forms.HiddenInput())
    floating_ip = forms.CharField(widget=forms.TextInput(
        attrs={'readonly': 'readonly'}))
    instance_id = forms.ChoiceField()

    def __init__(self, *args, **kwargs):
        super(FloatingIpAssociate, self).__init__(*args, **kwargs)
        instancelist = kwargs.get('initial', {}).get('instances', [])
        self.fields['instance_id'] = forms.ChoiceField(choices=instancelist,
                                                       label="Instance")

    def handle(self, request, data):
        try:
            api.server_add_floating_ip(request, data['instance_id'],
                                       data['floating_ip_id'])
            LOG.info('Associating Floating IP "%s" with Instance "%s"' %
                     (data['floating_ip'], data['instance_id']))
            messages.info(
                request, 'Successfully associated Floating IP: %s \
                                    with Instance: %s' %
                (data['floating_ip'], data['instance_id']))
        except novaclient_exceptions.ClientException, e:
            LOG.error("ClientException in FloatingIpAssociate", exc_info=True)
            messages.error(request,
                           'Error associating Floating IP: %s' % e.message)
        return shortcuts.redirect('dash_floating_ips', request.user.tenant)
예제 #3
0
class CreateSnapshot(forms.SelfHandlingForm):
    tenant_id = forms.CharField(widget=forms.HiddenInput())
    instance_id = forms.CharField(widget=forms.TextInput(
        attrs={'readonly': 'readonly'}))
    name = forms.CharField(max_length="20", label=_("Snapshot Name"))

    def handle(self, request, data):
        try:
            LOG.info('Creating snapshot "%s"' % data['name'])
            snapshot = api.snapshot_create(request, data['instance_id'],
                                           data['name'])
            instance = api.server_get(request, data['instance_id'])

            messages.info(
                request,
                _('Snapshot "%(name)s" created for instance "%(inst)s"') % {
                    "name": data['name'],
                    "inst": instance.name
                })
            return shortcuts.redirect('dash_snapshots', data['tenant_id'])
        except api_exceptions.ApiException, e:
            msg = _('Error Creating Snapshot: %s') % e.message
            LOG.exception(msg)
            messages.error(request, msg)
            return shortcuts.redirect(request.build_absolute_uri())
예제 #4
0
class UpdateQuotas(forms.SelfHandlingForm):
    tenant_id = forms.CharField(label="ID (name)",
            widget=forms.TextInput(attrs={'readonly': 'readonly'}))
    metadata_items = forms.CharField(label="Metadata Items")
    injected_files = forms.CharField(label="Injected Files")
    injected_file_content_bytes = forms.CharField(label="Injected File "
                                                        "Content Bytes")
    cores = forms.CharField(label="VCPUs")
    instances = forms.CharField(label="Instances")
    volumes = forms.CharField(label="Volumes")
    gigabytes = forms.CharField(label="Gigabytes")
    ram = forms.CharField(label="RAM (in MB)")
    floating_ips = forms.CharField(label="Floating IPs")

    def handle(self, request, data):
        try:
            api.admin_api(request).quota_sets.update(data['tenant_id'],
               metadata_items=data['metadata_items'],
               injected_file_content_bytes=data['injected_file_content_bytes'],
               volumes=data['volumes'],
               gigabytes=data['gigabytes'],
               ram=int(data['ram']) * 100,
               floating_ips=data['floating_ips'],
               instances=data['instances'],
               injected_files=data['injected_files'],
               cores=data['cores'],
            )
            messages.success(request,
                             'Quotas for %s were successfully updated.'
                             % data['tenant_id'])
        except api_exceptions.ApiException, e:
            messages.error(request, 'Unable to update quotas: %s' % e.message)
        return redirect('syspanel_tenants')
예제 #5
0
파일: views.py 프로젝트: yuzawataka/colony
class LoginWithTenant(Login):
    username = forms.CharField(
        max_length="255",
        widget=forms.TextInput(attrs={'readonly': 'readonly'}))
    tenant = forms.CharField(widget=forms.HiddenInput())

    def handle(self, request, data):
        tenant = data['tenant']
        region = request.session.get('region', None)
        token = util.auth(request, data, region)
        if not token:
            return None
        if not tenant:
            return shortcuts.redirect('dash_startup')
        return shortcuts.redirect('dash_containers', tenant)
예제 #6
0
파일: users.py 프로젝트: yuzawataka/colony
class UserUpdateForm(forms.Form):
    def __init__(self, *args, **kwargs):
        tenant_list = kwargs.pop('tenant_list', None)
        super(UserUpdateForm, self).__init__(*args, **kwargs)
        self.fields['tenant_id'].choices = [[tenant.id, tenant.name]
                for tenant in tenant_list]

    id = forms.CharField(label="ID",
            widget=forms.TextInput(attrs={'readonly': 'readonly'}))
    # FIXME: keystone doesn't return the username from a get API call.
    #name = forms.CharField(label="Name")
    email = forms.CharField(label="Email")
    password = forms.CharField(label="Password",
                               widget=forms.PasswordInput(render_value=False),
                               required=False)
    tenant_id = forms.ChoiceField(label="Primary Tenant")
예제 #7
0
파일: views.py 프로젝트: yuzawataka/colony
class LoginWithRegion(Login):
    username = forms.CharField(
        max_length="255",
        widget=forms.TextInput(attrs={'readonly': 'readonly'}))
    region = forms.CharField(widget=forms.HiddenInput())

    def handle(self, request, data):
        token = util.auth(request, data, data['region'])
        if not token:
            return None
        request.session['region'] = data['region']
        util.set_default_for_region(request)
        tenant = util.get_tenant_for_region(request)
        api.check_services_for_region(request)
        if not tenant:
            return shortcuts.redirect('dash_startup')
        return shortcuts.redirect('dash_containers', tenant)
예제 #8
0
class UpdateInstance(forms.SelfHandlingForm):
    tenant_id = forms.CharField(widget=forms.HiddenInput())
    instance = forms.CharField(widget=forms.TextInput(
        attrs={'readonly': 'readonly'}))
    name = forms.CharField(required=True)
    description = forms.CharField(required=False)

    def handle(self, request, data):
        tenant_id = data['tenant_id']
        description = data.get('description', '')
        try:
            api.server_update(request, data['instance'], data['name'],
                              description)
            messages.success(request, "Instance '%s' updated" % data['name'])
        except api_exceptions.ApiException, e:
            messages.error(request,
                           'Unable to update instance: %s' % e.message)

        return shortcuts.redirect('dash_instances', tenant_id)
예제 #9
0
파일: views.py 프로젝트: Lezval/horizon
class LoginWithTenant(Login):
    username = forms.CharField(max_length="20",
                       widget=forms.TextInput(attrs={'readonly': 'readonly'}))
    tenant = forms.CharField(widget=forms.HiddenInput())