Skip to content

Commit 57e7d9f

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Now OSC server create check keys in --nic"
2 parents 64c458f + fcafd98 commit 57e7d9f

2 files changed

Lines changed: 70 additions & 6 deletions

File tree

openstackclient/compute/v2/server.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -651,12 +651,16 @@ def take_action(self, parsed_args):
651651
else:
652652
nic_info = {"net-id": "", "v4-fixed-ip": "",
653653
"v6-fixed-ip": "", "port-id": ""}
654-
try:
655-
nic_info.update(dict(kv_str.split("=", 1)
656-
for kv_str in nic_str.split(",")))
657-
except ValueError:
658-
msg = _('Invalid --nic argument %s.') % nic_str
659-
raise exceptions.CommandError(msg)
654+
for kv_str in nic_str.split(","):
655+
k, sep, v = kv_str.partition("=")
656+
if k in nic_info and v:
657+
nic_info[k] = v
658+
else:
659+
msg = (_("Invalid nic argument '%s'. Nic arguments "
660+
"must be of the form --nic <net-id=net-uuid"
661+
",v4-fixed-ip=ip-addr,v6-fixed-ip=ip-addr,"
662+
"port-id=port-uuid>."))
663+
raise exceptions.CommandError(msg % k)
660664
if bool(nic_info["net-id"]) == bool(nic_info["port-id"]):
661665
msg = _("either network or port should be specified "
662666
"but not both")

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

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -797,6 +797,66 @@ def test_server_create_with_invalid_network_options(self):
797797
self.cmd.take_action, parsed_args)
798798
self.assertNotCalled(self.servers_mock.create)
799799

800+
def test_server_create_with_invalid_network_key(self):
801+
arglist = [
802+
'--image', 'image1',
803+
'--flavor', 'flavor1',
804+
'--nic', 'abcdefgh=12324',
805+
self.new_server.name,
806+
]
807+
verifylist = [
808+
('image', 'image1'),
809+
('flavor', 'flavor1'),
810+
('nic', ['abcdefgh=12324']),
811+
('config_drive', False),
812+
('server_name', self.new_server.name),
813+
]
814+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
815+
816+
self.assertRaises(exceptions.CommandError,
817+
self.cmd.take_action, parsed_args)
818+
self.assertNotCalled(self.servers_mock.create)
819+
820+
def test_server_create_with_empty_network_key_value(self):
821+
arglist = [
822+
'--image', 'image1',
823+
'--flavor', 'flavor1',
824+
'--nic', 'net-id=',
825+
self.new_server.name,
826+
]
827+
verifylist = [
828+
('image', 'image1'),
829+
('flavor', 'flavor1'),
830+
('nic', ['net-id=']),
831+
('config_drive', False),
832+
('server_name', self.new_server.name),
833+
]
834+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
835+
836+
self.assertRaises(exceptions.CommandError,
837+
self.cmd.take_action, parsed_args)
838+
self.assertNotCalled(self.servers_mock.create)
839+
840+
def test_server_create_with_only_network_key(self):
841+
arglist = [
842+
'--image', 'image1',
843+
'--flavor', 'flavor1',
844+
'--nic', 'net-id',
845+
self.new_server.name,
846+
]
847+
verifylist = [
848+
('image', 'image1'),
849+
('flavor', 'flavor1'),
850+
('nic', ['net-id']),
851+
('config_drive', False),
852+
('server_name', self.new_server.name),
853+
]
854+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
855+
856+
self.assertRaises(exceptions.CommandError,
857+
self.cmd.take_action, parsed_args)
858+
self.assertNotCalled(self.servers_mock.create)
859+
800860
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
801861
def test_server_create_with_wait_ok(self, mock_wait_for_status):
802862
arglist = [

0 commit comments

Comments
 (0)