Skip to content

Commit c056780

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Don't sent disk_over_commit if nova api > 2.24"
2 parents 7ae49c5 + d612178 commit c056780

2 files changed

Lines changed: 43 additions & 5 deletions

File tree

openstackclient/compute/v2/server.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import logging
2222
import os
2323

24+
from novaclient import api_versions
2425
from novaclient.v2 import servers
2526
from osc_lib.cli import parseractions
2627
from osc_lib.command import command
@@ -1384,11 +1385,13 @@ def _show_progress(progress):
13841385
parsed_args.server,
13851386
)
13861387
if parsed_args.live:
1387-
server.live_migrate(
1388-
host=parsed_args.live,
1389-
block_migration=parsed_args.block_migration,
1390-
disk_over_commit=parsed_args.disk_overcommit,
1391-
)
1388+
kwargs = {
1389+
'host': parsed_args.live,
1390+
'block_migration': parsed_args.block_migration
1391+
}
1392+
if compute_client.api_version < api_versions.APIVersion('2.25'):
1393+
kwargs['disk_over_commit'] = parsed_args.disk_overcommit
1394+
server.live_migrate(**kwargs)
13921395
else:
13931396
if parsed_args.block_migration or parsed_args.disk_overcommit:
13941397
raise exceptions.CommandError("--live must be specified if "

openstackclient/tests/unit/compute/v2/test_server.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import mock
2020
from mock import call
21+
from novaclient import api_versions
2122
from osc_lib import exceptions
2223
from osc_lib import utils as common_utils
2324
from oslo_utils import timeutils
@@ -2207,6 +2208,9 @@ def test_server_live_migrate(self):
22072208
]
22082209
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
22092210

2211+
self.app.client_manager.compute.api_version = \
2212+
api_versions.APIVersion('2.24')
2213+
22102214
result = self.cmd.take_action(parsed_args)
22112215

22122216
self.servers_mock.get.assert_called_with(self.server.id)
@@ -2228,6 +2232,9 @@ def test_server_block_live_migrate(self):
22282232
]
22292233
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
22302234

2235+
self.app.client_manager.compute.api_version = \
2236+
api_versions.APIVersion('2.24')
2237+
22312238
result = self.cmd.take_action(parsed_args)
22322239

22332240
self.servers_mock.get.assert_called_with(self.server.id)
@@ -2249,6 +2256,9 @@ def test_server_live_migrate_with_disk_overcommit(self):
22492256
]
22502257
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
22512258

2259+
self.app.client_manager.compute.api_version = \
2260+
api_versions.APIVersion('2.24')
2261+
22522262
result = self.cmd.take_action(parsed_args)
22532263

22542264
self.servers_mock.get.assert_called_with(self.server.id)
@@ -2271,6 +2281,9 @@ def test_server_live_migrate_with_false_value_options(self):
22712281
]
22722282
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
22732283

2284+
self.app.client_manager.compute.api_version = \
2285+
api_versions.APIVersion('2.24')
2286+
22742287
result = self.cmd.take_action(parsed_args)
22752288

22762289
self.servers_mock.get.assert_called_with(self.server.id)
@@ -2280,6 +2293,28 @@ def test_server_live_migrate_with_false_value_options(self):
22802293
self.assertNotCalled(self.servers_mock.migrate)
22812294
self.assertIsNone(result)
22822295

2296+
def test_server_live_migrate_225(self):
2297+
arglist = [
2298+
'--live', 'fakehost', self.server.id,
2299+
]
2300+
verifylist = [
2301+
('live', 'fakehost'),
2302+
('block_migration', False),
2303+
('wait', False),
2304+
]
2305+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
2306+
2307+
self.app.client_manager.compute.api_version = \
2308+
api_versions.APIVersion('2.25')
2309+
2310+
result = self.cmd.take_action(parsed_args)
2311+
2312+
self.servers_mock.get.assert_called_with(self.server.id)
2313+
self.server.live_migrate.assert_called_with(block_migration=False,
2314+
host='fakehost')
2315+
self.assertNotCalled(self.servers_mock.migrate)
2316+
self.assertIsNone(result)
2317+
22832318
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
22842319
def test_server_migrate_with_wait(self, mock_wait_for_status):
22852320
arglist = [

0 commit comments

Comments
 (0)