def allowed(self, request, volume=None):
        limits = api.cinder.tenant_absolute_limits(request)

        gb_available = (limits.get('maxTotalVolumeGigabytes', float("inf"))
                        - limits.get('totalVolumeGigabytesUsed', 0))
        volumes_available = (limits.get('maxTotalVolumes', float("inf"))
                             - limits.get('totalVolumesUsed', 0))

        if gb_available <= 0 or volumes_available <= 0:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
                self.verbose_name = string_concat(self.verbose_name, ' ',
                                                  _("(Quota exceeded)"))
        else:
            self.verbose_name = _("Create Volume")
            classes = [c for c in self.classes if c != "disabled"]
            self.classes = classes

        account_is_frozen = check_account_is_frozen(request)
        if account_is_frozen:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
        else:
            if not(gb_available <= 0 or volumes_available <= 0):
                self.classes = [c for c in self.classes if c != "disabled"]
        return True
    def allowed(self, request, fip=None):
        usages = quotas.tenant_quota_usages(request)
        if usages['floating_ips']['available'] <= 0:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
                self.verbose_name = string_concat(self.verbose_name, ' ',
                                                  _("(Quota exceeded)"))
        else:
            self.verbose_name = _("Allocate IP To Project")
            classes = [c for c in self.classes if c != "disabled"]
            self.classes = classes

        if api.base.is_service_enabled(request, "network"):
            policy = (("network", "create_floatingip"),)
        else:
            policy = (("compute", "compute_extension:floating_ips"),
                      ("compute", "network:allocate_floating_ip"),)

        account_is_frozen = check_account_is_frozen(request)
        if account_is_frozen:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
        else:
            if not (usages['floating_ips']['available'] <= 0):
                self.classes = [c for c in self.classes if c != "disabled"]

        return POLICY_CHECK(policy, request)
    def allowed(self, request, fip=None):
        usages = quotas.tenant_quota_usages(request)
        if usages['floating_ips']['available'] <= 0:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
                self.verbose_name = string_concat(self.verbose_name, ' ',
                                                  _("(Quota exceeded)"))
        else:
            self.verbose_name = _("Allocate IP To Project")
            classes = [c for c in self.classes if c != "disabled"]
            self.classes = classes

        if api.base.is_service_enabled(request, "network"):
            policy = (("network", "create_floatingip"), )
        else:
            policy = (
                ("compute", "compute_extension:floating_ips"),
                ("compute", "network:allocate_floating_ip"),
            )

        account_is_frozen = check_account_is_frozen(request)
        if account_is_frozen:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
        else:
            if not (usages['floating_ips']['available'] <= 0):
                self.classes = [c for c in self.classes if c != "disabled"]

        return POLICY_CHECK(policy, request)
    def allowed(self, request, volume=None):
        try:
            limits = api.cinder.tenant_absolute_limits(request)
        except Exception:
            exceptions.handle(request, _('Unable to retrieve tenant limits.'))
            limits = {}

        snapshots_available = (limits.get('maxTotalSnapshots', float("inf")) -
                               limits.get('totalSnapshotsUsed', 0))
        gb_available = (limits.get('maxTotalSnapshotGigabytes', float("inf")) -
                        limits.get('totalSnapshotGigabytesUsed', 0))

        if (gb_available <= 0 or
                snapshots_available <= 0) and "disabled" not in self.classes:
            self.classes = [c for c in self.classes] + ['disabled']
            self.verbose_name = string_concat(self.verbose_name, ' ',
                                              _("(Quota exceeded)"))
        account_is_frozen = check_account_is_frozen(request)
        if account_is_frozen:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
        else:
            if not (gb_available <= 0 or snapshots_available <= 0):
                self.classes = [c for c in self.classes if c != "disabled"]
        return volume.status in ("available", "in-use")
    def allowed(self, request, volume=None):
        limits = api.cinder.tenant_absolute_limits(request)

        gb_available = (limits.get('maxTotalVolumeGigabytes', float("inf")) -
                        limits.get('totalVolumeGigabytesUsed', 0))
        volumes_available = (limits.get('maxTotalVolumes', float("inf")) -
                             limits.get('totalVolumesUsed', 0))

        if gb_available <= 0 or volumes_available <= 0:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
                self.verbose_name = string_concat(self.verbose_name, ' ',
                                                  _("(Quota exceeded)"))
        else:
            self.verbose_name = _("Create Volume")
            classes = [c for c in self.classes if c != "disabled"]
            self.classes = classes

        account_is_frozen = check_account_is_frozen(request)
        if account_is_frozen:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
        else:
            if not (gb_available <= 0 or volumes_available <= 0):
                self.classes = [c for c in self.classes if c != "disabled"]
        return True
 def allowed(self, request, domain=None):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     return True
 def allowed(self, request, fip):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     return super(UpdateFloatingIP, self).allowed(request, fip)
 def allowed(self, request, datum):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     return super(CreateImage, self).allowed(request, datum)
 def allowed(self, request, domain=None):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     return True
 def allowed(self, request, datum=None):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     return super(UpdatePort, self).allowed(request, datum)
 def allowed(self, request, datum):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     return super(AddSSLVPNConnectionLink, self).allowed(request, datum)
 def allowed(self, request, volume=None):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     return volume.status in ("available", "in-use")
 def allowed(self, request, volume=None):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     return volume.status in ("available", "in-use")
Exemple #14
0
 def get(self, request, *args, **kwargs):
     set_billing_account_to_session(request)
     handled = self.construct_tables()
     if handled:
         return handled
     context = self.get_context_data(**kwargs)
     context['account_is_frozen'] = check_account_is_frozen(request)
     return self.render_to_response(context)
 def allowed(self, request, volume=None):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     return (cinder.volume_backup_supported(request)
             and volume.status == "available")
 def allowed(self, request, volume=None):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     return (cinder.volume_backup_supported(request) and
             volume.status == "available")
 def allowed(self, request, volume=None):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     if getattr(volume, 'bootable', '') == 'true':
         return volume.status == "available"
     return False
 def allowed(self, request, datum=None):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     if datum.external_gateway_info:
         return True
     return False
 def allowed(self, request, datum=None):
     self.verbose_name = _("create")
     self.classes = [c for c in self.classes if c != "disabled"]
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     return True
 def allowed(self, request, datum=None):
     self.verbose_name = _("create")
     self.classes = [c for c in self.classes if c != "disabled"]
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     return True
 def allowed(self, request, volume=None):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         if "disabled" not in self.classes:
             self.classes = [c for c in self.classes] + ['disabled']
     else:
         self.classes = [c for c in self.classes if c != "disabled"]
     if getattr(volume, 'bootable', '') == 'true':
         return volume.status == "available"
     return False
    def allowed(self, request, image=None):
        account_is_frozen = check_account_is_frozen(request)
        if account_is_frozen:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
        else:
            self.classes = [c for c in self.classes if c != "disabled"]

        if image and image.container_format not in NOT_LAUNCHABLE_FORMATS:
            return image.status in ("active",)
        return False
    def allowed(self, request, volume=None):
        account_is_frozen = check_account_is_frozen(request)
        if account_is_frozen:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
        else:
            self.classes = [c for c in self.classes if c != "disabled"]
        has_image_service_perm = \
            request.user.has_perm('openstack.services.image')

        return (volume.status in ("available", "in-use")
                and has_image_service_perm)
    def allowed(self, request, volume=None):
        account_is_frozen = check_account_is_frozen(request)
        if account_is_frozen:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
        else:
            self.classes = [c for c in self.classes if c != "disabled"]
        has_image_service_perm = \
            request.user.has_perm('openstack.services.image')

        return (volume.status in ("available", "in-use") and
                has_image_service_perm)
    def allowed(self, request, fip):
        if api.base.is_service_enabled(request, "network"):
            policy = (("network", "update_floatingip"),)
        else:
            policy = (("compute", "compute_extension:floating_ips"),
                      ("compute", "network:associate_floating_ip"),)

        account_is_frozen = check_account_is_frozen(request)
        if account_is_frozen:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
        else:
            self.classes = [c for c in self.classes if c != "disabled"]
        return not fip.port_id and POLICY_CHECK(policy, request)
    def allowed(self, request, fip):
        if api.base.is_service_enabled(request, "network"):
            policy = (("network", "update_floatingip"), )
        else:
            policy = (
                ("compute", "compute_extension:floating_ips"),
                ("compute", "network:associate_floating_ip"),
            )

        account_is_frozen = check_account_is_frozen(request)
        if account_is_frozen:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
        else:
            self.classes = [c for c in self.classes if c != "disabled"]
        return not fip.port_id and POLICY_CHECK(policy, request)
Exemple #27
0
    def allowed(self, request, datum=None):
        usages = quotas.tenant_quota_usages(request)
        if usages['subnets']['available'] <= 0:
            if 'disabled' not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
                self.verbose_name = _('Add Subnet (Quota exceeded)')
        else:
            self.verbose_name = _('Add Subnet')
            self.classes = [c for c in self.classes if c != 'disabled']

        account_is_frozen = check_account_is_frozen(request)
        if account_is_frozen:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
        else:
            if not (usages['subnets']['available'] <= 0):
                self.classes = [c for c in self.classes if c != "disabled"]
        return True
Exemple #28
0
    def allowed(self, request, datum=None):
        usages = quotas.tenant_quota_usages(request)
        if usages['networks']['available'] <= 0:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ["disabled"]
                self.verbose_name = _("Create Network (Quota exceeded)")
        else:
            self.verbose_name = _("Create Network")
            self.classes = [c for c in self.classes if c != "disabled"]

        account_is_frozen = check_account_is_frozen(request)
        if account_is_frozen:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
        else:
            if not (usages['networks']['available'] <= 0):
                self.classes = [c for c in self.classes if c != "disabled"]
        return True
    def allowed(self, request, volume=None):
        if volume:
            project_id = getattr(volume, "os-vol-tenant-attr:tenant_id", None)
            attach_allowed = \
                policy.check((("compute", "compute:attach_volume"),),
                             request,
                             {"project_id": project_id})
            detach_allowed = \
                policy.check((("compute", "compute:detach_volume"),),
                             request,
                             {"project_id": project_id})

            account_is_frozen = check_account_is_frozen(request)
            if account_is_frozen:
                if "disabled" not in self.classes:
                    self.classes = [c for c in self.classes] + ['disabled']
            else:
                self.classes = [c for c in self.classes if c != "disabled"]

            if attach_allowed or detach_allowed:
                return volume.status in ("available", "in-use")
        return False
    def allowed(self, request, volume=None):
        if volume:
            project_id = getattr(volume, "os-vol-tenant-attr:tenant_id", None)
            attach_allowed = \
                policy.check((("compute", "compute:attach_volume"),),
                             request,
                             {"project_id": project_id})
            detach_allowed = \
                policy.check((("compute", "compute:detach_volume"),),
                             request,
                             {"project_id": project_id})

            account_is_frozen = check_account_is_frozen(request)
            if account_is_frozen:
                if "disabled" not in self.classes:
                    self.classes = [c for c in self.classes] + ['disabled']
            else:
                self.classes = [c for c in self.classes if c != "disabled"]

            if attach_allowed or detach_allowed:
                return volume.status in ("available", "in-use")
        return False
Exemple #31
0
    def get_context_data(self, **kwargs):
        context = super(NetworkTopologyView, self).get_context_data(**kwargs)
        network_config = getattr(settings, 'OPENSTACK_NEUTRON_NETWORK', {})

        context['launch_instance_allowed'] = self._has_permission(
            (("compute", "compute:create"),))
        context['instance_quota_exceeded'] = self._quota_exceeded('instances')
        context['create_network_allowed'] = self._has_permission(
            (("network", "create_network"),))
        context['network_quota_exceeded'] = self._quota_exceeded('networks')
        context['create_router_allowed'] = (
            network_config.get('enable_router', True) and
            self._has_permission((("network", "create_router"),)))
        context['router_quota_exceeded'] = self._quota_exceeded('routers')
        context['console_type'] = getattr(
            settings, 'CONSOLE_TYPE', 'AUTO')
        context['show_ng_launch'] = getattr(
            settings, 'LAUNCH_INSTANCE_NG_ENABLED', False)

        set_billing_account_to_session(self.request)
        context['account_is_frozen'] = check_account_is_frozen(self.request)
        return context
Exemple #32
0
    def get(self, request, *args, **kwargs):
        set_billing_account_to_session(request)
        self.load_tabs()
        # Gather our table instances. It's important that they're the
        # actual instances and not the classes!
        table_instances = [t['table'] for t in self._table_dict.values()]
        # Early out before any tab or table data is loaded
        for table in table_instances:
            preempted = table.maybe_preempt()
            if preempted:
                return preempted

        # If we have an action, determine if it belongs to one of our tables.
        # We don't iterate through all of the tables' maybes_handle
        # methods; just jump to the one that's got the matching name.
        table_name, action, obj_id = tables.DataTable.check_handler(request)
        if table_name in self._table_dict:
            handled = self.handle_table(self._table_dict[table_name])
            if handled:
                return handled
        context = self.get_context_data(**kwargs)
        context['account_is_frozen'] = check_account_is_frozen(request)
        return self.handle_tabbed_response(context["tab_group"], context)
Exemple #33
0
    def get(self, request, *args, **kwargs):
        set_billing_account_to_session(request)
        self.load_tabs()
        # Gather our table instances. It's important that they're the
        # actual instances and not the classes!
        table_instances = [t['table'] for t in self._table_dict.values()]
        # Early out before any tab or table data is loaded
        for table in table_instances:
            preempted = table.maybe_preempt()
            if preempted:
                return preempted

        # If we have an action, determine if it belongs to one of our tables.
        # We don't iterate through all of the tables' maybes_handle
        # methods; just jump to the one that's got the matching name.
        table_name, action, obj_id = tables.DataTable.check_handler(request)
        if table_name in self._table_dict:
            handled = self.handle_table(self._table_dict[table_name])
            if handled:
                return handled
        context = self.get_context_data(**kwargs)
        context['account_is_frozen'] = check_account_is_frozen(request)
        return self.handle_tabbed_response(context["tab_group"], context)
    def allowed(self, request, volume=None):
        try:
            limits = api.cinder.tenant_absolute_limits(request)
        except Exception:
            exceptions.handle(request, _('Unable to retrieve tenant limits.'))
            limits = {}

        snapshots_available = (limits.get('maxTotalSnapshots', float("inf"))
                               - limits.get('totalSnapshotsUsed', 0))
        gb_available = (limits.get('maxTotalSnapshotGigabytes', float("inf"))
                        - limits.get('totalSnapshotGigabytesUsed', 0))

        if (gb_available <= 0 or snapshots_available <= 0) and "disabled" not in self.classes:
            self.classes = [c for c in self.classes] + ['disabled']
            self.verbose_name = string_concat(self.verbose_name, ' ',
                                              _("(Quota exceeded)"))
        account_is_frozen = check_account_is_frozen(request)
        if account_is_frozen:
            if "disabled" not in self.classes:
                self.classes = [c for c in self.classes] + ['disabled']
        else:
            if not(gb_available <= 0 or snapshots_available <= 0):
                self.classes = [c for c in self.classes if c != "disabled"]
        return volume.status in ("available", "in-use")
 def action(self, request, obj_id):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         raise exceptions.AccountFrozenException
     return self.enable(request, obj_id)
 def action(self, request, obj_id):
     account_is_frozen = check_account_is_frozen(request)
     if account_is_frozen:
         raise exceptions.AccountFrozenException
     return self.enable(request, obj_id)
Exemple #37
0
 def get(self, request, *args, **kwargs):
     set_billing_account_to_session(request)
     context = self.get_context_data(**kwargs)
     context['account_is_frozen'] = check_account_is_frozen(request)
     return self.handle_tabbed_response(context["tab_group"], context)
Exemple #38
0
 def get(self, request, *args, **kwargs):
     set_billing_account_to_session(request)
     context = self.get_context_data(**kwargs)
     context['account_is_frozen'] = check_account_is_frozen(request)
     return self.handle_tabbed_response(context["tab_group"], context)