Пример #1
0
    def get_data(self):
        if not hasattr(self, "_pv"):
            pv_id = self.kwargs['pv_id']
            try:
                pv = sysinv.host_pv_get(self.request, pv_id)
            except Exception:
                redirect = reverse('horizon:admin:inventory:index')
                exceptions.handle(self.request,
                                  _('Unable to retrieve details for '
                                    'physical volume "%s".') % pv_id,
                                  redirect=redirect)

            self._pv = pv
        return self._pv
Пример #2
0
    def allowed(self, request, partition=None):
        host = self.table.kwargs['host']
        PARTITION_IN_USE_STATUS = sysinv.PARTITION_IN_USE_STATUS
        PARTITION_STATUS_MSG = sysinv.PARTITION_STATUS_MSG

        if partition:
            pv = None

            if partition.type_guid != sysinv.USER_PARTITION_PHYS_VOL:
                return False

            if partition.ipv_uuid:
                pv = sysinv.host_pv_get(request, partition.ipv_uuid)
                if pv.lvm_vg_name == sysinv.LVG_CINDER_VOLUMES:
                    if (host.personality == "Controller-Active"
                            and host._administrative == 'unlocked'):
                        return False
                else:
                    return False

            if (partition.status ==
                    PARTITION_STATUS_MSG[PARTITION_IN_USE_STATUS]):
                if not (pv and pv.lvm_vg_name == sysinv.LVG_CINDER_VOLUMES):
                    return False

            # Get all the partitions from the same disk.
            disk_partitions = \
                sysinv.host_disk_partition_list(request,
                                                host.uuid,
                                                partition.idisk_uuid)

            if partition.device_path:
                partition_number = re.match('.*?([0-9]+)$',
                                            partition.device_path).group(1)
                for dpart in disk_partitions:
                    dpart_number = re.match('.*?([0-9]+)$',
                                            dpart.device_path).group(1)
                    if int(dpart_number) > int(partition_number):
                        return False

        return True