Merge "Switch openstack server remove port/network to using sdk"
This commit is contained in:
commit
d9ad0b5d46
|
@ -3709,10 +3709,10 @@ class RemovePort(command.Command):
|
|||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
compute_client = self.app.client_manager.compute
|
||||
compute_client = self.app.client_manager.sdk_connection.compute
|
||||
|
||||
server = utils.find_resource(
|
||||
compute_client.servers, parsed_args.server)
|
||||
server = compute_client.find_server(
|
||||
parsed_args.server, ignore_missing=False)
|
||||
|
||||
if self.app.client_manager.is_network_endpoint_enabled():
|
||||
network_client = self.app.client_manager.network
|
||||
|
@ -3721,7 +3721,11 @@ class RemovePort(command.Command):
|
|||
else:
|
||||
port_id = parsed_args.port
|
||||
|
||||
server.interface_detach(port_id)
|
||||
compute_client.delete_server_interface(
|
||||
port_id,
|
||||
server=server,
|
||||
ignore_missing=False,
|
||||
)
|
||||
|
||||
|
||||
class RemoveNetwork(command.Command):
|
||||
|
@ -3742,10 +3746,10 @@ class RemoveNetwork(command.Command):
|
|||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
compute_client = self.app.client_manager.compute
|
||||
compute_client = self.app.client_manager.sdk_connection.compute
|
||||
|
||||
server = utils.find_resource(
|
||||
compute_client.servers, parsed_args.server)
|
||||
server = compute_client.find_server(
|
||||
parsed_args.server, ignore_missing=False)
|
||||
|
||||
if self.app.client_manager.is_network_endpoint_enabled():
|
||||
network_client = self.app.client_manager.network
|
||||
|
@ -3754,9 +3758,12 @@ class RemoveNetwork(command.Command):
|
|||
else:
|
||||
net_id = parsed_args.network
|
||||
|
||||
for inf in server.interface_list():
|
||||
for inf in compute_client.server_interfaces(server):
|
||||
if inf.net_id == net_id:
|
||||
server.interface_detach(inf.port_id)
|
||||
compute_client.delete_server_interface(
|
||||
inf.port_id,
|
||||
server=server,
|
||||
)
|
||||
|
||||
|
||||
class RemoveServerSecurityGroup(command.Command):
|
||||
|
|
|
@ -1072,7 +1072,7 @@ class ServerTests(common.ComputeTestCase):
|
|||
self.assertNotIn('nics are required after microversion 2.36',
|
||||
e.stderr)
|
||||
|
||||
def test_server_add_remove_network_port(self):
|
||||
def test_server_add_remove_network(self):
|
||||
name = uuid.uuid4().hex
|
||||
cmd_output = json.loads(self.openstack(
|
||||
'server create -f json ' +
|
||||
|
@ -1085,18 +1085,63 @@ class ServerTests(common.ComputeTestCase):
|
|||
|
||||
self.assertIsNotNone(cmd_output['id'])
|
||||
self.assertEqual(name, cmd_output['name'])
|
||||
self.addCleanup(self.openstack, 'server delete --wait ' + name)
|
||||
|
||||
# add network and check 'public' is in server show
|
||||
self.openstack(
|
||||
'server add network ' + name + ' public')
|
||||
|
||||
cmd_output = json.loads(self.openstack(
|
||||
'server show -f json ' + name
|
||||
))
|
||||
|
||||
wait_time = 0
|
||||
while wait_time < 60:
|
||||
cmd_output = json.loads(self.openstack(
|
||||
'server show -f json ' + name
|
||||
))
|
||||
if 'public' not in cmd_output['addresses']:
|
||||
# Hang out for a bit and try again
|
||||
print('retrying add network check')
|
||||
wait_time += 10
|
||||
time.sleep(10)
|
||||
else:
|
||||
break
|
||||
addresses = cmd_output['addresses']
|
||||
self.assertIn('public', addresses)
|
||||
|
||||
port_name = 'test-port'
|
||||
# remove network and check 'public' is not in server show
|
||||
self.openstack('server remove network ' + name + ' public')
|
||||
|
||||
wait_time = 0
|
||||
while wait_time < 60:
|
||||
cmd_output = json.loads(self.openstack(
|
||||
'server show -f json ' + name
|
||||
))
|
||||
if 'public' in cmd_output['addresses']:
|
||||
# Hang out for a bit and try again
|
||||
print('retrying remove network check')
|
||||
wait_time += 10
|
||||
time.sleep(10)
|
||||
else:
|
||||
break
|
||||
|
||||
addresses = cmd_output['addresses']
|
||||
self.assertNotIn('public', addresses)
|
||||
|
||||
def test_server_add_remove_port(self):
|
||||
name = uuid.uuid4().hex
|
||||
cmd_output = json.loads(self.openstack(
|
||||
'server create -f json ' +
|
||||
'--network private ' +
|
||||
'--flavor ' + self.flavor_name + ' ' +
|
||||
'--image ' + self.image_name + ' ' +
|
||||
'--wait ' +
|
||||
name
|
||||
))
|
||||
|
||||
self.assertIsNotNone(cmd_output['id'])
|
||||
self.assertEqual(name, cmd_output['name'])
|
||||
self.addCleanup(self.openstack, 'server delete --wait ' + name)
|
||||
|
||||
# create port, record one of its ip address
|
||||
port_name = uuid.uuid4().hex
|
||||
|
||||
cmd_output = json.loads(self.openstack(
|
||||
'port list -f json'
|
||||
|
@ -1108,17 +1153,44 @@ class ServerTests(common.ComputeTestCase):
|
|||
'--network private ' + port_name
|
||||
))
|
||||
self.assertIsNotNone(cmd_output['id'])
|
||||
ip_address = cmd_output['fixed_ips'][0]['ip_address']
|
||||
self.addCleanup(self.openstack, 'port delete ' + port_name)
|
||||
|
||||
# add port to server, assert the ip address of the port appears
|
||||
self.openstack('server add port ' + name + ' ' + port_name)
|
||||
|
||||
cmd_output = json.loads(self.openstack(
|
||||
'server show -f json ' + name
|
||||
))
|
||||
wait_time = 0
|
||||
while wait_time < 60:
|
||||
cmd_output = json.loads(self.openstack(
|
||||
'server show -f json ' + name
|
||||
))
|
||||
if ip_address not in cmd_output['addresses']['private']:
|
||||
# Hang out for a bit and try again
|
||||
print('retrying add port check')
|
||||
wait_time += 10
|
||||
time.sleep(10)
|
||||
else:
|
||||
break
|
||||
addresses = cmd_output['addresses']['private']
|
||||
self.assertIn(ip_address, addresses)
|
||||
|
||||
# TODO(diwei): test remove network/port after the commands are switched
|
||||
# remove port, assert the ip address of the port doesn't appear
|
||||
self.openstack('server remove port ' + name + ' ' + port_name)
|
||||
|
||||
self.openstack('server delete ' + name)
|
||||
self.openstack('port delete ' + port_name)
|
||||
wait_time = 0
|
||||
while wait_time < 60:
|
||||
cmd_output = json.loads(self.openstack(
|
||||
'server show -f json ' + name
|
||||
))
|
||||
if ip_address in cmd_output['addresses']['private']:
|
||||
# Hang out for a bit and try again
|
||||
print('retrying add port check')
|
||||
wait_time += 10
|
||||
time.sleep(10)
|
||||
else:
|
||||
break
|
||||
addresses = cmd_output['addresses']['private']
|
||||
self.assertNotIn(ip_address, addresses)
|
||||
|
||||
def test_server_add_remove_volume(self):
|
||||
volume_wait_for = volume_common.BaseVolumeTests.wait_for_status
|
||||
|
|
|
@ -7028,14 +7028,14 @@ class TestServerRemovePort(TestServer):
|
|||
|
||||
# Set method to be tested.
|
||||
self.methods = {
|
||||
'interface_detach': None,
|
||||
'delete_server_interface': None,
|
||||
}
|
||||
|
||||
self.find_port = mock.Mock()
|
||||
self.app.client_manager.network.find_port = self.find_port
|
||||
|
||||
def _test_server_remove_port(self, port_id):
|
||||
servers = self.setup_servers_mock(count=1)
|
||||
servers = self.setup_sdk_servers_mock(count=1)
|
||||
port = 'fake-port'
|
||||
|
||||
arglist = [
|
||||
|
@ -7050,7 +7050,8 @@ class TestServerRemovePort(TestServer):
|
|||
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
servers[0].interface_detach.assert_called_once_with(port_id)
|
||||
self.sdk_client.delete_server_interface.assert_called_with(
|
||||
port_id, server=servers[0], ignore_missing=False)
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_server_remove_port(self):
|
||||
|
@ -7075,17 +7076,18 @@ class TestServerRemoveNetwork(TestServer):
|
|||
# Set method to be tested.
|
||||
self.fake_inf = mock.Mock()
|
||||
self.methods = {
|
||||
'interface_list': [self.fake_inf],
|
||||
'interface_detach': None,
|
||||
'server_interfaces': [self.fake_inf],
|
||||
'delete_server_interface': None,
|
||||
}
|
||||
|
||||
self.find_network = mock.Mock()
|
||||
self.app.client_manager.network.find_network = self.find_network
|
||||
self.sdk_client.server_interfaces.return_value = [self.fake_inf]
|
||||
|
||||
def _test_server_remove_network(self, network_id):
|
||||
self.fake_inf.net_id = network_id
|
||||
self.fake_inf.port_id = 'fake-port'
|
||||
servers = self.setup_servers_mock(count=1)
|
||||
servers = self.setup_sdk_servers_mock(count=1)
|
||||
network = 'fake-network'
|
||||
|
||||
arglist = [
|
||||
|
@ -7100,8 +7102,9 @@ class TestServerRemoveNetwork(TestServer):
|
|||
|
||||
result = self.cmd.take_action(parsed_args)
|
||||
|
||||
servers[0].interface_list.assert_called_once_with()
|
||||
servers[0].interface_detach.assert_called_once_with('fake-port')
|
||||
self.sdk_client.server_interfaces.assert_called_once_with(servers[0])
|
||||
self.sdk_client.delete_server_interface.assert_called_once_with(
|
||||
'fake-port', server=servers[0])
|
||||
self.assertIsNone(result)
|
||||
|
||||
def test_server_remove_network(self):
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
features:
|
||||
- |
|
||||
Switch server remove volume/port to using sdk.
|
Loading…
Reference in New Issue