def create(self, local_share_info, remote_device_wwn, remote_fs_id, local_replication): local_share_name = local_share_info.get('name') try: local_fs_info = self.helper.get_fs_info_by_name(local_share_name) if not local_fs_info: msg = _("Local fs was not found by name %s." % local_share_name) LOG.error(msg) raise exception.ReplicationException(reason=msg) local_fs_id = local_fs_info['ID'] pair_params = { "LOCALRESID": local_fs_id, "LOCALRESTYPE": constants.FILE_SYSTEM_TYPE, "REMOTERESID": remote_fs_id, "REPLICATIONMODEL": constants.REPLICA_ASYNC_MODEL, "RECOVERYPOLICY": '2', "SYNCHRONIZETYPE": '1', "SPEED": constants.REPLICA_SPEED_HIGHEST, } if local_replication: pair_params["PAIRTYPE"] = constants.LOCAL_REPLICATION else: remote_device = self.helper.get_remote_device_by_wwn( remote_device_wwn) pair_params["REMOTEDEVICEID"] = remote_device.get('ID') support_sync_snapshot = huawei_utils.is_dorado_v6(self.helper) if support_sync_snapshot: pair_params["syncSnapPolicy"] = "1" pair_info = self.helper.create_replication_pair(pair_params) local_pair_id = pair_info['ID'] if local_replication: remote_fs = self.helper.get_fs_info_by_id(remote_fs_id) if not remote_fs: msg = _('Remote filesystem %s is not exist.' % remote_fs_id) LOG.error(msg) raise exception.StorageResourceNotFound(name=remote_fs_id) replication_ids = json.loads(remote_fs['REMOTEREPLICATIONIDS']) # Here must have a replication id. remote_pair_id = replication_ids[0] else: remote_pair_id = local_pair_id except Exception: LOG.exception("Failed to create replication pair for share %s.", local_share_name) raise self._sync_replication_pair(local_pair_id, need_sync=False) return local_pair_id, remote_pair_id
def test_storage_resource_not_found(self): # verify response code for exception.StorageResourceNotFound name = "fake_name" e = exception.StorageResourceNotFound(name=name) self.assertEqual(404, e.code) self.assertIn(name, e.msg)