def reenable(self, context, vol): if vol['replication_status'] == 'disabled': msg = _("Replication is not enabled") raise exception.ReplicationError(reason=msg, volume_id=vol['id']) if vol['replication_status'] not in REENABLE_PROCEED_STATUS: msg = _("Replication status for volume must be inactive," " active-stopped, or error, but current status " "is: %s") % vol['replication_status'] raise exception.ReplicationError(reason=msg, volume_id=vol['id']) volume_utils.notify_about_replication_usage(context, vol, 'sync') self.volume_rpcapi.reenable_replication(context, vol)
def promote(self, context, vol): if vol['replication_status'] == 'disabled': msg = _("Replication is not enabled for volume") raise exception.ReplicationError(reason=msg, volume_id=vol['id']) if vol['replication_status'] not in PROMOTE_PROCEED_STATUS: msg = _("Replication status for volume must be active or " "active-stopped, but current status " "is: %s") % vol['replication_status'] raise exception.ReplicationError(reason=msg, volume_id=vol['id']) if vol['status'] != 'available': msg = _("Volume status for volume must be available, but current " "status is: %s") % vol['status'] raise exception.ReplicationError(reason=msg, volume_id=vol['id']) volume_utils.notify_about_replication_usage(context, vol, 'promote') self.volume_rpcapi.promote_replica(context, vol)
def reenable(self, context, vol): if vol['replication_status'] == 'disabled': msg = _("Replication is not enabled") raise exception.ReplicationError( reason=msg, volume_id=vol['id']) if vol['replication_status'] not in REENABLE_PROCEED_STATUS: msg = _("Replication status for volume must be inactive," " active-stopped, or error, but current status " "is: %s") % vol['replication_status'] raise exception.ReplicationError( reason=msg, volume_id=vol['id']) volume_utils.notify_about_replication_usage(context, vol, 'sync') self.volume_rpcapi.reenable_replication(context, vol)
def test_notify_about_replication_usage(self, mock_rpc, mock_conf, mock_usage): mock_conf.host = "host1" output = volume_utils.notify_about_replication_usage(mock.sentinel.context, mock.sentinel.volume, "test_suffix") self.assertIsNone(output) mock_usage.assert_called_once_with(mock.sentinel.context, mock.sentinel.volume) mock_rpc.get_notifier.assert_called_once_with("replication", "host1") mock_rpc.get_notifier.return_value.info.assert_called_once_with( mock.sentinel.context, "replication.test_suffix", mock_usage.return_value )
def test_notify_about_replication_usage(self, mock_rpc, mock_conf, mock_usage): mock_conf.host = 'host1' output = volume_utils.notify_about_replication_usage( mock.sentinel.context, mock.sentinel.volume, 'test_suffix') self.assertIsNone(output) mock_usage.assert_called_once_with(mock.sentinel.context, mock.sentinel.volume) mock_rpc.get_notifier.assert_called_once_with('replication', 'host1') mock_rpc.get_notifier.return_value.info.assert_called_once_with( mock.sentinel.context, 'replication.test_suffix', mock_usage.return_value)
def test_notify_about_replication_usage(self, mock_rpc, mock_conf, mock_usage): mock_conf.host = 'host1' output = volume_utils.notify_about_replication_usage( mock.sentinel.context, mock.sentinel.volume, 'test_suffix') self.assertIsNone(output) mock_usage.assert_called_once_with(mock.sentinel.volume) mock_rpc.get_notifier.assert_called_once_with('replication', 'host1') mock_rpc.get_notifier.return_value.info.assert_called_once_with( mock.sentinel.context, 'replication.test_suffix', mock_usage.return_value)
def promote(self, context, vol): if vol['replication_status'] == 'disabled': msg = _("Replication is not enabled for volume") raise exception.ReplicationError( reason=msg, volume_id=vol['id']) if vol['replication_status'] not in PROMOTE_PROCEED_STATUS: msg = _("Replication status for volume must be active or " "active-stopped, but current status " "is: %s") % vol['replication_status'] raise exception.ReplicationError( reason=msg, volume_id=vol['id']) if vol['status'] != 'available': msg = _("Volume status for volume must be available, but current " "status is: %s") % vol['status'] raise exception.ReplicationError( reason=msg, volume_id=vol['id']) volume_utils.notify_about_replication_usage(context, vol, 'promote') self.volume_rpcapi.promote_replica(context, vol)
def test_notify_about_replication_usage_with_kwargs(self, mock_rpc, mock_conf, mock_usage): mock_conf.host = "host1" output = volume_utils.notify_about_replication_usage( mock.sentinel.context, mock.sentinel.volume, "test_suffix", extra_usage_info={"a": "b", "c": "d"}, host="host2", ) self.assertIsNone(output) mock_usage.assert_called_once_with(mock.sentinel.context, mock.sentinel.volume, a="b", c="d") mock_rpc.get_notifier.assert_called_once_with("replication", "host2") mock_rpc.get_notifier.return_value.info.assert_called_once_with( mock.sentinel.context, "replication.test_suffix", mock_usage.return_value )
def test_notify_about_replication_usage_with_kwargs(self, mock_rpc, mock_conf, mock_usage): mock_conf.host = 'host1' output = volume_utils.notify_about_replication_usage( mock.sentinel.context, mock.sentinel.volume, 'test_suffix', extra_usage_info={'a': 'b', 'c': 'd'}, host='host2') self.assertIsNone(output) mock_usage.assert_called_once_with(mock.sentinel.volume, a='b', c='d') mock_rpc.get_notifier.assert_called_once_with('replication', 'host2') mock_rpc.get_notifier.return_value.info.assert_called_once_with( mock.sentinel.context, 'replication.test_suffix', mock_usage.return_value)
def test_notify_about_replication_usage_with_kwargs(self, mock_rpc, mock_conf, mock_usage): mock_conf.host = 'host1' output = volume_utils.notify_about_replication_usage( mock.sentinel.context, mock.sentinel.volume, 'test_suffix', extra_usage_info={'a': 'b', 'c': 'd'}, host='host2') self.assertIsNone(output) mock_usage.assert_called_once_with(mock.sentinel.context, mock.sentinel.volume, a='b', c='d') mock_rpc.get_notifier.assert_called_once_with('replication', 'host2') mock_rpc.get_notifier.return_value.info.assert_called_once_with( mock.sentinel.context, 'replication.test_suffix', mock_usage.return_value)