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, 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 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"] 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, 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, 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)
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
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 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
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 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)