def init_resources(self, cloud_config): resources = self.resources self.resources = dict() self.rbd_util = rbd_util.RbdUtil( getattr(self.config, "%s" % self.position), self.config.migrate) self.qemu_img = qemu_img.QemuImg( getattr(self.config, "%s" % self.position), self.config.migrate) self.ssh_util = ssh_util.SshUtil( getattr(self.config, "%s" % self.position), self.config.migrate) ident_conf = self.make_resource_config(self.config, self.position, cloud_config, 'identity') self.mysql_connector = self.get_db_method_create_connection( 'identity', ident_conf) identity = resources['identity'](ident_conf, self) self.resources['identity'] = identity skip_initialization = ['identity'] if not self.config.src_objstorage.service: skip_initialization.append('objstorage') for resource in resources: if resource not in skip_initialization: resource_config = self.make_resource_config( self.config, self.position, cloud_config, resource) self.mysql_connector = \ self.get_db_method_create_connection(resource, resource_config) self.resources[resource] = resources[resource](resource_config, self)
def init_resources(self, cloud_config): resources = self.resources self.resources = dict() self.mysql_connector = mysql_connector.MysqlConnector( getattr(self.config, "%s_mysql" % self.position), 'cinder') self.rbd_util = rbd_util.RbdUtil( getattr(self.config, "%s" % self.position), self.config.migrate) self.qemu_img = qemu_img.QemuImg( getattr(self.config, "%s" % self.position), self.config.migrate) self.ssh_util = ssh_util.SshUtil( getattr(self.config, "%s" % self.position), self.config.migrate) identity_conf = self.make_resource_config(self.config, self.position, cloud_config, 'identity') identity = resources['identity'](identity_conf, self) self.resources['identity'] = identity for resource in resources: if resource != 'identity': resource_config = self.make_resource_config( self.config, self.position, cloud_config, resource) self.resources[resource] = resources[resource](resource_config, self)
def run(self, storage_info=None, identity_info=None, **kwargs): storage_info = copy.deepcopy(storage_info) deploy_info = copy.deepcopy(storage_info) deploy_info.update(identity_info) storage_info.update(identity_info) volume_resource = self.cloud.resources[utl.STORAGE_RESOURCE] for vol_id, vol in deploy_info[utl.VOLUMES_TYPE].iteritems(): if vol['snapshots']: vol_info = vol[utl.VOLUME_BODY] snapshots_list = \ [snap_info for snap_info in vol['snapshots'].values()] snapshots_list.sort(key=lambda x: x['created_at']) for snap in snapshots_list: if snapshots_list.index(snap) == 0: act_snap_transfer = \ snap_transfer.SnapTransfer( self.init, ssh_ceph_to_ceph.SSHCephToCeph, 1) else: snap_num = snapshots_list.index(snap) snap['prev_snapname'] = \ snapshots_list[snap_num - 1]['name'] act_snap_transfer = \ snap_transfer.SnapTransfer( self.init, ssh_ceph_to_ceph.SSHCephToCeph, 2) act_snap_transfer.run(volume=vol_info, snapshot_info=snap) volume_resource.create_snapshot( volume_id=vol_id, display_name=snap['display_name'], display_description=snap['display_description']) act_snap_transfer = snap_transfer.SnapTransfer( self.init, ssh_ceph_to_ceph.SSHCephToCeph, 3) act_snap_transfer.run(volume=vol_info, snapshot_info=snapshots_list[-1]) for snap in snapshots_list: if volume_resource.config.storage.host: act_delete_redundant_snap = \ rbd_util.RbdUtil(cloud=self.cloud, config_migrate=self.cfg.migrate, host=vol_info[utl.HOST_DST]) act_delete_redundant_snap.snap_rm( vol_info[utl.PATH_DST], snap['name']) else: act_delete_redundant_snap = \ rbd_util.RbdUtil(cloud=self.cloud, config_migrate=self.cfg.migrate) act_delete_redundant_snap.snap_rm( vol_info[utl.PATH_DST], snap['name'], vol_info[utl.HOST_DST]) else: one_volume_info = { 'one_volume_info': { utl.VOLUMES_TYPE: { vol_id: vol } } } act_transport_vol_data = \ task_transfer.TaskTransfer(self.init, 'SSHCephToCeph', input_info='one_volume_info') act_transport_vol_data.run(**one_volume_info) return {}