def create_volume_from_snapshot(self, volume, snapshot): ldev = utils.get_ldev(snapshot) # When 'ldev' is 0, it should be true. # Therefore, it cannot remove 'is not None'. if (ldev is not None and self.check_vvol(ldev) and _get_access_mode(volume) == 'ro'): if 'ro_vol' in _get_snapshot_metadata(snapshot): msg = utils.output_log(657, snapshot_id=snapshot['id']) raise exception.HPXPError(data=msg) self.db.snapshot_metadata_update( self.ctxt, snapshot['id'], dict(ro_vol=volume['id']), False) metadata = utils.get_volume_metadata(volume) return { 'provider_location': six.text_type(ldev), 'metadata': dict( metadata, ldev=ldev, type=utils.VVOL_LDEV_TYPE, snapshot=snapshot['id']), } return super( HPXPCommonExtension, self).create_volume_from_snapshot( volume, snapshot)
def manage_existing(self, volume, existing_ref): ldev = _str2int(existing_ref.get('ldev')) metadata = utils.get_volume_metadata(volume) return { 'provider_location': six.text_type(ldev), 'metadata': dict( metadata, ldev=ldev, type=utils.NORMAL_LDEV_TYPE), }
def _get_access_mode(volume): metadata = utils.get_volume_metadata(volume) access_mode = metadata.get('access_mode', 'rw') if access_mode not in _ACCESS_MODE: msg = utils.output_log(602, meta='access_mode') raise exception.HPXPError(data=msg) return access_mode
def copy_dest_vol_meta_to_src_vol(self, src_vol, dest_vol): metadata = utils.get_volume_metadata(dest_vol) try: self.db.volume_metadata_update( self.ctxt, src_vol['id'], metadata, True) except Exception as ex: utils.output_log( 318, src_vol_id=src_vol['id'], dest_vol_id=dest_vol['id'], reason=six.text_type(ex))
def create_volume(self, volume): try: ldev = self.create_ldev(volume['size']) except Exception: with excutils.save_and_reraise_exception(): utils.output_log(636) metadata = utils.get_volume_metadata(volume) return { 'provider_location': six.text_type(ldev), 'metadata': dict( metadata, ldev=ldev, type=utils.NORMAL_LDEV_TYPE), }
def create_snapshot(self, snapshot): src_vref = self.db.volume_get(self.ctxt, snapshot['volume_id']) ldev = utils.get_ldev(src_vref) metadata = utils.get_volume_metadata(src_vref) # When 'ldev' is 0, it should be true. # Therefore, it cannot remove 'is not None'. method = ( self.get_copy_method(metadata) if ldev is not None and not self.check_vvol(ldev) else None) if 'restore_from' in metadata and method == 'THIN': self._restore_volume_from_snapshot( src_vref, metadata['restore_from']) return { 'provider_location': _INVALID_LDEV_NUM, } return super(HPXPCommonExtension, self).create_snapshot(snapshot)
def create_snapshot(self, snapshot): src_vref = self.db.volume_get(self.ctxt, snapshot['volume_id']) ldev = utils.get_ldev(src_vref) # When 'ldev' is 0, it should be true. # Therefore, it cannot remove 'is None'. if ldev is None: msg = utils.output_log(624, type='volume', id=src_vref['id']) raise exception.HPXPError(data=msg) size = snapshot['volume_size'] metadata = utils.get_volume_metadata(src_vref) new_ldev, ldev_type = self._copy_ldev(ldev, size, metadata) if not self.conf.hpxp_driver_cert_mode: self.db.snapshot_metadata_update( self.ctxt, snapshot['id'], dict(ldev=new_ldev, type=ldev_type), False) return { 'provider_location': six.text_type(new_ldev), }
def create_cloned_volume(self, volume, src_vref): ldev = utils.get_ldev(src_vref) # When 'ldev' is 0, it should be true. # Therefore, it cannot remove 'is not None'. if ldev is None: msg = utils.output_log(624, type='volume', id=src_vref['id']) raise exception.HPXPError(data=msg) size = volume['size'] if size != src_vref['size']: msg = utils.output_log(617, type='volume', volume_id=volume['id']) raise exception.HPXPError(data=msg) metadata = utils.get_volume_metadata(volume) new_ldev, ldev_type = self._copy_ldev(ldev, size, metadata) return { 'provider_location': six.text_type(new_ldev), 'metadata': dict( metadata, ldev=new_ldev, type=ldev_type, volume=src_vref['id']), }