Beispiel #1
0
    def clean(self):
        cleaned_data = super(CreateFlavorInfoAction, self).clean()
        name = cleaned_data.get('name')
        flavor_id = cleaned_data.get('flavor_id')

        try:
            flavors = api.nova.flavor_list(self.request, None)
        except Exception:
            flavors = []
            msg = _('Unable to get flavor list')
            exceptions.check_message(["Connection", "refused"], msg)
            raise
        if flavors is not None:
            for flavor in flavors:
                if flavor.name == name:
                    raise forms.ValidationError(
                        _('The name "%s" is already used by another flavor.')
                        % name
                    )
                if flavor.id == flavor_id:
                    raise forms.ValidationError(
                        _('The ID "%s" is already used by another flavor.')
                        % flavor_id
                    )
        return cleaned_data
Beispiel #2
0
    def clean(self):
        cleaned_data = super(AddCGroupInfoAction, self).clean()
        name = cleaned_data.get('name')

        try:
            cgroups = cinder.volume_cgroup_list(self.request)
        except Exception:
            msg = _('Unable to get consistency group list')
            exceptions.check_message(["Connection", "refused"], msg)
            raise

        if cgroups is not None and name is not None:
            for cgroup in cgroups:
                if cgroup.name.lower() == name.lower():
                    # ensure new name has reasonable length
                    formatted_name = name
                    if len(name) > 20:
                        formatted_name = name[:14] + "..." + name[-3:]
                    raise forms.ValidationError(
                        _('The name "%s" is already used by '
                          'another consistency group.')
                        % formatted_name
                    )

        return cleaned_data
Beispiel #3
0
    def clean(self):
        cleaned_data = super(CreateFlavorInfoAction, self).clean()
        name = cleaned_data.get('name')
        flavor_id = cleaned_data.get('flavor_id')

        try:
            flavors = api.nova.flavor_list(self.request, None)
        except Exception:
            flavors = []
            msg = _('Unable to get flavor list')
            exceptions.check_message(["Connection", "refused"], msg)
            raise
        if flavors is not None:
            for flavor in flavors:
                if flavor.name == name:
                    raise forms.ValidationError(
                        _('The name "%s" is already used by another flavor.')
                        % name
                    )
                if flavor.id == flavor_id:
                    raise forms.ValidationError(
                        _('The ID "%s" is already used by another flavor.')
                        % flavor_id
                    )
        return cleaned_data
Beispiel #4
0
    def clean(self):
        cleaned_data = super(ResourceClassInfoAndFlavorsAction,
                             self).clean()

        name = cleaned_data.get('name')
        resource_class_id = self.initial.get('resource_class_id', None)
        try:
            resource_classes = tuskar.ResourceClass.list(self.request)
        except Exception:
            resource_classes = []
            msg = _('Unable to get resource class list')
            exceptions.check_message(["Connection", "refused"], msg)
            raise
        for resource_class in resource_classes:
            if resource_class.name == name and \
                    resource_class_id != resource_class.id:
                raise forms.ValidationError(
                    _('The name "%s" is already used by'
                      ' another resource class.')
                    % name
                )
        formset = self.initial.get('_formsets', {}).get('flavors')
        if formset:
            if formset.is_valid():
                cleaned_data['flavors'] = [form.cleaned_data
                                           for form in formset
                                           if form.cleaned_data
                                           and not form.cleaned_data['DELETE']]
            else:
                raise forms.ValidationError(
                    _('Errors in the flavors list.'),
                )
        return cleaned_data
Beispiel #5
0
    def clean(self):
        cleaned_data = super(RackCreateInfoAction, self).clean()
        name = cleaned_data.get('name')
        rack_id = self.initial.get('rack_id', None)
        subnet = cleaned_data.get('subnet')
        try:
            racks = api.tuskar.Rack.list(self.request)
        except:
            racks = []
            exceptions.check_message(['Connection', 'refused'],
                _("Unable to retrieve rack list."))
            raise

        # Validations: detect duplicates
        for rack in racks:
            other_record = rack_id != rack.id
            if rack.name == name and other_record:
                raise forms.ValidationError(
                    _('The name %s is already used by another rack.')
                    % name)
            if rack.subnet == subnet and other_record:
                raise forms.ValidationError(
                    _('The subnet is already assigned to rack %s.')
                    % (rack.name))

        return cleaned_data
Beispiel #6
0
def server_migrate(request, instance_id):
    try:
        novaclient_with_newtoken(request).servers.migrate(instance_id)
    except nova_exceptions.ClientException as e:
        msg = e.message
        exceptions.check_message(["No", "valid", "host", "found"], msg)
        raise
Beispiel #7
0
    def clean(self):
        cleaned_data = super(AddGroupInfoAction, self).clean()
        name = cleaned_data.get('name')
        group_id = cleaned_data.get('group_id')

        try:
            groups = client(self.request).get_groups()
        except Exception:
            groups = []
            msg = _('Unable to get groups list')
            exceptions.check_message(["Connection", "refused"], msg)
            raise

        if groups is not None and name is not None:
            for group in groups:
                if group.name.lower() == name.lower():
                    raise forms.ValidationError(
                        _('The name "%s" is already used by another group.') %
                        name)
                if group.id == group_id:
                    raise forms.ValidationError(
                        _('The ID "%s" is already used by another group.') %
                        group_id)

        cleaned_data['script_data'] = normalize_newlines(
            cleaned_data['script_data'])
        # files = self.request.FILES
        # script = self.clean_uploaded_files('script', files)
        #
        # if script is not None:
        #     cleaned_data['script_data'] = script

        return cleaned_data
Beispiel #8
0
    def clean(self):
        name = self.cleaned_data.get('name')
        group_id = self.cleaned_data.get('group_id')
        try:
            groups = client(self.request).get_groups()
        except Exception:
            groups = []
            msg = _('Unable to get groups list')
            exceptions.check_message(["Connection", "refused"], msg)
            raise

        # Check if there is no group with the same name
        if groups is not None and name is not None:
            for group in groups:
                if (group.name.lower() == name.lower()
                        and group.group_id != group_id):
                    raise forms.ValidationError(
                        _('The name "%s" is already used by another '
                          'group.') % name)

        self.cleaned_data['script_data'] = \
            normalize_newlines(self.cleaned_data['script_data'])

        # files = self.request.FILES
        # script = self.clean_uploaded_files('script', files)
        #
        # if script is not None:
        #     self.cleaned_data['script_data'] = script

        return self.cleaned_data
Beispiel #9
0
 def clean(self):
     cleaned_data = super(CommonData, self).clean()
     name = cleaned_data.get('name')
     try:
         if self.request.user.is_superuser:
             for attribute in bgpvpn_common.RT_FORMAT_ATTRIBUTES:
                 if not cleaned_data.get(attribute):
                     del cleaned_data[attribute]
                 else:
                     cleaned_data[attribute] = bgpvpn_common.format_rt(
                         cleaned_data[attribute])
             # if an admin user use the bgpvpn panel project
             # tenant_id field doesn't exist
             if not cleaned_data.get('tenant_id'):
                 tenant_id = self.request.user.tenant_id
             else:
                 tenant_id = cleaned_data.get('tenant_id')
             bgpvpn_api.bgpvpns_list(self.request,
                                     name=name,
                                     tenant_id=tenant_id)
         else:
             bgpvpn_api.bgpvpns_list(self.request, name=name)
     except Exception:
         msg = _('Unable to get BGPVPN with name %s') % name
         exceptions.check_message(["Connection", "refused"], msg)
         raise
     return cleaned_data
Beispiel #10
0
    def clean(self):
        cleaned_data = super(UpdateSourceDomainInfoForm, self).clean()
        id = cleaned_data.get('id')
        name = cleaned_data.get('name')
        availability_zone = cleaned_data.get('availability_zone')

        try:
            aggregates = api.nova.aggregate_details_list(self.request)
        except Exception:
            msg = _('Unable to get source domain list')
            exceptions.check_message(["Connection", "refused"], msg)
            raise
        if aggregates is not None:
            for aggregate in aggregates:
                if str(aggregate.id) != str(id) and aggregate.name.lower() == name.lower():
                    raise forms.ValidationError(
                        _('The name "%s" is already used by '
                          'another source domain.')
                        % name
                    )
                if str(aggregate.id) != str(id) and aggregate.availability_zone.lower() == availability_zone.lower():
                    raise forms.ValidationError(
                        _('The availability_zone "%s" is already used by '
                          'another source domain.')
                        % availability_zone
                    )
        return cleaned_data
Beispiel #11
0
    def get_networks_data(self):
        try:
            opts = self._get_search_opts()
            networks = neutron.network_list(self.tab_group.request, **opts)
        except Exception:
            networks = []
            msg = _('Unable to get tenant network list.')
            exceptions.check_message(["Connection", "refused"], msg)
            raise
        if networks:
            self.exception = False
            tenant_dict = self._get_tenant_list()
            for n in networks:
                # Set tenant name
                tenant = tenant_dict.get(n.tenant_id, None)
                n.tenant_name = getattr(tenant, 'name', None)
                # If name is empty use UUID as name
                n.set_id_as_name_if_empty()
                # Get number of DHCP agents
                n.num_agents = self._get_agents_data(n.id)

            if self.exception:
                msg = _('Unable to list dhcp agents hosting network.')
                exceptions.handle(self.request, msg)

        return networks
Beispiel #12
0
    def clean(self):
        cleaned_data = super(CreateFlavorInfoAction, self).clean()
        name = cleaned_data.get('name')
        flavor_id = cleaned_data.get('flavor_id')

        if name and name.isspace():
            msg = _('Flavor name cannot be empty.')
            self._errors['name'] = self.error_class([msg])

        try:
            flavors = api.nova.flavor_list(self.request, None)
        except Exception:
            flavors = []
            msg = _('Unable to get flavor list')
            exceptions.check_message(["Connection", "refused"], msg)
            raise
        if flavors is not None and name is not None:
            for flavor in flavors:
                if flavor.name.lower() == name.lower():
                    error_msg = _('The name "%s" is already used by '
                                  'another flavor.') % name
                    self._errors['name'] = self.error_class([error_msg])
                if flavor.id == flavor_id:
                    error_msg = _('The ID "%s" is already used by '
                                  'another flavor.') % flavor_id
                    self._errors['flavor_id'] = self.error_class([error_msg])
        return cleaned_data
Beispiel #13
0
    def clean(self):
        cleaned_data = super(AddGroupInfoAction, self).clean()
        name = cleaned_data.get('name')

        try:
            groups = cinder.group_list(self.request)
        except Exception:
            msg = _('Unable to get group list')
            exceptions.check_message(["Connection", "refused"], msg)
            raise

        if groups is not None and name is not None:
            for group in groups:
                if group.name.lower() == name.lower():
                    # ensure new name has reasonable length
                    formatted_name = name
                    if len(name) > 20:
                        formatted_name = name[:14] + "..." + name[-3:]
                    raise forms.ValidationError(
                        _('The name "%s" is already used by '
                          'another group.')
                        % formatted_name
                    )

        return cleaned_data
Beispiel #14
0
    def clean(self):
        cleaned_data = super(RackCreateInfoAction, self).clean()
        name = cleaned_data.get('name')
        rack_id = self.initial.get('rack_id', None)
        subnet = cleaned_data.get('subnet')
        try:
            racks = tuskar.Rack.list(self.request)
        except Exception:
            racks = []
            exceptions.check_message(['Connection', 'refused'],
                                     _("Unable to retrieve rack list."))
            raise

        # Validations: detect duplicates
        for rack in racks:
            other_record = rack_id != rack.id
            if rack.name == name and other_record:
                raise forms.ValidationError(
                    _('The name %s is already used by another rack.') % name)
            if rack.subnet == subnet and other_record:
                raise forms.ValidationError(
                    _('The subnet is already assigned to rack %s.') %
                    (rack.name))

        return cleaned_data
Beispiel #15
0
    def clean(self):
        cleaned_data = super(CreateFlavorInfoAction, self).clean()
        name = cleaned_data.get('name')
        flavor_id = cleaned_data.get('flavor_id')

        if name and name.isspace():
            msg = _('Flavor name cannot be empty.')
            self._errors['name'] = self.error_class([msg])

        try:
            flavors = api.nova.flavor_list(self.request, None)
        except Exception:
            flavors = []
            msg = _('Unable to get flavor list')
            exceptions.check_message(["Connection", "refused"], msg)
            raise
        if flavors is not None and name is not None:
            for flavor in flavors:
                if flavor.name.lower() == name.lower():
                    error_msg = _('The name "%s" is already used by '
                                  'another flavor.') % name
                    self._errors['name'] = self.error_class([error_msg])
                if flavor.id == flavor_id:
                    error_msg = _('The ID "%s" is already used by '
                                  'another flavor.') % flavor_id
                    self._errors['flavor_id'] = self.error_class([error_msg])
        return cleaned_data
Beispiel #16
0
    def handle(self, request, context):
        selected_vol_types = context['volume_types']

        try:
            vol_types = cinder.volume_type_list_with_qos_associations(
                request)
        except Exception:
            msg = _('Unable to get volume type list')
            exceptions.check_message(["Connection", "refused"], msg)
            return False

        # ensure that all selected volume types share same backend name
        backend_name = None
        invalid_backend = False
        for selected_vol_type in selected_vol_types:
            if invalid_backend:
                continue
            for vol_type in vol_types:
                if selected_vol_type != vol_type.id:
                    continue
                if (hasattr(vol_type, "extra_specs") and
                        'volume_backend_name' in vol_type.extra_specs):
                    vol_type_backend = \
                        vol_type.extra_specs['volume_backend_name']
                    if vol_type_backend is None:
                        invalid_backend = True
                        break
                    if backend_name is None:
                        backend_name = vol_type_backend
                    if vol_type_backend != backend_name:
                        invalid_backend = True
                        break
                else:
                    invalid_backend = True
                    break

        if invalid_backend:
            msg = _('All selected volume types must be associated '
                    'with the same volume backend name.')
            exceptions.handle(request, msg)
            return False

        try:
            vtypes_str = ",".join(context['volume_types'])
            self.object = \
                cinder.volume_cgroup_create(
                    request,
                    vtypes_str,
                    context['name'],
                    description=context['description'],
                    availability_zone=context['availability_zone'])
        except Exception:
            exceptions.handle(request, _('Unable to create consistency '
                                         'group.'))
            return False

        return True
 def delete(self, request, obj_id):
     try:
         api. delete_securitygroup(request,obj_id)  
     except Exception:
          
         msg = _('Unable to delete Securitygroup "%s"'
                 'depend on it.')
         exceptions.check_message(["securitygroups", "dependent"], msg % obj_id)
         raise
Beispiel #18
0
 def delete(self, request, obj_id):
     obj = self.table.get_object_by_id(obj_id)
     name = self.table.get_object_display(obj)
     try:
         cinder.volume_delete(request, obj_id)
     except Exception:
         msg = _('Unable to delete volume "%s". One or more snapshots ' "depend on it.")
         exceptions.check_message(["snapshots", "dependent"], msg % name)
         raise
Beispiel #19
0
 def get_nova_services_data(self):
     try:
         services = api.nova.service_list(self.request)
     except Exception:
         msg = _('Unable to get nova services list.')
         exceptions.check_message(["Connection", "refused"], msg)
         exceptions.handle(self.request, msg)
         services = []
     return services
Beispiel #20
0
 def get_cinder_services_data(self):
     try:
         services = cinder.service_list(self.tab_group.request)
     except Exception:
         msg = _('Unable to get cinder services list.')
         exceptions.check_message(["Connection", "refused"], msg)
         exceptions.handle(self.request, msg)
         services = []
     return services
Beispiel #21
0
    def get_nova_services_data(self):
        try:
            services = nova.service_list(self.tab_group.request)
        except Exception:
            msg = _('Unable to get nova services list.')
            exceptions.check_message(["Connection", "refused"], msg)
            raise

        return services
Beispiel #22
0
 def get_cinder_services_data(self):
     try:
         services = cinder.service_list(self.tab_group.request)
     except Exception:
         msg = _("Unable to get cinder services list.")
         exceptions.check_message(["Connection", "refused"], msg)
         exceptions.handle(self.request, msg)
         services = []
     return services
Beispiel #23
0
    def get_network_agents_data(self):
        try:
            agents = neutron.agent_list(self.tab_group.request)
        except Exception:
            msg = _('Unable to get network agents list.')
            exceptions.check_message(["Connection", "refused"], msg)
            raise

        return agents
Beispiel #24
0
    def get_nova_services_data(self):
        try:
            services = nova.service_list(self.tab_group.request)
        except Exception:
            msg = _('Unable to get nova services list.')
            exceptions.check_message(["Connection", "refused"], msg)
            raise

        return services
Beispiel #25
0
    def get_network_agents_data(self):
        try:
            agents = neutron.agent_list(self.tab_group.request)
        except Exception:
            msg = _('Unable to get network agents list.')
            exceptions.check_message(["Connection", "refused"], msg)
            raise

        return agents
Beispiel #26
0
 def get_heat_services_data(self):
     try:
         services = heat.service_list(self.tab_group.request)
     except Exception:
         msg = _('Unable to get Orchestration service list.')
         exceptions.check_message(["Connection", "refused"], msg)
         exceptions.handle(self.request, msg)
         services = []
     return services
    def delete(self, request, obj_id):
        try:
            api.delete_securitygroup(request, obj_id)
        except Exception:

            msg = _('Unable to delete Securitygroup "%s"' 'depend on it.')
            exceptions.check_message(["securitygroups", "dependent"],
                                     msg % obj_id)
            raise
Beispiel #28
0
 def delete(self, request, obj_id):
     obj = self.table.get_object_by_id(obj_id)
     name = self.table.get_object_display(obj)
     try:
         manila.share_snapshot_delete(request, obj_id)
     except Exception:
         msg = _('Unable to delete snapshot "%s". One or more shares '
                 'depend on it.')
         exceptions.check_message(["snapshots", "dependent"], msg % name)
         raise
Beispiel #29
0
 def delete(self, request, obj_id):
     obj = self.table.get_object_by_id(obj_id)
     name = self.table.get_object_display(obj)
     try:
         manila.share_group_snapshot_delete(request, obj_id)
     except Exception:
         msg = _('Unable to delete share group snapshot "%s". '
                 'One or more share groups depend on it.')
         exceptions.check_message(["snapshots", "dependent"], msg % name)
         raise
Beispiel #30
0
 def get_provider_networks_data(self):
     try:
         providernets = \
             neutron.provider_network_list(self.tab_group.request)
     except Exception:
         providernets = []
         msg = _('Unable to get provider network list.')
         exceptions.check_message(["Connection", "refused"], msg)
         raise
     return providernets
Beispiel #31
0
 def get_data_networks_data(self):
     try:
         datanets = \
             stx_sysinv.data_network_list(self.tab_group.request)
     except Exception:
         datanets = []
         msg = _('Unable to get provider network list.')
         exceptions.check_message(["Connection", "refused"], msg)
         raise
     return datanets
Beispiel #32
0
 def delete(self, request, obj_id):
     obj = self.table.get_object_by_id(obj_id)
     name = self.table.get_object_display(obj)
     try:
         cinder.volume_delete(request, obj_id)
     except Exception:
         msg = _('Unable to delete volume "%s". One or more snapshots '
                 'depend on it.')
         exceptions.check_message(["snapshots", "dependent"], msg % name)
         raise
Beispiel #33
0
    def get_controller_services_data(self):
        try:
            # instances before servicegroups because for it updates sg db
            # instances = iservice.iservice_list(self.tab_group.request)
            # servicegroups = iservice.iservicegroup_list(
            #                                       self.tab_group.request)
            nodes = iservice.sm_nodes_list(self.tab_group.request)
            # fields = ['id', 'name', 'state', 'online']

            sdas = iservice.sm_sda_list(self.tab_group.request)
            # controller-1 is not in sda when installing, but is in node-list
            #     with state "unknown"
            # fields = ['uuid', 'service_group_name', 'node_name',
            #           'state', 'status', 'condition']

            services = []

            sgs = self._find_service_group_names(sdas)

            sdaid = 0
            for sg in sgs:
                sdaid += 1
                entry = {}
                entry.update({'id': sdaid})
                entry.update({'servicename': sg})
                sg_states = self._update_service_group_states(sg, sdas, nodes)
                entry.update(sg_states)

                # Need to latch if any sg is enabled
                if 'c0_activity' in entry.keys():
                    sgstate = entry['c0_activity']
                    if sgstate == "active":
                        entry.update({'sgstate': sgstate})
                elif 'c1_activity' in entry.keys():
                    sgstate = entry['c1_activity']
                    if sgstate == "active":
                        entry.update({'sgstate': sgstate})

                if sgstate != "active":
                    entry.update({'sgstate': sgstate})

                if entry != {}:
                    entry_object = objectify.objectify(entry)
                    services.append(entry_object)

            # services_object = objectify.objectify(services)

        except Exception:
            services = []
            msg = _('Unable to get controller services list.')
            exceptions.check_message(["Connection", "refused"], msg)
            raise

        return services
Beispiel #34
0
 def clean_location(self):
     try:
         host_id = self.cleaned_data['host_id']
         host = stx_api.sysinv.host_get(self.request, host_id)
         location = host._location
         location['locn'] = self.cleaned_data.get('location')
         return location
     except Exception:
         msg = _('Unable to get host data')
         exceptions.check_message(["Connection", "refused"], msg)
         raise
Beispiel #35
0
 def delete(self, request, obj_id):
     obj = self.table.get_object_by_id(obj_id)
     name = self.table.get_object_display(obj)
     try:
         apply = applydisk.objects.filter(id=obj_id)
         apply.update(status='5')
     except Exception:
         msg = _('Unable to delete volume "%s". One or more snapshots '
                 'depend on it.')
         exceptions.check_message(["snapshots", "dependent"], msg % name)
         raise
Beispiel #36
0
    def delete(self, request, obj_id):
        obj = self.table.get_object_by_id(obj_id)
        name = self.table.get_object_display(obj)

        try:
            nova.server_group_delete(request, obj_id)
        except Exception:
            msg = _('Unable to delete group "%s" because it is not empty. '
                    'Either delete the member '
                    'instances or remove them from the group.')
            exceptions.check_message(["group", "not", "empty."], msg % name)
            raise
Beispiel #37
0
 def get_context_data(self, request):
     try:
         context = super(StorageServicesTab, self).get_context_data(request)
         context['monitors'] = self.get_monitors_data()
         context['osds'] = self.get_osds_data()
         context['cluster'] = self.get_cluster_data()
         context['storage'] = self.get_storage_data()
         return context
     except Exception as e:
         LOG.error(e)
         msg = _('Unable to get storage services list.')
         exceptions.check_message(["Connection", "refused"], msg)
         return
Beispiel #38
0
    def get_controller_services_data(self):
        """Populate the data for the controller services tab"""

        # Here we filter the controller-1 column if we're a simplex system
        # We should make this data driven in the future. This would allow us to
        # more easily support n controllers
        if sysinv_api.is_system_mode_simplex(self.tab_group.request):
            controller1_col = self._tables['controller_services'].columns['c1']
            controller1_col.classes.append("hide")

        try:
            nodes = iservice.sm_nodes_list(self.tab_group.request)

            sdas = iservice.sm_sda_list(self.tab_group.request)

            services = []

            sgs = self._find_service_group_names(sdas)

            sdaid = 0
            for sg in sgs:
                sdaid += 1
                entry = {}
                entry.update({'id': sdaid})
                entry.update({'servicename': sg})
                sg_states = self._update_service_group_states(sg, sdas, nodes)
                entry.update(sg_states)

                # Need to latch if any sg is enabled
                if 'c0_activity' in entry.keys():
                    sgstate = entry['c0_activity']
                    if sgstate == "active":
                        entry.update({'sgstate': sgstate})
                elif 'c1_activity' in entry.keys():
                    sgstate = entry['c1_activity']
                    if sgstate == "active":
                        entry.update({'sgstate': sgstate})

                if sgstate != "active":
                    entry.update({'sgstate': sgstate})

                if entry != {}:
                    entry_object = objectify.objectify(entry)
                    services.append(entry_object)

        except Exception:
            msg = _('Unable to get controller services list.')
            exceptions.check_message(["Connection", "refused"], msg)
            raise

        return services
Beispiel #39
0
    def clean(self):
        cleaned_data = super(SetAggregateInfoAction, self).clean()
        name = cleaned_data.get("name")

        try:
            aggregates = api.nova.aggregate_details_list(self.request)
        except Exception:
            msg = _("Unable to get host aggregate list")
            exceptions.check_message(["Connection", "refused"], msg)
            raise
        if aggregates is not None:
            for aggregate in aggregates:
                if aggregate.name.lower() == name.lower():
                    raise forms.ValidationError(_('The name "%s" is already used by ' "another host aggregate.") % name)
        return cleaned_data
Beispiel #40
0
 def get_network_agents_data(self):
     try:
         agents = api.neutron.agent_list(self.request)
         enable_network_overlay = getattr(
             self.request, 'enable_network_overlay', False)
         if enable_network_overlay:
             for agent in agents:
                 if agent.agent_type == 'L3 agent':
                     agents.remove(agent)
     except Exception:
         msg = _('Unable to get network agents list.')
         exceptions.check_message(["Connection", "refused"], msg)
         exceptions.handle(self.request, msg)
         agents = []
     return agents
Beispiel #41
0
    def clean(self):
        cleaned_data = super(CreateRateInfoAction, self).clean()
        type = cleaned_data.get('type')

        try:
            rates = SourceRate.objects.filter(type=type)
        except Exception:
            msg = _('Unable to get Resource Rate list')
            exceptions.check_message(["Connection", "refused"], msg)
            raise
        
        if rates:
            raise forms.ValidationError(
                _('The resource name "%s" is already has assigned rates!')
                % type )
        return cleaned_data
Beispiel #42
0
 def clean_flavor_id(self):
     flavor_id = self.data.get('flavor_id')
     try:
         flavors = api.nova.flavor_list(self.request)
     except Exception:
         flavors = []
         msg = _('Unable to get flavor list')
         exceptions.check_message(["Connection", "refused"], msg)
         raise
     if flavors is not None:
         for flavor in flavors:
             if flavor.id == flavor_id:
                 raise forms.ValidationError(
                     _('The ID "%s" is already used by another flavor.') %
                     flavor_id)
     return flavor_id
Beispiel #43
0
 def clean(self):
     cleaned_data = super(CreateBgpVpn, self).clean()
     name = cleaned_data.get('name')
     tenant_id = cleaned_data.get('tenant_id')
     try:
         bgpvpns = bgpvpn_api.bgpvpns_list(self.request,
                                           name=name,
                                           tenant_id=tenant_id)
     except Exception:
         msg = _('Unable to get BGPVPN with name %s') % name
         exceptions.check_message(["Connection", "refused"], msg)
         raise
     if bgpvpns:
         raise forms.ValidationError(
             _('The name "%s" is already used by another BGPVPN.') % name)
     return cleaned_data
Beispiel #44
0
 def clean_name(self):
     name = self.cleaned_data.get('name')
     try:
         flavors = api.nova.flavor_list(self.request)
     except:
         flavors = []
         msg = _('Unable to get flavor list')
         exceptions.check_message(["Connection", "refused"], msg)
         raise
     if flavors is not None:
         for flavor in flavors:
             if flavor.name == name:
                 raise forms.ValidationError(
                     _('The name "%s" is already used by another flavor.') %
                     name)
     return name
    def clean(self):
        cleaned_data = super(SetAggregateInfoAction, self).clean()
        name = cleaned_data.get('name')

        try:
            aggregates = api.nova.aggregate_details_list(self.request)
        except Exception:
            msg = _('Unable to get host aggregate list')
            exceptions.check_message(["Connection", "refused"], msg)
            raise
        if aggregates is not None:
            for aggregate in aggregates:
                if aggregate.name.lower() == name.lower():
                    raise forms.ValidationError(
                        _('The name "%s" is already used by '
                          'another host aggregate.') % name)
        return cleaned_data
Beispiel #46
0
 def clean_flavor_id(self):
     flavor_id = self.data.get('flavor_id')
     try:
         flavors = api.nova.flavor_list(self.request)
     except:
         flavors = []
         msg = _('Unable to get flavor list')
         exceptions.check_message(["Connection", "refused"], msg)
         raise
     if flavors is not None:
         for flavor in flavors:
             if flavor.id == flavor_id:
                 raise forms.ValidationError(
                   _('The ID "%s" is already used by another flavor.')
                   % flavor_id
                 )
     return flavor_id
Beispiel #47
0
 def clean_name(self):
     name = self.cleaned_data.get('name')
     try:
         flavors = api.nova.flavor_list(self.request)
     except:
         flavors = []
         msg = _('Unable to get flavor list')
         exceptions.check_message(["Connection", "refused"], msg)
         raise
     if flavors is not None:
         for flavor in flavors:
             if flavor.name == name:
                 raise forms.ValidationError(
                   _('The name "%s" is already used by another flavor.')
                   % name
                 )
     return name
Beispiel #48
0
 def clean(self):
     cleaned_data = super(CreateFlavor, self).clean()
     name = cleaned_data.get('name')
     flavor_id = self.initial.get('flavor_id', None)
     try:
         flavors = api.tuskar.FlavorTemplate.list(self.request)
     except:
         flavors = []
         msg = _('Unable to get flavor list')
         exceptions.check_message(["Connection", "refused"], msg)
         raise
     # Check if there is no flavor with the same name
     for flavor in flavors:
         if flavor.name == name and flavor.id != flavor_id:
             raise forms.ValidationError(
                 _('The name "%s" is already used by another flavor.') %
                 name)
     return cleaned_data
Beispiel #49
0
 def clean(self):
     name = self.cleaned_data.get('name')
     flavor_id = self.cleaned_data.get('flavor_id')
     try:
         flavors = api.nova.flavor_list(self.request, None)
     except Exception:
         flavors = []
         msg = _('Unable to get flavor list')
         exceptions.check_message(["Connection", "refused"], msg)
         raise
     # Check if there is no flavor with the same name
     if flavors is not None:
         for flavor in flavors:
             if flavor.name == name and flavor.id != flavor_id:
                 raise forms.ValidationError(
                     _('The name "%s" is already used by another '
                       'flavor.') % name)
     return self.cleaned_data
Beispiel #50
0
 def clean(self):
     name = self.cleaned_data.get('name')
     flavor_id = self.cleaned_data.get('flavor_id')
     try:
         flavors = api.nova.flavor_list(self.request, None)
     except Exception:
         flavors = []
         msg = _('Unable to get flavor list')
         exceptions.check_message(["Connection", "refused"], msg)
         raise
     # Check if there is no flavor with the same name
     if flavors is not None:
         for flavor in flavors:
             if flavor.name == name and flavor.id != flavor_id:
                 raise forms.ValidationError(
                         _('The name "%s" is already used by another '
                           'flavor.') % name)
     return self.cleaned_data
Beispiel #51
0
 def clean(self):
     cleaned_data = super(CreateFlavor, self).clean()
     name = cleaned_data.get('name')
     flavor_id = self.initial.get('flavor_id', None)
     try:
         flavors = api.tuskar.FlavorTemplate.list(self.request)
     except:
         flavors = []
         msg = _('Unable to get flavor list')
         exceptions.check_message(["Connection", "refused"], msg)
         raise
     # Check if there is no flavor with the same name
     for flavor in flavors:
         if flavor.name == name and flavor.id != flavor_id:
             raise forms.ValidationError(
                 _('The name "%s" is already used by another flavor.')
                 % name
             )
     return cleaned_data
Beispiel #52
0
 def clean(self):
     name = self.cleaned_data.get('name')
     flavor_id = self.cleaned_data.get('flavor_id')
     try:
         flavors = api.nova.flavor_list(self.request, None)
     except Exception:
         flavors = []
         msg = _('Unable to get flavor list')
         exceptions.check_message(["Connection", "refused"], msg)
         raise
     # Check if there is no flavor with the same name
     if flavors is not None and name is not None:
         for flavor in flavors:
             if (flavor.name.lower() == name.lower() and
                     flavor.id != flavor_id):
                 error_msg = _('The name "%s" is already used by '
                               'another flavor.') % name
                 self._errors['name'] = self.error_class([error_msg])
     return self.cleaned_data
Beispiel #53
0
    def clean(self):
        cleaned_data = super(ResourceClassInfoAndFlavorsAction,
                             self).clean()

        name = cleaned_data.get('name')
        resource_class_id = self.initial.get('resource_class_id', None)
        try:
            resource_classes = api.tuskar.ResourceClass.list(self.request)
        except:
            resource_classes = []
            msg = _('Unable to get resource class list')
            exceptions.check_message(["Connection", "refused"], msg)
            raise
        for resource_class in resource_classes:
            if resource_class.name == name and \
                    resource_class_id != resource_class.id:
                raise forms.ValidationError(
                    _('The name "%s" is already used by'
                      ' another resource class.')
                    % name
                )

        return cleaned_data