Support detach neutron port from container
This is the client side support for detaching container from specific neutron port. In particular, this patch adds parameter '--port' to network-detach command. Depends-On: Ibe7795885b93e325262130dd5e67bfbeb5a23cf9 Change-Id: I24021b55a37c003b7ead8fa6ee973382ffcaec7c Closes-Bug: #1776131
This commit is contained in:
parent
faa9528401
commit
f423c58c68
@ -31,7 +31,7 @@ if not LOG.handlers:
|
||||
HEADER_NAME = "OpenStack-API-Version"
|
||||
SERVICE_TYPE = "container"
|
||||
MIN_API_VERSION = '1.1'
|
||||
MAX_API_VERSION = '1.14'
|
||||
MAX_API_VERSION = '1.17'
|
||||
DEFAULT_API_VERSION = MAX_API_VERSION
|
||||
|
||||
_SUBSTITUTIONS = {}
|
||||
|
@ -1117,10 +1117,15 @@ class NetworkDetach(command.Command):
|
||||
'container',
|
||||
metavar='<container>',
|
||||
help='ID or name of the container to detach network.')
|
||||
parser.add_argument(
|
||||
'network',
|
||||
network_port_args = parser.add_mutually_exclusive_group()
|
||||
network_port_args.add_argument(
|
||||
'--network',
|
||||
metavar='<network>',
|
||||
help='The network for specified container to detach.')
|
||||
network_port_args.add_argument(
|
||||
'--port',
|
||||
metavar='<port>',
|
||||
help='The port for specified container to detach.')
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
@ -1128,6 +1133,7 @@ class NetworkDetach(command.Command):
|
||||
opts = {}
|
||||
opts['container'] = parsed_args.container
|
||||
opts['network'] = parsed_args.network
|
||||
opts['port'] = parsed_args.port
|
||||
opts = zun_utils.remove_null_parms(**opts)
|
||||
try:
|
||||
client.containers.network_detach(**opts)
|
||||
@ -1149,9 +1155,13 @@ class NetworkAttach(command.Command):
|
||||
metavar='<container>',
|
||||
help='ID or name of the container to attach network.')
|
||||
parser.add_argument(
|
||||
'network',
|
||||
'--network',
|
||||
metavar='<network>',
|
||||
help='The network for specified container to attach.')
|
||||
parser.add_argument(
|
||||
'--port',
|
||||
metavar='<port>',
|
||||
help='The port for specified container to attach.')
|
||||
return parser
|
||||
|
||||
def take_action(self, parsed_args):
|
||||
@ -1159,6 +1169,7 @@ class NetworkAttach(command.Command):
|
||||
opts = {}
|
||||
opts['container'] = parsed_args.container
|
||||
opts['network'] = parsed_args.network
|
||||
opts['port'] = parsed_args.port
|
||||
opts = zun_utils.remove_null_parms(**opts)
|
||||
try:
|
||||
client.containers.network_attach(**opts)
|
||||
|
@ -246,7 +246,7 @@ class ShellTest(utils.TestCase):
|
||||
project_domain_id='', project_domain_name='',
|
||||
user_domain_id='', user_domain_name='', profile=None,
|
||||
endpoint_override=None, insecure=False,
|
||||
version=api_versions.APIVersion('1.14'))
|
||||
version=api_versions.APIVersion('1.17'))
|
||||
|
||||
def test_main_option_region(self):
|
||||
self.make_env()
|
||||
@ -274,7 +274,7 @@ class ShellTest(utils.TestCase):
|
||||
project_domain_id='', project_domain_name='',
|
||||
user_domain_id='', user_domain_name='', profile=None,
|
||||
endpoint_override=None, insecure=False,
|
||||
version=api_versions.APIVersion('1.14'))
|
||||
version=api_versions.APIVersion('1.17'))
|
||||
|
||||
@mock.patch('zunclient.client.Client')
|
||||
def test_main_endpoint_internal(self, mock_client):
|
||||
@ -288,7 +288,7 @@ class ShellTest(utils.TestCase):
|
||||
project_domain_id='', project_domain_name='',
|
||||
user_domain_id='', user_domain_name='', profile=None,
|
||||
endpoint_override=None, insecure=False,
|
||||
version=api_versions.APIVersion('1.14'))
|
||||
version=api_versions.APIVersion('1.17'))
|
||||
|
||||
|
||||
class ShellTestKeystoneV3(ShellTest):
|
||||
@ -319,4 +319,4 @@ class ShellTestKeystoneV3(ShellTest):
|
||||
project_domain_id='', project_domain_name='Default',
|
||||
user_domain_id='', user_domain_name='Default',
|
||||
endpoint_override=None, insecure=False, profile=None,
|
||||
version=api_versions.APIVersion('1.14'))
|
||||
version=api_versions.APIVersion('1.17'))
|
||||
|
@ -678,7 +678,7 @@ class ContainerManagerTest(testtools.TestCase):
|
||||
|
||||
def test_containers_network_detach(self):
|
||||
containers = self.mgr.network_detach(
|
||||
CONTAINER1['id'], 'neutron_network')
|
||||
CONTAINER1['id'], network='neutron_network')
|
||||
expect = [
|
||||
('POST', '/v1/containers/%s/network_detach?%s'
|
||||
% (CONTAINER1['id'],
|
||||
|
@ -212,9 +212,9 @@ class ContainerManager(base.Manager):
|
||||
return self._action(id, '/add_security_group',
|
||||
qparams={'name': security_group})
|
||||
|
||||
def network_detach(self, container, network):
|
||||
def network_detach(self, container, **kwargs):
|
||||
return self._action(container, '/network_detach',
|
||||
qparams={'network': network})
|
||||
qparams=kwargs)
|
||||
|
||||
def network_attach(self, container, **kwargs):
|
||||
return self._action(container, '/network_attach',
|
||||
|
@ -846,17 +846,25 @@ def do_add_security_group(cs, args):
|
||||
"failed: %(e)s" % {'container': args.container, 'e': e})
|
||||
|
||||
|
||||
@utils.exclusive_arg(
|
||||
'detach_network_port',
|
||||
'--network',
|
||||
metavar='<network>',
|
||||
help='The neutron network that container will detach from.')
|
||||
@utils.exclusive_arg(
|
||||
'detach_network_port',
|
||||
'--port',
|
||||
metavar='<port>',
|
||||
help='The neutron port that container will detach from.')
|
||||
@utils.arg('container',
|
||||
metavar='<container>',
|
||||
help='ID or name of the container to detach the network.')
|
||||
@utils.arg('network',
|
||||
metavar='<network>',
|
||||
help='The neutron network that container will detach from.')
|
||||
def do_network_detach(cs, args):
|
||||
"""Detach a network from the container."""
|
||||
opts = {}
|
||||
opts['container'] = args.container
|
||||
opts['network'] = args.network
|
||||
opts['port'] = args.port
|
||||
opts = zun_utils.remove_null_parms(**opts)
|
||||
try:
|
||||
cs.containers.network_detach(**opts)
|
||||
|
Loading…
x
Reference in New Issue
Block a user