Esempio n. 1
0
class VolumesTable(VolumesTableBase):
    name = tables.WrappingColumn("name",
                                 verbose_name=_("Name"),
                                 link="horizon:project:volumes:detail")
    group = GroupNameColumn("name",
                            verbose_name=_("Group"),
                            link="horizon:project:volume_groups:detail")
    volume_type = tables.Column(get_volume_type, verbose_name=_("Type"))
    attachments = AttachmentColumn("attachments",
                                   verbose_name=_("Attached To"))
    availability_zone = tables.Column("availability_zone",
                                      verbose_name=_("Availability Zone"))
    bootable = tables.Column('is_bootable',
                             verbose_name=_("Bootable"),
                             filters=(filters.yesno, filters.capfirst))
    encryption = tables.Column(get_encrypted_value,
                               verbose_name=_("Encrypted"),
                               link=get_encrypted_link)

    class Meta(object):
        name = "volumes"
        verbose_name = _("Volumes")
        status_columns = ["status"]
        row_class = UpdateRow
        table_actions = (CreateVolume, AcceptTransfer, DeleteVolume,
                         VolumesFilterAction)

        launch_actions = (LaunchVolumeNG, )

        row_actions = ((
            EditVolume,
            ExtendVolume,
        ) + launch_actions + (EditAttachments, CreateSnapshot, CreateBackup,
                              RetypeVolume, UploadToImage, CreateTransfer,
                              DeleteTransfer, DeleteVolume, UpdateMetadata))
Esempio n. 2
0
class FlavorsTable(tables.DataTable):
    name = tables.WrappingColumn('name', verbose_name=_('Flavor Name'))
    vcpus = tables.Column('vcpus', verbose_name=_('VCPUs'))
    ram = tables.Column(get_size,
                        verbose_name=_('RAM'),
                        attrs={'data-type': 'size'})
    disk = tables.Column(get_disk_size,
                         verbose_name=_('Root Disk'),
                         attrs={'data-type': 'size'})
    ephemeral = tables.Column(get_ephemeral_size,
                              verbose_name=_('Ephemeral Disk'),
                              attrs={'data-type': 'size'})
    swap = tables.Column(get_swap_size,
                         verbose_name=_('Swap Disk'),
                         attrs={'data-type': 'size'})
    rxtx_factor = tables.Column('rxtx_factor', verbose_name=_("RX/TX factor"))
    flavor_id = tables.Column('id', verbose_name=_('ID'))
    public = tables.Column("is_public",
                           verbose_name=_("Public"),
                           empty_value=False,
                           filters=(filters.yesno, filters.capfirst))
    extra_specs = UpdateMetadataColumn(
        get_extra_specs,
        verbose_name=_("Metadata"),
        link=True,
        empty_value=False,
        filters=(filters.yesno, filters.capfirst),
        link_attrs={'ng-controller': 'MetadataModalHelperController as modal'})

    class Meta(object):
        name = "flavors"
        verbose_name = _("Flavors")
        table_actions = (FlavorFilterAction, CreateFlavor, DeleteFlavor)
        row_actions = (ModifyAccess, UpdateMetadata, DeleteFlavor)
Esempio n. 3
0
class NetworksTable(tables.DataTable):
    name = tables.WrappingColumn("name_or_id",
                                 verbose_name=_("Name"),
                                 link='horizon:project:networks:detail')
    subnets = tables.Column(
        get_subnets,
        verbose_name=_("Subnets Associated"),
    )
    shared = tables.Column("shared",
                           verbose_name=_("Shared"),
                           filters=(filters.yesno, filters.capfirst))
    external = tables.Column("router:external",
                             verbose_name=_("External"),
                             filters=(filters.yesno, filters.capfirst))
    status = tables.Column("status",
                           verbose_name=_("Status"),
                           display_choices=STATUS_DISPLAY_CHOICES)
    admin_state = tables.Column("admin_state",
                                verbose_name=_("Admin State"),
                                display_choices=DISPLAY_CHOICES)

    def get_object_display(self, network):
        return network.name_or_id

    class Meta(object):
        name = "networks"
        verbose_name = _("Networks")
        table_actions = (CreateNetwork, DeleteNetwork,
                         ProjectNetworksFilterAction)
        row_actions = (EditNetwork, CreateSubnet, DeleteNetwork)
Esempio n. 4
0
class GroupTypesTable(tables.DataTable):
    name = tables.WrappingColumn("name",
                                 verbose_name=_("Name"),
                                 form_field=forms.CharField(max_length=64))
    description = tables.Column(lambda obj: getattr(obj, 'description', None),
                                verbose_name=_('Description'),
                                form_field=forms.CharField(
                                    widget=forms.Textarea(attrs={'rows': 4}),
                                    required=False))
    public = tables.Column("is_public",
                           verbose_name=_("Public"),
                           filters=(filters.yesno, filters.capfirst),
                           form_field=forms.BooleanField(label=_('Public'),
                                                         required=False))

    def get_object_display(self, group_type):
        return group_type.name

    def get_object_id(self, group_type):
        return str(group_type.id)

    class Meta(object):
        name = "group_types"
        verbose_name = _("Group Types")
        table_actions = (
            GroupTypesFilterAction,
            CreateGroupType,
            DeleteGroupType,
        )
        row_actions = (EditGroupType, DeleteGroupType)
        row_class = UpdateRow
Esempio n. 5
0
class SecurityServicesTable(tables.DataTable):
    name = tables.WrappingColumn(
        "name",
        verbose_name=_("Name"),
        link="horizon:admin:security_services:security_service_detail")
    project = tables.Column("project_name", verbose_name=_("Project"))
    dns_ip = tables.Column("dns_ip", verbose_name=_("DNS IP"))
    server = tables.Column("server", verbose_name=_("Server"))
    domain = tables.Column("domain", verbose_name=_("Domain"))
    user = tables.Column("user", verbose_name=_("Sid"))

    def get_object_display(self, security_service):
        return security_service.name

    def get_object_id(self, security_service):
        return str(security_service.id)

    class Meta(object):
        name = "security_services"
        verbose_name = _("Security Services")
        table_actions = (
            tables.NameFilterAction,
            DeleteSecurityService,
        )
        row_actions = (DeleteSecurityService, )
Esempio n. 6
0
class VolumeSnapshotsTable(volume_tables.VolumesTableBase):
    name = tables.WrappingColumn("name",
                                 verbose_name=_("Name"),
                                 link="horizon:project:snapshots:detail")
    volume_name = SnapshotVolumeNameColumn(
        "name",
        verbose_name=_("Volume Name"),
        link="horizon:project:volumes:detail")

    class Meta(object):
        name = "volume_snapshots"
        verbose_name = _("Volume Snapshots")
        pagination_param = 'snapshot_marker'
        prev_pagination_param = 'prev_snapshot_marker'
        table_actions = (
            VolumeSnapshotsFilterAction,
            DeleteVolumeSnapshot,
        )

        launch_actions = ()
        if getattr(settings, 'LAUNCH_INSTANCE_LEGACY_ENABLED', False):
            launch_actions = (LaunchSnapshot, ) + launch_actions
        if getattr(settings, 'LAUNCH_INSTANCE_NG_ENABLED', True):
            launch_actions = (LaunchSnapshotNG, ) + launch_actions

        row_actions = (
            (CreateVolumeFromSnapshot, ) + launch_actions +
            (EditVolumeSnapshot, DeleteVolumeSnapshot, UpdateMetadata))
        row_class = UpdateRow
        status_columns = ("status", )
        permissions = [
            ('openstack.services.volume', 'openstack.services.volumev2'),
        ]
Esempio n. 7
0
class NetworksTable(tables.DataTable):
    tenant = tables.Column("tenant_name", verbose_name=_("Project"))
    name = tables.WrappingColumn("name_or_id",
                                 verbose_name=_("Network Name"),
                                 link='horizon:admin:networks:detail')
    subnets = tables.Column(
        project_tables.get_subnets,
        verbose_name=_("Subnets Associated"),
    )
    num_agents = tables.Column("num_agents", verbose_name=_("DHCP Agents"))
    shared = tables.Column("shared",
                           verbose_name=_("Shared"),
                           filters=(filters.yesno, filters.capfirst))
    external = tables.Column("router:external",
                             verbose_name=_("External"),
                             filters=(filters.yesno, filters.capfirst))
    status = tables.Column(
        "status",
        verbose_name=_("Status"),
        display_choices=project_tables.STATUS_DISPLAY_CHOICES)
    admin_state = tables.Column("admin_state",
                                verbose_name=_("Admin State"),
                                display_choices=DISPLAY_CHOICES)
    availability_zones = tables.Column(get_availability_zones,
                                       verbose_name=_("Availability Zones"))

    def get_object_display(self, network):
        return network.name_or_id

    class Meta(object):
        name = "networks"
        verbose_name = _("Networks")
        table_actions = (CreateNetwork, project_tables.DeleteNetwork,
                         AdminNetworksFilterAction)
        row_actions = (EditNetwork, CreateSubnet, project_tables.DeleteNetwork)

    def __init__(self, request, data=None, needs_form_wrapper=None, **kwargs):
        super(NetworksTable,
              self).__init__(request,
                             data=data,
                             needs_form_wrapper=needs_form_wrapper,
                             **kwargs)
        try:
            if not api.neutron.is_extension_supported(
                    request, "network_availability_zone"):
                del self.columns["availability_zones"]
        except Exception:
            msg = _("Unable to check if network availability zone extension "
                    "is supported")
            exceptions.handle(self.request, msg)
            del self.columns['availability_zones']
        try:
            if not api.neutron.is_extension_supported(request,
                                                      'dhcp_agent_scheduler'):
                del self.columns['num_agents']
        except Exception:
            msg = _("Unable to check if DHCP agent scheduler "
                    "extension is supported")
            exceptions.handle(self.request, msg)
            del self.columns['num_agents']
Esempio n. 8
0
class NovaShareNetworkTable(tables.DataTable):
    name = tables.WrappingColumn(
        "name", verbose_name=_("Name"),
        link="horizon:project:shares:share_network_detail")
    nova_net = tables.Column("nova_net", verbose_name=_("Nova Net"))
    ip_version = tables.Column("ip_version", verbose_name=_("IP Version"))
    network_type = tables.Column("network_type",
                                 verbose_name=_("Network Type"))
    segmentation_id = tables.Column("segmentation_id",
                                    verbose_name=_("Segmentation Id"))

    def get_object_display(self, share_network):
        return share_network.name or str(share_network.id)

    def get_object_id(self, share_network):
        return str(share_network.id)

    class Meta(object):
        name = "share_networks"
        verbose_name = _("Share Networks")
        table_actions = (
            tables.NameFilterAction,
            Create,
            Delete)
        row_class = UpdateRow
        row_actions = (
            EditShareNetwork,
            Delete)
Esempio n. 9
0
class PortsTable(project_tables.PortsTable):
    name = tables.WrappingColumn("name_or_id",
                                 verbose_name=_("Name"),
                                 link="horizon:admin:networks:ports:detail")
    failure_url = reverse_lazy('horizon:admin:networks:index')

    @memoized.memoized_method
    def _get_network(self):
        try:
            network_id = self.kwargs['network_id']
            network = api.neutron.network_get(self.request, network_id)
            network.set_id_as_name_if_empty(length=0)
        except Exception:
            msg = _('Unable to retrieve details for network "%s".') \
                % (network_id)
            exceptions.handle(self.request, msg, redirect=self.failure_url)
        return network

    class Meta(object):
        name = "ports"
        verbose_name = _("Ports")
        table_actions = (CreatePort, DeletePort, tables.FilterAction)
        row_actions = (
            UpdatePort,
            DeletePort,
        )
        hidden_title = False
Esempio n. 10
0
class ShareNetworksTable(tables.DataTable):
    name = tables.WrappingColumn(
        "name",
        verbose_name=_("Name"),
        link="horizon:admin:share_networks:share_network_detail")
    project = tables.Column("project_name", verbose_name=_("Project"))
    neutron_net = tables.Column("neutron_net", verbose_name=_("Neutron Net"))
    neutron_subnet = tables.Column("neutron_subnet",
                                   verbose_name=_("Neutron Subnet"))
    ip_version = tables.Column("ip_version", verbose_name=_("IP Version"))
    network_type = tables.Column("network_type",
                                 verbose_name=_("Network Type"))
    segmentation_id = tables.Column("segmentation_id",
                                    verbose_name=_("Segmentation Id"))

    def get_object_display(self, share_network):
        return share_network.name or str(share_network.id)

    def get_object_id(self, share_network):
        return str(share_network.id)

    class Meta(object):
        name = "share_networks"
        verbose_name = _("Share Networks")
        table_actions = (
            tables.NameFilterAction,
            sn_tables.Delete,
        )
        row_class = sn_tables.UpdateRow
        row_actions = (sn_tables.Delete, )
Esempio n. 11
0
class PortsTable(tables.DataTable):
    name = tables.WrappingColumn("name_or_id",
                                 verbose_name=_("Name"),
                                 link="horizon:project:networks:ports:detail")
    fixed_ips = tables.Column(get_fixed_ips, verbose_name=_("Fixed IPs"))
    attached = tables.Column(get_attached, verbose_name=_("Attached Device"))
    status = tables.Column("status",
                           verbose_name=_("Status"),
                           display_choices=STATUS_DISPLAY_CHOICES)
    admin_state = tables.Column("admin_state",
                                verbose_name=_("Admin State"),
                                display_choices=DISPLAY_CHOICES)
    mac_state = tables.Column("mac_state",
                              empty_value=api.neutron.OFF_STATE,
                              verbose_name=_("MAC Learning State"))

    def get_object_display(self, port):
        return port.id

    class Meta(object):
        name = "ports"
        verbose_name = _("Ports")
        table_actions = (tables.FilterAction, CreatePort, DeletePort)
        row_actions = (UpdatePort, DeletePort)
        hidden_title = False

    def __init__(self, request, data=None, needs_form_wrapper=None, **kwargs):
        super(PortsTable, self).__init__(request,
                                         data=data,
                                         needs_form_wrapper=needs_form_wrapper,
                                         **kwargs)
        if not api.neutron.is_extension_supported(request, 'mac-learning'):
            del self.columns['mac_state']
Esempio n. 12
0
class VolumesTable(volumes_tables.VolumesTable):
    name = tables.WrappingColumn("name",
                                 verbose_name=_("Name"),
                                 link="horizon:admin:volumes:detail")
    host = tables.Column("os-vol-host-attr:host", verbose_name=_("Host"))
    tenant = tables.Column(lambda obj: getattr(obj, 'tenant_name', None),
                           verbose_name=_("Project"))

    class Meta(object):
        name = "volumes"
        verbose_name = _("Volumes")
        status_columns = ["status"]
        row_class = volumes_tables.UpdateRow
        table_actions = (ManageVolumeAction, volumes_tables.DeleteVolume,
                         VolumesFilterAction)
        row_actions = (volumes_tables.DeleteVolume, UpdateVolumeStatusAction,
                       UnmanageVolumeAction, MigrateVolume,
                       volumes_tables.UpdateMetadata)
        columns = (
            'tenant',
            'host',
            'name',
            'size',
            'status',
            'volume_type',
            'attachments',
            'bootable',
            'encryption',
        )
Esempio n. 13
0
class SharesTableBase(tables.DataTable):
    STATUS_CHOICES = (
        ("available", True),
        ("AVAILABLE", True),
        ("creating", None),
        ("CREATING", None),
        ("deleting", None),
        ("DELETING", None),
        ("migrating", None),
        ("migrating_to", None),
        ("error", False),
        ("ERROR", False),
        ("error_deleting", False),
        ("ERROR_DELETING", False),
        ("MANAGE_ERROR", False),
        ("UNMANAGE_ERROR", False),
        ("extending_error", False),
    )
    STATUS_DISPLAY_CHOICES = (
        ("available", pgettext_lazy("Current status of share", u"Available")),
        ("AVAILABLE", pgettext_lazy("Current status of share", u"Available")),
        ("creating", pgettext_lazy("Current status of share", u"Creating")),
        ("CREATING", pgettext_lazy("Current status of share", u"Creating")),
        ("deleting", pgettext_lazy("Current status of share", u"Deleting")),
        ("DELETING", pgettext_lazy("Current status of share", u"Deleting")),
        ("migrating", pgettext_lazy("Current status of share", u"Migrating")),
        ("migrating_to",
         pgettext_lazy("Current status of share", u"Migrating to")),
        ("error", pgettext_lazy("Current status of share", u"Error")),
        ("ERROR", pgettext_lazy("Current status of share", u"Error")),
        ("error_deleting", pgettext_lazy("Current status of share",
                                         u"Deleting")),
        ("ERROR_DELETING", pgettext_lazy("Current status of share",
                                         u"Deleting")),
        ("MANAGE_ERROR",
         pgettext_lazy("Current status of share", u"Manage Error")),
        ("UNMANAGE_ERROR",
         pgettext_lazy("Current status of share", u"Unmanage Error")),
        ("extending_error",
         pgettext_lazy("Current status of share", u"Extending Error")),
    )
    name = tables.WrappingColumn("name",
                                 verbose_name=_("Name"),
                                 link="horizon:project:shares:detail")
    description = tables.Column("description",
                                verbose_name=_("Description"),
                                truncate=40)
    metadata = tables.Column("metadata", verbose_name=_("Metadata"))
    size = tables.Column(get_size,
                         verbose_name=_("Size"),
                         attrs={'data-type': 'size'})
    status = tables.Column("status",
                           filters=(title, ),
                           verbose_name=_("Status"),
                           status=True,
                           status_choices=STATUS_CHOICES,
                           display_choices=STATUS_DISPLAY_CHOICES)

    def get_object_display(self, obj):
        return obj.name or obj.id
Esempio n. 14
0
class VolumeSnapshotsTable(volumes_tables.VolumesTableBase):
    name = tables.WrappingColumn("name",
                                 verbose_name=_("Name"),
                                 link="horizon:admin:volumes:snapshots:detail")
    volume_name = snapshots_tables.SnapshotVolumeNameColumn(
        "name",
        verbose_name=_("Volume Name"),
        link="horizon:admin:volumes:volumes:detail")
    host = tables.Column("host_name", verbose_name=_("Host"))
    tenant = tables.Column("tenant_name", verbose_name=_("Project"))

    class Meta(object):
        name = "volume_snapshots"
        verbose_name = _("Volume Snapshots")
        pagination_param = 'snapshot_marker'
        prev_pagination_param = 'prev_snapshot_marker'
        table_actions = (
            snapshots_tables.VolumeSnapshotsFilterAction,
            snapshots_tables.DeleteVolumeSnapshot,
        )
        row_actions = (
            snapshots_tables.DeleteVolumeSnapshot,
            UpdateVolumeSnapshotStatus,
        )
        row_class = UpdateRow
        status_columns = ("status", )
        columns = (
            'tenant',
            'host',
            'name',
            'description',
            'size',
            'status',
            'volume_name',
        )
Esempio n. 15
0
class NodesTable(tables.DataTable):
    node_id = tables.WrappingColumn('id', verbose_name=_("ID"))
    name = tables.WrappingColumn('name', verbose_name=_("Name"))
    ip = tables.Column('ip', verbose_name=_("IP Address"))
    n_cores = tables.Column('n_cores', verbose_name=_("Num CPUs"))
    core_freq_mhz = tables.Column('core_freq_mhz',
                                  verbose_name=_("Core Frequency [MHz]"))
    ram_mb = tables.Column('ram_mb', verbose_name=_("Memory [MB]"))

    class Meta(object):
        name = "nodes"
        verbose_name = _("Nodes")
        table_actions = (
            tables.FilterAction,
            HypervisorLinkAction,
        )
Esempio n. 16
0
class ShareGroupTypesTable(tables.DataTable):
    name = tables.WrappingColumn("name", verbose_name=_("Name"))
    group_specs = tables.Column("group_specs", verbose_name=_("Group specs"))
    share_types = tables.Column("share_types", verbose_name=_("Share types"))
    visibility = tables.Column(
        "is_public", verbose_name=_("Visibility"),
        filters=(lambda d: 'public' if d is True else 'private', ),
    )
    is_default = tables.Column(
        "is_default", verbose_name=_("Is default"),
        filters=(lambda d: 'Yes' if d is True else '-', ),
    )

    def get_object_display(self, share_group_type):
        return share_group_type.name

    def get_object_id(self, share_group_type):
        return str(share_group_type.id)

    class Meta(object):
        name = "share_group_types"
        verbose_name = _("Share Group Types")
        table_actions = (
            tables.NameFilterAction,
            CreateShareGroupType,
            DeleteShareGroupType,
        )
        row_actions = (
            UpdateShareGroupType,
            ManageShareGroupTypeAccess,
            DeleteShareGroupType,
        )
Esempio n. 17
0
class VolumeDetailsSnapshotsTable(volume_tables.VolumesTableBase):
    group_snapshot = GroupSnapshotNameColumn(
        "name",
        verbose_name=_("Group Snapshot"),
        link="horizon:project:vg_snapshots:detail")
    name = tables.WrappingColumn("name",
                                 verbose_name=_("Name"),
                                 link="horizon:project:snapshots:detail")

    class Meta(object):
        name = "volume_snapshots"
        verbose_name = _("Volume Snapshots")
        pagination_param = 'snapshot_marker'
        prev_pagination_param = 'prev_snapshot_marker'
        table_actions = (
            VolumeSnapshotsFilterAction,
            DeleteVolumeSnapshot,
        )

        launch_actions = ()
        if settings.LAUNCH_INSTANCE_LEGACY_ENABLED:
            launch_actions = (LaunchSnapshot, ) + launch_actions
        if settings.LAUNCH_INSTANCE_NG_ENABLED:
            launch_actions = (LaunchSnapshotNG, ) + launch_actions

        row_actions = ((CreateVolumeFromSnapshot, ) + launch_actions +
                       (EditVolumeSnapshot, DeleteVolumeSnapshot, CreateBackup,
                        UpdateMetadata))
        row_class = UpdateRow
        status_columns = ("status", )
Esempio n. 18
0
class AdminHypervisorsTable(tables.DataTable):
    STATUS_CHOICES = (
        ("enabled", True),
        ("down", False),
        ("disabled", False),
    )

    hostname = tables.WrappingColumn("hypervisor_hostname",
                                     link="horizon:admin:hypervisors:detail",
                                     verbose_name=_("Hostname"))

    cpu_model = tables.Column(get_cpu_model,
                              verbose_name=_("CPU"))

    hypervisor_type = tables.Column("hypervisor_type",
                                    verbose_name=_("Type"))

    vcpus_used = tables.Column(get_vcpus_used,
                               verbose_name=_("VCPUs (used)"),
                               attrs={'data-type': 'vcpus_used'})

    vcpus = tables.Column("vcpus",
                          verbose_name=_("VCPUs (total)"))

    memory_used = tables.Column(get_memory_used,
                                verbose_name=_("RAM (used)"),
                                attrs={'data-type': 'size'},
                                filters=(sizeformat.mb_float_format,))

    memory = tables.Column(get_memory_total,
                           verbose_name=_("RAM (total)"),
                           attrs={'data-type': 'size'},
                           filters=(sizeformat.mb_float_format,))

    local_used = tables.Column('local_gb_used',
                               verbose_name=_("Local Storage (used)"),
                               attrs={'data-type': 'size'},
                               filters=(sizeformat.diskgbformat,))

    local = tables.Column('local_gb',
                          verbose_name=_("Local Storage (total)"),
                          attrs={'data-type': 'size'},
                          filters=(sizeformat.diskgbformat,))

    running_vms = tables.Column("running_vms",
                                verbose_name=_("Instances"))

    status = tables.Column(get_status,
                           verbose_name=_("Status"),
                           status=True,
                           status_choices=STATUS_CHOICES)

    def get_object_id(self, hypervisor):
        return "%s_%s" % (hypervisor.id,
                          hypervisor.hypervisor_hostname)

    class Meta(object):
        name = "hypervisors"
        verbose_name = _("Hypervisors")
        status_columns = ["status"]
Esempio n. 19
0
class SharesTable(SharesTableBase):
    name = tables.WrappingColumn("name",
                                 verbose_name=_("Name"),
                                 link="horizon:project:shares:detail")
    visibility = tables.Column(
        "is_public",
        verbose_name=_("Visibility"),
        help_text=("Whether this share visible to all tenants (public) or "
                   "only for owner (private)."),
        filters=(lambda d: 'public' if d is True else 'private', ),
    )
    proto = tables.Column("share_proto", verbose_name=_("Protocol"))
    share_network = tables.Column("share_network",
                                  verbose_name=_("Share Network"),
                                  empty_value="-")

    class Meta(object):
        name = "shares"
        verbose_name = _("Shares")
        status_columns = ["status"]
        row_class = UpdateRow
        table_actions = (tables.NameFilterAction, CreateShare, DeleteShare)
        row_actions = (EditShare, ExtendShare, RevertShare,
                       ss_tables.CreateShareSnapshot, ManageRules,
                       ManageReplicas, EditShareMetadata, DeleteShare)
Esempio n. 20
0
class GroupsTable(tables.DataTable):
    STATUS_CHOICES = (
        ("in-use", True),
        ("available", True),
        ("creating", None),
        ("error", False),
    )
    STATUS_DISPLAY_CHOICES = (
        ("available",
         pgettext_lazy("Current status of Volume Group", "Available")),
        ("in-use",
         pgettext_lazy("Current status of Volume Group", "In-use")),
        ("error",
         pgettext_lazy("Current status of Volume Group", "Error")),
        ("updating",
         pgettext_lazy("Current status of Volume Group", "Updating")),
        ("deleting",
         pgettext_lazy("Current status of Volume Group", "Deleting")),
    )

    name = tables.WrappingColumn("name_or_id",
                                 verbose_name=_("Name"),
                                 link="horizon:project:volume_groups:detail")
    description = tables.Column("description",
                                verbose_name=_("Description"),
                                truncate=40)
    status = tables.Column("status",
                           verbose_name=_("Status"),
                           status=True,
                           status_choices=STATUS_CHOICES,
                           display_choices=STATUS_DISPLAY_CHOICES)
    availability_zone = tables.Column("availability_zone",
                                      verbose_name=_("Availability Zone"))
    volume_type = tables.Column(get_volume_types,
                                verbose_name=_("Volume Type(s)"))
    has_snapshots = tables.Column("has_snapshots",
                                  verbose_name=_("Has Snapshots"),
                                  filters=(filters.yesno,))

    def get_object_id(self, group):
        return group.id

    class Meta(object):
        name = "volume_groups"
        verbose_name = _("Volume Groups")
        table_actions = (
            CreateGroup,
            GroupsFilterAction,
        )
        row_actions = (
            CreateSnapshot,
            ManageVolumes,
            EditGroup,
            CloneGroup,
            RemoveAllVolumes,
            DeleteGroup,
        )
        row_class = UpdateRow
        status_columns = ("status",)
Esempio n. 21
0
class VolumesTable(VolumesTableBase):
    name = tables.WrappingColumn("name",
                                 verbose_name=_("Name"),
                                 link="horizon:admin:volumes:volumes:detail")
    #    volume_type = tables.Column(get_volume_type,
    #                                verbose_name=_("Type"))
    attachments = AttachmentColumn("attachments",
                                   verbose_name=_("Attached To"))
    availability_zone = tables.Column("availability_zone",
                                      verbose_name=_("Availability Zone"))
    bootable = tables.Column('is_bootable',
                             verbose_name=_("Bootable"),
                             filters=(filters.yesno, filters.capfirst))
    encryption = tables.Column(get_encrypted_value,
                               verbose_name=_("Encrypted"),
                               link=get_encrypted_link)

    #    class Meta:
    #        name = "volumes"
    #        verbose_name = _("Volumes")
    #        status_columns = ["status"]
    #        row_class = UpdateRow
    #        table_actions = (CreateVolume, IncreaseVolume, DeleteVolume, VolumesFilterAction)
    #        row_actions = (EditVolume, ExtendVolume, LaunchVolume, EditAttachments,
    #                       CreateSnapshot, CreateBackup, RetypeVolume,
    #                       UploadToImage, DeleteVolume, UpdateVolumeStatusAction)

    class Meta(object):
        name = "volumes"
        verbose_name = _("Volumes")
        status_columns = ["status"]
        row_class = UpdateRow
        #table_actions = (CreateVolume, AcceptTransfer, DeleteVolume,
        table_actions = (CreateVolume, IncreaseVolume, DeleteVolume,
                         VolumesFilterAction)

        launch_actions = ()
        if getattr(settings, 'LAUNCH_INSTANCE_LEGACY_ENABLED', False):
            launch_actions = (LaunchVolume, ) + launch_actions
        if getattr(settings, 'LAUNCH_INSTANCE_NG_ENABLED', True):
            launch_actions = (LaunchVolumeNG, ) + launch_actions

    #  row_actions = ((EditVolume, ExtendVolume,) +
    #                 launch_actions +
    #                 (EditAttachments, CreateSnapshot, CreateBackup,
    #                  RetypeVolume, UploadToImage, CreateTransfer,
    #                  DeleteTransfer, DeleteVolume))

        row_actions = ((
            EditVolume,
            ExtendVolume,
        ) + launch_actions + (
            EditAttachments,
            CreateSnapshot,
            CreateBackup,
            UploadToImage,
            DeleteVolume,
            UpdateVolumeStatusAction,
        ))
Esempio n. 22
0
class HostsTable(tables.DataTable):
    name = tables.WrappingColumn('name',
                                 # link="horizon:ceph:hosts:detail",
                                 verbose_name=_('Host Name'))

    class Meta(object):
        name = "hosts"
        verbose_name = _("Ceph Hosts")
Esempio n. 23
0
class RolesTable(tables.DataTable):
    name = tables.WrappingColumn('name', verbose_name=_('Role Name'))
    id = tables.Column('id', verbose_name=_('Role ID'))

    class Meta(object):
        name = "roles"
        verbose_name = _("Roles")
        row_actions = (EditRoleLink, DeleteRolesAction)
        table_actions = (RoleFilterAction, CreateRoleLink, DeleteRolesAction)
Esempio n. 24
0
class TenantsTable(tables.DataTable):
    name = tables.WrappingColumn('name',
                                 verbose_name=_('Name'),
                                 link=("horizon:identity:projects:detail"),
                                 form_field=forms.CharField(max_length=64))
    description = tables.Column(lambda obj: getattr(obj, 'description', None),
                                verbose_name=_('Description'),
                                form_field=forms.CharField(
                                    widget=forms.Textarea(attrs={'rows': 4}),
                                    required=False))
    id = tables.Column('id', verbose_name=_('Project ID'))
    enabled = tables.Column('enabled',
                            verbose_name=_('Enabled'),
                            status=True,
                            filters=(filters.yesno, filters.capfirst),
                            form_field=forms.BooleanField(label=_('Enabled'),
                                                          required=False))

    if api.keystone.VERSIONS.active >= 3:
        domain_name = tables.Column('domain_name',
                                    verbose_name=_('Domain Name'))
        enabled = tables.Column('enabled',
                                verbose_name=_('Enabled'),
                                status=True,
                                filters=(filters.yesno, filters.capfirst),
                                form_field=forms.BooleanField(
                                    label=_('Enabled'), required=False))

    def get_project_detail_link(self, project):
        # this method is an ugly monkey patch, needed because
        # the column link method does not provide access to the request
        if policy.check((("identity", "identity:get_project"), ),
                        self.request,
                        target={"project": project}):
            return reverse("horizon:identity:projects:detail",
                           args=(project.id, ))
        return None

    def __init__(self, request, data=None, needs_form_wrapper=None, **kwargs):
        super(TenantsTable,
              self).__init__(request,
                             data=data,
                             needs_form_wrapper=needs_form_wrapper,
                             **kwargs)
        # see the comment above about ugly monkey patches
        self.columns['name'].get_link_url = self.get_project_detail_link

    class Meta(object):
        name = "tenants"
        verbose_name = _("Projects")
        row_class = UpdateRow
        row_actions = (UpdateMembersLink, UpdateGroupsLink, UpdateProject,
                       UsageLink, ModifyQuotas, DeleteTenantsAction,
                       RescopeTokenToProject)
        table_actions = (TenantFilterAction, CreateProject,
                         DeleteTenantsAction)
        pagination_param = "tenant_marker"
Esempio n. 25
0
class RoleAssignmentsTable(tables.DataTable):

    project = tables.WrappingColumn(get_project_name,
                                    verbose_name=_('Project'),
                                    link=get_project_link,
                                    form_field=forms.CharField(max_length=64))

    domain = tables.WrappingColumn(get_domain_name,
                                   verbose_name=_('Domain'),
                                   form_field=forms.CharField(max_length=64))

    system = tables.WrappingColumn(get_system_scope,
                                   verbose_name=_('System Scope'),
                                   form_field=forms.CharField(max_length=64))

    role = tables.Column(get_role_name,
                         verbose_name=_('Role'),
                         form_field=forms.CharField(
                             widget=forms.Textarea(attrs={'rows': 4}),
                             required=False))

    def get_object_id(self, datum):
        """Identifier of the role assignment."""

        # Role assignment doesn't have identifier so one will be created
        # from the identifier of scope, user and role. This will guaranty the
        # unicity.
        scope_id = ""
        if "project" in datum.scope:
            scope_id = datum.scope["project"]["id"]
        elif "domain" in datum.scope:
            scope_id = datum.scope["domain"]["id"]

        assignee_id = ""
        if hasattr(datum, "user"):
            assignee_id = datum.user["id"]
        elif hasattr(datum, "group"):
            assignee_id = datum.group["id"]

        return "%s%s%s" % (assignee_id, datum.role["id"], scope_id)

    class Meta(object):
        name = "roleassignmentstable"
        verbose_name = _("Role assignments")
Esempio n. 26
0
class RBACPoliciesTable(tables.DataTable):
    tenant = tables.Column("tenant_name", verbose_name=_("Project"))
    id = tables.WrappingColumn('id',
                               verbose_name=_('ID'),
                               link="horizon:admin:rbac_policies:detail")
    object_type = tables.WrappingColumn('object_type',
                                        verbose_name=_('Object Type'))
    object_name = tables.Column("object_name", verbose_name=_("Object"))
    target_tenant = tables.Column("target_tenant_name",
                                  verbose_name=_("Target Project"))

    class Meta(object):
        name = "rbac policies"
        verbose_name = _("RBAC Policies")
        table_actions = (
            CreateRBACPolicy,
            DeleteRBACPolicy,
        )
        row_actions = (UpdateRBACPolicy, DeleteRBACPolicy)
Esempio n. 27
0
class ShareGroupSnapshotsTable(tables.DataTable):
    STATUS_CHOICES = (
        ("available", True),
        ("creating", None),
        ("error", False),
    )
    STATUS_DISPLAY_CHOICES = (
        ("available",
         pgettext_lazy("Current status of snapshot", u"Available")),
        ("creating", pgettext_lazy("Current status of snapshot", u"Creating")),
        ("error", pgettext_lazy("Current status of snapshot", u"Error")),
    )
    name = tables.WrappingColumn(
        "name", verbose_name=_("Name"),
        link="horizon:project:share_group_snapshots:detail")
    description = tables.Column(
        "description",
        verbose_name=_("Description"),
        truncate=40)
    created_at = tables.Column(
        "created_at",
        verbose_name=_("Created at"),
        filters=(
            filters.parse_isotime,
        ))
    status = tables.Column(
        "status",
        filters=(title,),
        verbose_name=_("Status"),
        status=True,
        status_choices=STATUS_CHOICES,
        display_choices=STATUS_DISPLAY_CHOICES)
    source = ShareGroupSnapshotShareGroupNameColumn(
        "share_group",
        verbose_name=_("Source"),
        link="horizon:project:share_groups:detail")

    def get_object_display(self, obj):
        return obj.name

    class Meta(object):
        name = "share_group_snapshots"
        verbose_name = _("Share Group Snapshots")
        status_columns = ["status"]
        row_class = UpdateShareGroupSnapshotRow
        table_actions = (
            tables.NameFilterAction,
            DeleteShareGroupSnapshot,
        )
        row_actions = (
            CreateShareGroupFromSnapshot,
            UpdateShareGroupSnapshot,
            DeleteShareGroupSnapshot,
        )
Esempio n. 28
0
class RoutersTable(tables.DataTable):
    name = tables.WrappingColumn("name",
                                 verbose_name=_("Name"),
                                 link="horizon:project:routers:detail")
    status = tables.Column("status",
                           verbose_name=_("Status"),
                           status=True,
                           display_choices=STATUS_DISPLAY_CHOICES)
    distributed = tables.Column("distributed",
                                filters=(filters.yesno, filters.capfirst),
                                verbose_name=_("Distributed"))
    ha = tables.Column(
        "ha",
        filters=(filters.yesno, filters.capfirst),
        # Translators: High Availability mode of Neutron router
        verbose_name=_("HA mode"))
    ext_net = tables.Column(get_external_network,
                            verbose_name=_("External Network"))
    admin_state = tables.Column("admin_state",
                                verbose_name=_("Admin State"),
                                display_choices=ADMIN_STATE_DISPLAY_CHOICES)
    availability_zones = tables.Column(get_availability_zones,
                                       verbose_name=_("Availability Zones"))

    def __init__(self, request, data=None, needs_form_wrapper=None, **kwargs):
        super(RoutersTable,
              self).__init__(request,
                             data=data,
                             needs_form_wrapper=needs_form_wrapper,
                             **kwargs)
        if not api.neutron.get_feature_permission(request, "dvr", "get"):
            del self.columns["distributed"]
        if not api.neutron.get_feature_permission(request, "l3-ha", "get"):
            del self.columns["ha"]
        try:
            if not api.neutron.is_extension_supported(
                    request, "router_availability_zone"):
                del self.columns["availability_zones"]
        except Exception:
            msg = _("Unable to check if router availability zone extension "
                    "is supported")
            exceptions.handle(self.request, msg)
            del self.columns['availability_zones']

    def get_object_display(self, obj):
        return obj.name

    class Meta(object):
        name = "routers"
        verbose_name = _("Routers")
        status_columns = ["status"]
        row_class = UpdateRow
        table_actions = (CreateRouter, DeleteRouter, RoutersFilterAction)
        row_actions = (SetGateway, ClearGateway, EditRouter, DeleteRouter)
class LibraryPolicyRulesTable(tables.DataTable):
    name = tables.Column("name", verbose_name=_("Rule Name"),
                         classes=('nowrap-col',))
    rule = tables.Column("rule", verbose_name=_("Rule"),
                         filters=(congress.format_rule, linebreaksbr,))
    comment = tables.WrappingColumn("comment", verbose_name=_("Comment"))

    class Meta(object):
        name = "policy_library_rules"
        verbose_name = _("Policy Rules")
        hidden_title = False
Esempio n. 30
0
class ReachabilityTestsTable(tables.DataTable):
    id = tables.Column("id", hidden=True)
    name = tables.Column("name", verbose_name=_("Name"))

    src_tenant = tables.WrappingColumn("src_tenant",
                                       verbose_name="Source Tenant")
    src_segment = tables.WrappingColumn("src_segment",
                                        verbose_name="Source Segment")

    src_tenant_id = tables.Column("src_tenant_id",
                                  verbose_name="Source Tenant ID",
                                  hidden=True)
    src_tenant_name = tables.Column("src_tenant_name",
                                    verbose_name="Source Tenant Name",
                                    hidden=True)
    src_segment_id = tables.Column("src_segment_id",
                                   verbose_name="Source Segment ID",
                                   hidden=True)
    src_segment_name = tables.Column("src_segment_name",
                                     verbose_name="Source Segment Name",
                                     hidden=True)

    src_ip = tables.Column("src_ip", verbose_name=_("Source IP"))
    dst_ip = tables.Column("dst_ip", verbose_name=_("Destination IP"))

    test_time = tables.Column(
        "test_time",
        link=("horizon:project:connections:reachability_tests:detail"),
        verbose_name=_("Last Run"))
    status = tables.Column("test_result",
                           filters=(title, filters.replace_underscores),
                           verbose_name=_("Status"),
                           status_choices=STATUS_CHOICES,
                           display_choices=STATUS_DISPLAY_CHOICES)

    class Meta(object):
        name = "reachabilitytests"
        verbose_name = _("Reachability Tests")
        table_actions = (CreateReachabilityTest, RunQuickTest,
                         DeleteReachabilityTests, ReachabilityTestFilterAction)
        row_actions = (RunTest, UpdateTest, DeleteReachabilityTests)