def _check_pool_and_fs(self, volume, fs_label): """Validates pool and file system of a volume being managed. Checks if the file system for the volume-type chosen matches the one passed in the volume reference. Also, checks if the pool for the volume type matches the pool for the host passed. :param volume: Reference to the volume. :param fs_label: Label of the file system. :raises: ManageExistingVolumeTypeMismatch """ pool_from_vol_type = hnas_utils.get_pool(self.config, volume) pool_from_host = utils.extract_host(volume.host, level='pool') if self.config['services'][pool_from_vol_type]['hdp'] != fs_label: msg = (_("Failed to manage existing volume because the pool of " "the volume type chosen does not match the file system " "passed in the volume reference."), {'File System passed': fs_label, 'File System for volume type': self.config['services'][pool_from_vol_type]['hdp']}) raise exception.ManageExistingVolumeTypeMismatch(reason=msg) if pool_from_host != pool_from_vol_type: msg = (_("Failed to manage existing volume because the pool of " "the volume type chosen does not match the pool of " "the host."), {'Pool of the volume type': pool_from_vol_type, 'Pool of the host': pool_from_host}) raise exception.ManageExistingVolumeTypeMismatch(reason=msg)
def test_get_pool_with_vol_type_id_none(self): self.volume.volume_type_id = None self.volume.volume_type = self.volume_type out = hnas_utils.get_pool(parsed_xml, self.volume) self.assertEqual('default', out)
def _check_pool_and_share(self, volume, nfs_share): """Validates the pool and the NFS share. Checks if the NFS share for the volume-type chosen matches the one passed in the volume reference. Also, checks if the pool for the volume type matches the pool for the host passed. :param volume: cinder volume reference :param nfs_share: NFS share passed to manage :raises: ManageExistingVolumeTypeMismatch """ pool_from_vol_type = hnas_utils.get_pool(self.config, volume) pool_from_host = utils.extract_host(volume.host, level='pool') if self.config['services'][pool_from_vol_type]['hdp'] != nfs_share: msg = (_("Failed to manage existing volume because the pool of " "the volume type chosen does not match the NFS share " "passed in the volume reference."), {'Share passed': nfs_share, 'Share for volume type': self.config['services'][pool_from_vol_type]['hdp']}) raise exception.ManageExistingVolumeTypeMismatch(reason=msg) if pool_from_host != pool_from_vol_type: msg = (_("Failed to manage existing volume because the pool of " "the volume type chosen does not match the pool of " "the host."), {'Pool of the volume type': pool_from_vol_type, 'Pool of the host': pool_from_host}) raise exception.ManageExistingVolumeTypeMismatch(reason=msg)
def _check_pool_and_fs(self, volume, fs_label): """Validates pool and file system of a volume being managed. Checks if the file system for the volume-type chosen matches the one passed in the volume reference. Also, checks if the pool for the volume type matches the pool for the host passed. :param volume: Reference to the volume. :param fs_label: Label of the file system. :raises: ManageExistingVolumeTypeMismatch """ pool_from_vol_type = hnas_utils.get_pool(self.config, volume) pool_from_host = utils.extract_host(volume.host, level='pool') pool = self.config['services'][pool_from_vol_type]['hdp'] if pool != fs_label: msg = (_("Failed to manage existing volume because the " "pool %(pool)s of the volume type chosen does not " "match the file system %(fs_label)s passed in the " "volume reference.") % {'pool': pool, 'fs_label': fs_label}) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg) if pool_from_host != pool_from_vol_type: msg = (_("Failed to manage existing volume because the pool " "%(pool)s of the volume type chosen does not match the " "pool %(pool_host)s of the host.") % {'pool': pool_from_vol_type, 'pool_host': pool_from_host}) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg)
def _check_pool_and_fs(self, volume, fs_label): """Validates pool and file system of a volume being managed. Checks if the file system for the volume-type chosen matches the one passed in the volume reference. Also, checks if the pool for the volume type matches the pool for the host passed. :param volume: Reference to the volume. :param fs_label: Label of the file system. :raises: ManageExistingVolumeTypeMismatch """ pool_from_vol_type = hnas_utils.get_pool(self.config, volume) pool_from_host = utils.extract_host(volume.host, level='pool') pool = self.config['services'][pool_from_vol_type]['hdp'] if pool != fs_label: msg = (_("Failed to manage existing volume because the " "pool %(pool)s of the volume type chosen does not " "match the file system %(fs_label)s passed in the " "volume reference.") % { 'pool': pool, 'fs_label': fs_label }) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg) if pool_from_host != pool_from_vol_type: msg = (_("Failed to manage existing volume because the pool " "%(pool)s of the volume type chosen does not match the " "pool %(pool_host)s of the host.") % { 'pool': pool_from_vol_type, 'pool_host': pool_from_host }) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg)
def _check_pool_and_share(self, volume, nfs_share): """Validates the pool and the NFS share. Checks if the NFS share for the volume-type chosen matches the one passed in the volume reference. Also, checks if the pool for the volume type matches the pool for the host passed. :param volume: cinder volume reference :param nfs_share: NFS share passed to manage :raises: ManageExistingVolumeTypeMismatch """ pool_from_vol_type = hnas_utils.get_pool(self.config, volume) pool_from_host = utils.extract_host(volume.host, level='pool') pool = self.config['services'][pool_from_vol_type]['hdp'] if pool != nfs_share: msg = (_("Failed to manage existing volume because the pool of " "the volume type chosen (%(pool)s) does not match the " "NFS share passed in the volume reference (%(share)s).") % { 'share': nfs_share, 'pool': pool }) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg) if pool_from_host != pool_from_vol_type: msg = (_("Failed to manage existing volume because the pool of " "the volume type chosen (%(pool)s) does not match the " "pool of the host %(pool_host)s") % { 'pool': pool_from_vol_type, 'pool_host': pool_from_host }) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg)
def test_get_pool_with_missing_service_label(self): self.mock_object(volume_types, 'get_volume_type_extra_specs', mock.Mock(return_value={'service_label': 'gold'})) self.volume.volume_type_id = fake_constants.VOLUME_TYPE_ID self.volume.volume_type = self.volume_type out = hnas_utils.get_pool(parsed_xml, self.volume) self.assertEqual('default', out)
def test_get_pool_with_missing_service_label(self): self.mock_object(volume_types, 'get_volume_type_extra_specs', return_value={'service_label': 'gold'}) self.volume.volume_type_id = fake_constants.VOLUME_TYPE_ID self.volume.volume_type = self.volume_type out = hnas_utils.get_pool(parsed_xml, self.volume) self.assertEqual('default', out)
def test_get_pool_with_vol_type(self): self.mock_object(volume_types, 'get_volume_type_extra_specs', mock.Mock(return_value={'service_label': 'silver'})) self.volume.volume_type_id = fake_constants.VOLUME_TYPE_ID self.volume.volume_type = self.volume_type out = hnas_utils.get_pool(parsed_xml, self.volume) self.assertEqual('silver', out)
def _check_pool_and_share(self, volume, nfs_share): """Validates the pool and the NFS share. Checks if the NFS share for the volume-type chosen matches the one passed in the volume reference. Also, checks if the pool for the volume type matches the pool for the host passed. :param volume: cinder volume reference :param nfs_share: NFS share passed to manage :raises ManageExistingVolumeTypeMismatch: """ pool_from_vol_type = hnas_utils.get_pool(self.config, volume) pool_from_host = utils.extract_host(volume.host, level='pool') if (pool_from_vol_type == 'default' and 'default' not in self.config['services']): msg = (_("Failed to manage existing volume %(volume)s because the " "chosen volume type %(vol_type)s does not have a " "service_label configured in its extra-specs and there " "is no pool configured with hnas_svcX_volume_type as " "'default' in cinder.conf.") % { 'volume': volume.id, 'vol_type': getattr(volume.volume_type, 'id', None) }) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg) pool = self.config['services'][pool_from_vol_type]['hdp'] if pool != nfs_share: msg = (_("Failed to manage existing volume because the pool of " "the volume type chosen (%(pool)s) does not match the " "NFS share passed in the volume reference (%(share)s).") % { 'share': nfs_share, 'pool': pool }) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg) if pool_from_host != pool_from_vol_type: msg = (_("Failed to manage existing volume because the pool of " "the volume type chosen (%(pool)s) does not match the " "pool of the host %(pool_host)s") % { 'pool': pool_from_vol_type, 'pool_host': pool_from_host }) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg)
def _check_pool_and_fs(self, volume, fs_label): """Validates pool and file system of a volume being managed. Checks if the file system for the volume-type chosen matches the one passed in the volume reference. Also, checks if the pool for the volume type matches the pool for the host passed. :param volume: Reference to the volume. :param fs_label: Label of the file system. :raises: ManageExistingVolumeTypeMismatch """ pool_from_vol_type = hnas_utils.get_pool(self.config, volume) if (pool_from_vol_type == 'default' and 'default' not in self.config['services']): msg = (_("Failed to manage existing volume %(volume)s because the " "chosen volume type %(vol_type)s does not have a " "service_label configured in its extra-specs and there " "is no pool configured with hnas_svcX_volume_type as " "'default' in cinder.conf.") % { 'volume': volume.id, 'vol_type': getattr(volume.volume_type, 'id', None) }) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg) pool = self.config['services'][pool_from_vol_type]['hdp'] if pool != fs_label: msg = (_("Failed to manage existing volume because the " "pool %(pool)s of the volume type chosen does not " "match the file system %(fs_label)s passed in the " "volume reference.") % { 'pool': pool, 'fs_label': fs_label }) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg) pool_from_host = utils.extract_host(volume.host, level='pool') if pool_from_host != pool_from_vol_type: msg = (_("Failed to manage existing volume because the pool " "%(pool)s of the volume type chosen does not match the " "pool %(pool_host)s of the host.") % { 'pool': pool_from_vol_type, 'pool_host': pool_from_host }) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg)
def _check_pool_and_share(self, volume, nfs_share): """Validates the pool and the NFS share. Checks if the NFS share for the volume-type chosen matches the one passed in the volume reference. Also, checks if the pool for the volume type matches the pool for the host passed. :param volume: cinder volume reference :param nfs_share: NFS share passed to manage :raises: ManageExistingVolumeTypeMismatch """ pool_from_vol_type = hnas_utils.get_pool(self.config, volume) pool_from_host = utils.extract_host(volume.host, level='pool') if (pool_from_vol_type == 'default' and 'default' not in self.config['services']): msg = (_("Failed to manage existing volume %(volume)s because the " "chosen volume type %(vol_type)s does not have a " "service_label configured in its extra-specs and there " "is no pool configured with hnas_svcX_volume_type as " "'default' in cinder.conf.") % {'volume': volume.id, 'vol_type': getattr(volume.volume_type, 'id', None)}) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg) pool = self.config['services'][pool_from_vol_type]['hdp'] if pool != nfs_share: msg = (_("Failed to manage existing volume because the pool of " "the volume type chosen (%(pool)s) does not match the " "NFS share passed in the volume reference (%(share)s).") % {'share': nfs_share, 'pool': pool}) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg) if pool_from_host != pool_from_vol_type: msg = (_("Failed to manage existing volume because the pool of " "the volume type chosen (%(pool)s) does not match the " "pool of the host %(pool_host)s") % {'pool': pool_from_vol_type, 'pool_host': pool_from_host}) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg)
def _check_pool_and_fs(self, volume, fs_label): """Validates pool and file system of a volume being managed. Checks if the file system for the volume-type chosen matches the one passed in the volume reference. Also, checks if the pool for the volume type matches the pool for the host passed. :param volume: Reference to the volume. :param fs_label: Label of the file system. :raises: ManageExistingVolumeTypeMismatch """ pool_from_vol_type = hnas_utils.get_pool(self.config, volume) if (pool_from_vol_type == 'default' and 'default' not in self.config['services']): msg = (_("Failed to manage existing volume %(volume)s because the " "chosen volume type %(vol_type)s does not have a " "service_label configured in its extra-specs and there " "is no pool configured with hnas_svcX_volume_type as " "'default' in cinder.conf.") % {'volume': volume.id, 'vol_type': getattr(volume.volume_type, 'id', None)}) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg) pool = self.config['services'][pool_from_vol_type]['hdp'] if pool != fs_label: msg = (_("Failed to manage existing volume because the " "pool %(pool)s of the volume type chosen does not " "match the file system %(fs_label)s passed in the " "volume reference.") % {'pool': pool, 'fs_label': fs_label}) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg) pool_from_host = utils.extract_host(volume.host, level='pool') if pool_from_host != pool_from_vol_type: msg = (_("Failed to manage existing volume because the pool " "%(pool)s of the volume type chosen does not match the " "pool %(pool_host)s of the host.") % {'pool': pool_from_vol_type, 'pool_host': pool_from_host}) LOG.error(msg) raise exception.ManageExistingVolumeTypeMismatch(reason=msg)
def test_get_pool_without_vol_type(self): out = hnas_utils.get_pool(parsed_xml, self.volume) self.assertEqual('default', out)