Hello community,
here is the log from the commit of package python-openstackclient for
openSUSE:Factory checked in at 2018-12-06 12:17:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-openstackclient (Old)
and /work/SRC/openSUSE:Factory/.python-openstackclient.new.19453 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-openstackclient"
Thu Dec 6 12:17:26 2018 rev:17 rq:655280 version:3.16.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-openstackclient/python-openstackclient.changes
2018-11-29 23:01:15.147443396 +0100
+++
/work/SRC/openSUSE:Factory/.python-openstackclient.new.19453/python-openstackclient.changes
2018-12-06 12:17:29.289508768 +0100
@@ -1,0 +2,9 @@
+Wed Dec 5 09:50:05 UTC 2018 - [email protected]
+
+- update to version 3.16.2
+ - Fix 'project purge' deleting wrong project's servers and volumes
+ - Allow endpoint filtering on both project and project-domain
+ - Handle multiple ports in AddFloatingIP
+ - Default --nic to 'auto' if creating a server with >= 2.37
+
+-------------------------------------------------------------------
Old:
----
python-openstackclient-3.16.1.tar.gz
New:
----
python-openstackclient-3.16.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-openstackclient.spec ++++++
--- /var/tmp/diff_new_pack.sPAOlV/_old 2018-12-06 12:17:29.801508218 +0100
+++ /var/tmp/diff_new_pack.sPAOlV/_new 2018-12-06 12:17:29.801508218 +0100
@@ -17,13 +17,13 @@
Name: python-openstackclient
-Version: 3.16.1
+Version: 3.16.2
Release: 0
Summary: OpenStack Command-line Client
License: Apache-2.0
Group: Development/Languages/Python
URL: https://launchpad.net/python-openstackclient
-Source0:
https://files.pythonhosted.org/packages/source/p/python-openstackclient/python-openstackclient-3.16.1.tar.gz
+Source0:
https://files.pythonhosted.org/packages/source/p/python-openstackclient/python-openstackclient-3.16.2.tar.gz
BuildRequires: openstack-macros
BuildRequires: python-devel
BuildRequires: python2-cinderclient >= 3.3.0
@@ -122,15 +122,15 @@
This package contains auto-generated documentation.
%prep
-%autosetup -p1 -n python-openstackclient-3.16.1
+%autosetup -p1 -n python-openstackclient-3.16.2
%py_req_cleanup
sed -i 's/^warning-is-error.*/warning-is-error = 0/g' setup.cfg
%build
%{python_build}
-PBR_VERSION=3.16.1 sphinx-build -b html doc/source doc/build/html
-PBR_VERSION=3.16.1 sphinx-build -b man doc/source doc/build/man
+PBR_VERSION=3.16.2 sphinx-build -b html doc/source doc/build/html
+PBR_VERSION=3.16.2 sphinx-build -b man doc/source doc/build/man
# remove the sphinx-build leftovers
rm -rf doc/build/html/.{doctrees,buildinfo}
++++++ python-openstackclient-3.16.1.tar.gz ->
python-openstackclient-3.16.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-openstackclient-3.16.1/AUTHORS
new/python-openstackclient-3.16.2/AUTHORS
--- old/python-openstackclient-3.16.1/AUTHORS 2018-09-05 21:39:11.000000000
+0200
+++ new/python-openstackclient-3.16.2/AUTHORS 2018-11-19 21:59:57.000000000
+0100
@@ -303,7 +303,6 @@
ZhaoBo <[email protected]>
Zhenguo Niu <[email protected]>
Zhou Zhihong <[email protected]>
-Zuul <[email protected]>
adrian-turjak <[email protected]>
blue55 <[email protected]>
caoyuan <[email protected]>
@@ -339,6 +338,7 @@
liyingjun <[email protected]>
lrqrun <[email protected]>
lvjiawei <[email protected]>
+melanie witt <[email protected]>
melissaml <[email protected]>
nidhimittalhada <[email protected]>
npraveen35 <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-openstackclient-3.16.1/ChangeLog
new/python-openstackclient-3.16.2/ChangeLog
--- old/python-openstackclient-3.16.1/ChangeLog 2018-09-05 21:39:11.000000000
+0200
+++ new/python-openstackclient-3.16.2/ChangeLog 2018-11-19 21:59:57.000000000
+0100
@@ -1,6 +1,14 @@
CHANGES
=======
+3.16.2
+------
+
+* Handle multiple ports in AddFloatingIP
+* Default --nic to 'auto' if creating a server with >= 2.37
+* Allow endpoint filtering on both project and project-domain
+* Fix 'project purge' deleting wrong project's servers and volumes
+
3.16.1
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-openstackclient-3.16.1/PKG-INFO
new/python-openstackclient-3.16.2/PKG-INFO
--- old/python-openstackclient-3.16.1/PKG-INFO 2018-09-05 21:39:16.000000000
+0200
+++ new/python-openstackclient-3.16.2/PKG-INFO 2018-11-19 21:59:58.000000000
+0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: python-openstackclient
-Version: 3.16.1
+Version: 3.16.2
Summary: OpenStack Command-line Client
Home-page: https://docs.openstack.org/python-openstackclient/latest/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-openstackclient-3.16.1/RELEASENOTES.rst
new/python-openstackclient-3.16.2/RELEASENOTES.rst
--- old/python-openstackclient-3.16.1/RELEASENOTES.rst 2018-09-05
21:39:16.000000000 +0200
+++ new/python-openstackclient-3.16.2/RELEASENOTES.rst 1970-01-01
01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-======================
-python-openstackclient
-======================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-openstackclient-3.16.1/openstackclient/common/project_purge.py
new/python-openstackclient-3.16.2/openstackclient/common/project_purge.py
--- old/python-openstackclient-3.16.1/openstackclient/common/project_purge.py
2018-09-05 21:35:12.000000000 +0200
+++ new/python-openstackclient-3.16.2/openstackclient/common/project_purge.py
2018-11-19 21:57:57.000000000 +0100
@@ -85,7 +85,7 @@
# servers
try:
compute_client = self.app.client_manager.compute
- search_opts = {'tenant_id': project_id}
+ search_opts = {'tenant_id': project_id, 'all_tenants': True}
data = compute_client.servers.list(search_opts=search_opts)
self.delete_objects(
compute_client.servers.delete, data, 'server', dry_run)
@@ -110,7 +110,7 @@
# volumes, snapshots, backups
volume_client = self.app.client_manager.volume
- search_opts = {'project_id': project_id}
+ search_opts = {'project_id': project_id, 'all_tenants': True}
try:
data = volume_client.volume_snapshots.list(search_opts=search_opts)
self.delete_objects(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-openstackclient-3.16.1/openstackclient/compute/v2/server.py
new/python-openstackclient-3.16.2/openstackclient/compute/v2/server.py
--- old/python-openstackclient-3.16.1/openstackclient/compute/v2/server.py
2018-09-05 21:35:12.000000000 +0200
+++ new/python-openstackclient-3.16.2/openstackclient/compute/v2/server.py
2018-11-19 21:58:02.000000000 +0100
@@ -23,6 +23,7 @@
from novaclient import api_versions
from novaclient.v2 import servers
+from openstack import exceptions as sdk_exceptions
from osc_lib.cli import parseractions
from osc_lib.command import command
from osc_lib import exceptions
@@ -251,13 +252,16 @@
parser.add_argument(
"ip_address",
metavar="<ip-address>",
- help=_("Floating IP address to assign to server (IP only)"),
+ help=_("Floating IP address to assign to the first available "
+ "server port (IP only)"),
)
parser.add_argument(
"--fixed-ip-address",
metavar="<ip-address>",
help=_(
- "Fixed IP address to associate with this floating IP address"
+ "Fixed IP address to associate with this floating IP address. "
+ "The first server port containing the fixed IP address will "
+ "be used"
),
)
return parser
@@ -274,12 +278,45 @@
compute_client.servers,
parsed_args.server,
)
- port = list(client.ports(device_id=server.id))[0]
- attrs['port_id'] = port.id
+ ports = list(client.ports(device_id=server.id))
+ # If the fixed IP address was specified, we need to find the
+ # corresponding port.
if parsed_args.fixed_ip_address:
- attrs['fixed_ip_address'] = parsed_args.fixed_ip_address
-
- client.update_ip(obj, **attrs)
+ fip_address = parsed_args.fixed_ip_address
+ attrs['fixed_ip_address'] = fip_address
+ for port in ports:
+ for ip in port.fixed_ips:
+ if ip['ip_address'] == fip_address:
+ attrs['port_id'] = port.id
+ break
+ else:
+ continue
+ break
+ if 'port_id' not in attrs:
+ msg = _('No port found for fixed IP address %s')
+ raise exceptions.CommandError(msg % fip_address)
+ client.update_ip(obj, **attrs)
+ else:
+ # It's possible that one or more ports are not connected to a
+ # router and thus could fail association with a floating IP.
+ # Try each port until one succeeds. If none succeed, re-raise the
+ # last exception.
+ error = None
+ for port in ports:
+ attrs['port_id'] = port.id
+ try:
+ client.update_ip(obj, **attrs)
+ except sdk_exceptions.NotFoundException as exp:
+ # 404 ExternalGatewayForFloatingIPNotFound from neutron
+ LOG.info('Skipped port %s because it is not attached to '
+ 'an external gateway', port.id)
+ error = exp
+ continue
+ else:
+ error = None
+ break
+ if error:
+ raise error
def take_action_compute(self, client, parsed_args):
client.api.floating_ip_add(
@@ -809,9 +846,14 @@
raise exceptions.CommandError(msg)
nics = nics[0]
else:
- # Default to empty list if nothing was specified, let nova side to
- # decide the default behavior.
- nics = []
+ # Compute API version >= 2.37 requires a value, so default to
+ # 'auto' to maintain legacy behavior if a nic wasn't specified.
+ if compute_client.api_version >= api_versions.APIVersion('2.37'):
+ nics = 'auto'
+ else:
+ # Default to empty list if nothing was specified, let nova
+ # side to decide the default behavior.
+ nics = []
# Check security group exist and convert ID to name
security_group_names = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-openstackclient-3.16.1/openstackclient/identity/v3/endpoint.py
new/python-openstackclient-3.16.2/openstackclient/identity/v3/endpoint.py
--- old/python-openstackclient-3.16.1/openstackclient/identity/v3/endpoint.py
2018-09-05 21:35:12.000000000 +0200
+++ new/python-openstackclient-3.16.2/openstackclient/identity/v3/endpoint.py
2018-11-19 21:57:57.000000000 +0100
@@ -199,7 +199,7 @@
metavar='<project>',
help=_('Project to list filters (name or ID)'),
)
- common.add_project_domain_option_to_parser(list_group)
+ common.add_project_domain_option_to_parser(parser)
return parser
def take_action(self, parsed_args):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-openstackclient-3.16.1/openstackclient/tests/functional/compute/v2/test_server.py
new/python-openstackclient-3.16.2/openstackclient/tests/functional/compute/v2/test_server.py
---
old/python-openstackclient-3.16.1/openstackclient/tests/functional/compute/v2/test_server.py
2018-09-05 21:35:12.000000000 +0200
+++
new/python-openstackclient-3.16.2/openstackclient/tests/functional/compute/v2/test_server.py
2018-11-19 21:57:57.000000000 +0100
@@ -618,7 +618,9 @@
server_name
)
except exceptions.CommandFailed as e:
- self.assertIn('nics are required after microversion 2.36',
- e.stderr)
- else:
- self.fail('CommandFailed should be raised.')
+ # If we got here, it shouldn't be because a nics value wasn't
+ # provided to the server; it is likely due to something else in
+ # the functional tests like there being multiple available
+ # networks and the test didn't specify a specific network.
+ self.assertNotIn('nics are required after microversion 2.36',
+ e.stderr)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-openstackclient-3.16.1/openstackclient/tests/unit/common/test_project_purge.py
new/python-openstackclient-3.16.2/openstackclient/tests/unit/common/test_project_purge.py
---
old/python-openstackclient-3.16.1/openstackclient/tests/unit/common/test_project_purge.py
2018-09-05 21:35:12.000000000 +0200
+++
new/python-openstackclient-3.16.2/openstackclient/tests/unit/common/test_project_purge.py
2018-11-19 21:57:57.000000000 +0100
@@ -117,10 +117,11 @@
self.projects_mock.get.assert_called_once_with(self.project.id)
self.projects_mock.delete.assert_called_once_with(self.project.id)
self.servers_mock.list.assert_called_once_with(
- search_opts={'tenant_id': self.project.id})
+ search_opts={'tenant_id': self.project.id, 'all_tenants': True})
kwargs = {'filters': {'owner': self.project.id}}
self.images_mock.list.assert_called_once_with(**kwargs)
- volume_search_opts = {'project_id': self.project.id}
+ volume_search_opts = {'project_id': self.project.id,
+ 'all_tenants': True}
self.volumes_mock.list.assert_called_once_with(
search_opts=volume_search_opts)
self.snapshots_mock.list.assert_called_once_with(
@@ -152,10 +153,11 @@
self.projects_mock.get.assert_called_once_with(self.project.id)
self.projects_mock.delete.assert_not_called()
self.servers_mock.list.assert_called_once_with(
- search_opts={'tenant_id': self.project.id})
+ search_opts={'tenant_id': self.project.id, 'all_tenants': True})
kwargs = {'filters': {'owner': self.project.id}}
self.images_mock.list.assert_called_once_with(**kwargs)
- volume_search_opts = {'project_id': self.project.id}
+ volume_search_opts = {'project_id': self.project.id,
+ 'all_tenants': True}
self.volumes_mock.list.assert_called_once_with(
search_opts=volume_search_opts)
self.snapshots_mock.list.assert_called_once_with(
@@ -187,10 +189,11 @@
self.projects_mock.get.assert_called_once_with(self.project.id)
self.projects_mock.delete.assert_not_called()
self.servers_mock.list.assert_called_once_with(
- search_opts={'tenant_id': self.project.id})
+ search_opts={'tenant_id': self.project.id, 'all_tenants': True})
kwargs = {'filters': {'owner': self.project.id}}
self.images_mock.list.assert_called_once_with(**kwargs)
- volume_search_opts = {'project_id': self.project.id}
+ volume_search_opts = {'project_id': self.project.id,
+ 'all_tenants': True}
self.volumes_mock.list.assert_called_once_with(
search_opts=volume_search_opts)
self.snapshots_mock.list.assert_called_once_with(
@@ -223,10 +226,11 @@
self.projects_mock.get.assert_not_called()
self.projects_mock.delete.assert_called_once_with(self.project.id)
self.servers_mock.list.assert_called_once_with(
- search_opts={'tenant_id': self.project.id})
+ search_opts={'tenant_id': self.project.id, 'all_tenants': True})
kwargs = {'filters': {'owner': self.project.id}}
self.images_mock.list.assert_called_once_with(**kwargs)
- volume_search_opts = {'project_id': self.project.id}
+ volume_search_opts = {'project_id': self.project.id,
+ 'all_tenants': True}
self.volumes_mock.list.assert_called_once_with(
search_opts=volume_search_opts)
self.snapshots_mock.list.assert_called_once_with(
@@ -259,10 +263,11 @@
self.projects_mock.get.assert_called_once_with(self.project.id)
self.projects_mock.delete.assert_called_once_with(self.project.id)
self.servers_mock.list.assert_called_once_with(
- search_opts={'tenant_id': self.project.id})
+ search_opts={'tenant_id': self.project.id, 'all_tenants': True})
kwargs = {'filters': {'owner': self.project.id}}
self.images_mock.list.assert_called_once_with(**kwargs)
- volume_search_opts = {'project_id': self.project.id}
+ volume_search_opts = {'project_id': self.project.id,
+ 'all_tenants': True}
self.volumes_mock.list.assert_called_once_with(
search_opts=volume_search_opts)
self.snapshots_mock.list.assert_called_once_with(
@@ -295,10 +300,11 @@
self.projects_mock.get.assert_called_once_with(self.project.id)
self.projects_mock.delete.assert_called_once_with(self.project.id)
self.servers_mock.list.assert_called_once_with(
- search_opts={'tenant_id': self.project.id})
+ search_opts={'tenant_id': self.project.id, 'all_tenants': True})
kwargs = {'filters': {'owner': self.project.id}}
self.images_mock.list.assert_called_once_with(**kwargs)
- volume_search_opts = {'project_id': self.project.id}
+ volume_search_opts = {'project_id': self.project.id,
+ 'all_tenants': True}
self.volumes_mock.list.assert_called_once_with(
search_opts=volume_search_opts)
self.snapshots_mock.list.assert_called_once_with(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-openstackclient-3.16.1/openstackclient/tests/unit/compute/v2/fakes.py
new/python-openstackclient-3.16.2/openstackclient/tests/unit/compute/v2/fakes.py
---
old/python-openstackclient-3.16.1/openstackclient/tests/unit/compute/v2/fakes.py
2018-09-05 21:35:12.000000000 +0200
+++
new/python-openstackclient-3.16.2/openstackclient/tests/unit/compute/v2/fakes.py
2018-11-19 21:57:57.000000000 +0100
@@ -17,6 +17,7 @@
import uuid
import mock
+from novaclient import api_versions
from openstackclient.api import compute_v2
from openstackclient.tests.unit import fakes
@@ -201,6 +202,8 @@
self.management_url = kwargs['endpoint']
+ self.api_version = api_versions.APIVersion('2.1')
+
class TestComputev2(utils.TestCommand):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-openstackclient-3.16.1/openstackclient/tests/unit/compute/v2/test_server.py
new/python-openstackclient-3.16.2/openstackclient/tests/unit/compute/v2/test_server.py
---
old/python-openstackclient-3.16.1/openstackclient/tests/unit/compute/v2/test_server.py
2018-09-05 21:35:12.000000000 +0200
+++
new/python-openstackclient-3.16.2/openstackclient/tests/unit/compute/v2/test_server.py
2018-11-19 21:58:02.000000000 +0100
@@ -19,6 +19,7 @@
import mock
from mock import call
from novaclient import api_versions
+from openstack import exceptions as sdk_exceptions
from osc_lib import exceptions
from osc_lib import utils as common_utils
from oslo_utils import timeutils
@@ -222,11 +223,11 @@
self.network.ports = mock.Mock(return_value=[_port])
arglist = [
_server.id,
- _floating_ip['ip'],
+ _floating_ip['floating_ip_address'],
]
verifylist = [
('server', _server.id),
- ('ip_address', _floating_ip['ip']),
+ ('ip_address', _floating_ip['floating_ip_address']),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -237,7 +238,7 @@
}
self.network.find_ip.assert_called_once_with(
- _floating_ip['ip'],
+ _floating_ip['floating_ip_address'],
ignore_missing=False,
)
self.network.ports.assert_called_once_with(
@@ -248,6 +249,64 @@
**attrs
)
+ def test_server_add_floating_ip_default_no_external_gateway(self,
+ success=False):
+ _server = compute_fakes.FakeServer.create_one_server()
+ self.servers_mock.get.return_value = _server
+ _port = network_fakes.FakePort.create_one_port()
+ _floating_ip = network_fakes.FakeFloatingIP.create_one_floating_ip()
+ self.network.find_ip = mock.Mock(return_value=_floating_ip)
+ return_value = [_port]
+ # In the success case, we'll have two ports, where the first port is
+ # not attached to an external gateway but the second port is.
+ if success:
+ return_value.append(_port)
+ self.network.ports = mock.Mock(return_value=return_value)
+ side_effect = [sdk_exceptions.NotFoundException()]
+ if success:
+ side_effect.append(None)
+ self.network.update_ip = mock.Mock(side_effect=side_effect)
+ arglist = [
+ _server.id,
+ _floating_ip['floating_ip_address'],
+ ]
+ verifylist = [
+ ('server', _server.id),
+ ('ip_address', _floating_ip['floating_ip_address']),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ if success:
+ self.cmd.take_action(parsed_args)
+ else:
+ self.assertRaises(sdk_exceptions.NotFoundException,
+ self.cmd.take_action, parsed_args)
+
+ attrs = {
+ 'port_id': _port.id,
+ }
+
+ self.network.find_ip.assert_called_once_with(
+ _floating_ip['floating_ip_address'],
+ ignore_missing=False,
+ )
+ self.network.ports.assert_called_once_with(
+ device_id=_server.id,
+ )
+ if success:
+ self.assertEqual(2, self.network.update_ip.call_count)
+ calls = [mock.call(_floating_ip, **attrs)] * 2
+ self.network.update_ip.assert_has_calls(calls)
+ else:
+ self.network.update_ip.assert_called_once_with(
+ _floating_ip,
+ **attrs
+ )
+
+ def test_server_add_floating_ip_default_one_external_gateway(self):
+ self.test_server_add_floating_ip_default_no_external_gateway(
+ success=True)
+
def test_server_add_floating_ip_fixed(self):
_server = compute_fakes.FakeServer.create_one_server()
self.servers_mock.get.return_value = _server
@@ -255,26 +314,31 @@
_floating_ip = network_fakes.FakeFloatingIP.create_one_floating_ip()
self.network.find_ip = mock.Mock(return_value=_floating_ip)
self.network.ports = mock.Mock(return_value=[_port])
+ # The user has specified a fixed ip that matches one of the ports
+ # already attached to the instance.
arglist = [
- '--fixed-ip-address', _floating_ip['fixed_ip'],
+ '--fixed-ip-address', _port.fixed_ips[0]['ip_address'],
_server.id,
- _floating_ip['ip'],
+ _floating_ip['floating_ip_address'],
]
verifylist = [
- ('fixed_ip_address', _floating_ip['fixed_ip']),
+ ('fixed_ip_address', _port.fixed_ips[0]['ip_address']),
('server', _server.id),
- ('ip_address', _floating_ip['ip']),
+ ('ip_address', _floating_ip['floating_ip_address']),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
+ # We expect the update_ip call to specify a new fixed_ip_address which
+ # will overwrite the floating ip's existing fixed_ip_address.
attrs = {
'port_id': _port.id,
+ 'fixed_ip_address': _port.fixed_ips[0]['ip_address'],
}
self.network.find_ip.assert_called_once_with(
- _floating_ip['ip'],
+ _floating_ip['floating_ip_address'],
ignore_missing=False,
)
self.network.ports.assert_called_once_with(
@@ -285,6 +349,40 @@
**attrs
)
+ def test_server_add_floating_ip_fixed_no_port_found(self):
+ _server = compute_fakes.FakeServer.create_one_server()
+ self.servers_mock.get.return_value = _server
+ _port = network_fakes.FakePort.create_one_port()
+ _floating_ip = network_fakes.FakeFloatingIP.create_one_floating_ip()
+ self.network.find_ip = mock.Mock(return_value=_floating_ip)
+ self.network.ports = mock.Mock(return_value=[_port])
+ # The user has specified a fixed ip that does not match any of the
+ # ports already attached to the instance.
+ nonexistent_ip = '10.0.0.9'
+ arglist = [
+ '--fixed-ip-address', nonexistent_ip,
+ _server.id,
+ _floating_ip['floating_ip_address'],
+ ]
+ verifylist = [
+ ('fixed_ip_address', nonexistent_ip),
+ ('server', _server.id),
+ ('ip_address', _floating_ip['floating_ip_address']),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.assertRaises(exceptions.CommandError, self.cmd.take_action,
+ parsed_args)
+
+ self.network.find_ip.assert_called_once_with(
+ _floating_ip['floating_ip_address'],
+ ignore_missing=False,
+ )
+ self.network.ports.assert_called_once_with(
+ device_id=_server.id,
+ )
+ self.network.update_ip.assert_not_called()
+
class TestServerAddPort(TestServer):
@@ -820,6 +918,55 @@
# Set expected values
kwargs = dict(
+ meta=None,
+ files={},
+ reservation_id=None,
+ min_count=1,
+ max_count=1,
+ security_groups=[],
+ userdata=None,
+ key_name=None,
+ availability_zone=None,
+ block_device_mapping_v2=[],
+ nics='auto',
+ scheduler_hints={},
+ config_drive=None,
+ )
+ # ServerManager.create(name, image, flavor, **kwargs)
+ self.servers_mock.create.assert_called_with(
+ self.new_server.name,
+ self.image,
+ self.flavor,
+ **kwargs
+ )
+
+ self.assertEqual(self.columns, columns)
+ self.assertEqual(self.datalist(), data)
+
+ def test_server_create_with_auto_network_default_v2_37(self):
+ """Tests creating a server without specifying --nic using 2.37."""
+ arglist = [
+ '--image', 'image1',
+ '--flavor', 'flavor1',
+ self.new_server.name,
+ ]
+ verifylist = [
+ ('image', 'image1'),
+ ('flavor', 'flavor1'),
+ ('config_drive', False),
+ ('server_name', self.new_server.name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # Since check_parser doesn't handle compute global options like
+ # --os-compute-api-version, we have to mock the construction of
+ # the novaclient client object with our own APIVersion.
+ with mock.patch.object(self.app.client_manager.compute, 'api_version',
+ api_versions.APIVersion('2.37')):
+ columns, data = self.cmd.take_action(parsed_args)
+
+ # Set expected values
+ kwargs = dict(
meta=None,
files={},
reservation_id=None,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-openstackclient-3.16.1/openstackclient/tests/unit/identity/v3/test_endpoint.py
new/python-openstackclient-3.16.2/openstackclient/tests/unit/identity/v3/test_endpoint.py
---
old/python-openstackclient-3.16.1/openstackclient/tests/unit/identity/v3/test_endpoint.py
2018-09-05 21:35:12.000000000 +0200
+++
new/python-openstackclient-3.16.2/openstackclient/tests/unit/identity/v3/test_endpoint.py
2018-11-19 21:57:57.000000000 +0100
@@ -439,6 +439,47 @@
)
self.assertEqual(datalist, tuple(data))
+ def test_endpoint_list_project_with_project_domain(self):
+ project = identity_fakes.FakeProject.create_one_project()
+ domain = identity_fakes.FakeDomain.create_one_domain()
+
+ self.ep_filter_mock.list_endpoints_for_project.return_value = [
+ self.endpoint
+ ]
+ self.projects_mock.get.return_value = project
+
+ arglist = [
+ '--project', project.name,
+ '--project-domain', domain.name
+ ]
+ verifylist = [
+ ('project', project.name),
+ ('project_domain', domain.name),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # In base command class Lister in cliff, abstract method take_action()
+ # returns a tuple containing the column names and an iterable
+ # containing the data to be listed.
+ columns, data = self.cmd.take_action(parsed_args)
+ self.ep_filter_mock.list_endpoints_for_project.assert_called_with(
+ project=project.id
+ )
+
+ self.assertEqual(self.columns, columns)
+ datalist = (
+ (
+ self.endpoint.id,
+ self.endpoint.region,
+ self.service.name,
+ self.service.type,
+ True,
+ self.endpoint.interface,
+ self.endpoint.url,
+ ),
+ )
+ self.assertEqual(datalist, tuple(data))
+
class TestEndpointSet(TestEndpoint):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-openstackclient-3.16.1/python_openstackclient.egg-info/PKG-INFO
new/python-openstackclient-3.16.2/python_openstackclient.egg-info/PKG-INFO
--- old/python-openstackclient-3.16.1/python_openstackclient.egg-info/PKG-INFO
2018-09-05 21:39:11.000000000 +0200
+++ new/python-openstackclient-3.16.2/python_openstackclient.egg-info/PKG-INFO
2018-11-19 21:59:57.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: python-openstackclient
-Version: 3.16.1
+Version: 3.16.2
Summary: OpenStack Command-line Client
Home-page: https://docs.openstack.org/python-openstackclient/latest/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-openstackclient-3.16.1/python_openstackclient.egg-info/SOURCES.txt
new/python-openstackclient-3.16.2/python_openstackclient.egg-info/SOURCES.txt
---
old/python-openstackclient-3.16.1/python_openstackclient.egg-info/SOURCES.txt
2018-09-05 21:39:13.000000000 +0200
+++
new/python-openstackclient-3.16.2/python_openstackclient.egg-info/SOURCES.txt
2018-11-19 21:59:57.000000000 +0100
@@ -903,6 +903,7 @@
releasenotes/notes/fix-network-rbac-create-d1f4de77ad2dd421.yaml
releasenotes/notes/flavor-add-description-b618abd4a7fb6545.yaml
releasenotes/notes/flavor-create-with-project-19d41bfa93e3c6d0.yaml
+releasenotes/notes/floating-ip-multi-port-9779e88f590cae23.yaml
releasenotes/notes/floating-ip-set-unset-port-28e33875937b69cf.yaml
releasenotes/notes/image-set-to-update-image-membership-68221f226ca3b6e0.yaml
releasenotes/notes/image_set_visibility-babf4ff2f687d465.yaml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-openstackclient-3.16.1/python_openstackclient.egg-info/pbr.json
new/python-openstackclient-3.16.2/python_openstackclient.egg-info/pbr.json
--- old/python-openstackclient-3.16.1/python_openstackclient.egg-info/pbr.json
2018-09-05 21:39:11.000000000 +0200
+++ new/python-openstackclient-3.16.2/python_openstackclient.egg-info/pbr.json
2018-11-19 21:59:57.000000000 +0100
@@ -1 +1 @@
-{"git_version": "3e5a2d2", "is_release": true}
\ No newline at end of file
+{"git_version": "e09c358", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-openstackclient-3.16.1/releasenotes/notes/floating-ip-multi-port-9779e88f590cae23.yaml
new/python-openstackclient-3.16.2/releasenotes/notes/floating-ip-multi-port-9779e88f590cae23.yaml
---
old/python-openstackclient-3.16.1/releasenotes/notes/floating-ip-multi-port-9779e88f590cae23.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/python-openstackclient-3.16.2/releasenotes/notes/floating-ip-multi-port-9779e88f590cae23.yaml
2018-11-19 21:57:57.000000000 +0100
@@ -0,0 +1,14 @@
+---
+fixes:
+ - |
+ The ``openstack server add floating ip`` command has been fixed to handle
+ servers with multiple ports attached. Previously, the command was using
+ the first port in the port list when attempting to associate the floating
+ ip. This could fail if the server had multiple ports and the first port
+ in the list was not attached to an external gateway. Another way it could
+ fail is if the ``--fixed-ip-address`` option was passed and the first port
+ did not have the specified fixed IP address attached to it.
+ Now, the ``openstack server add floating ip`` command will find the port
+ attached to the specified ``--fixed-ip-address``, if provided, else it will
+ try multiple ports until one is found attached to an external gateway. If
+ a suitable port is not found in the port list, an error will be returned.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python-openstackclient-3.16.1/releasenotes/notes/reno.cache
new/python-openstackclient-3.16.2/releasenotes/notes/reno.cache
--- old/python-openstackclient-3.16.1/releasenotes/notes/reno.cache
2018-09-05 21:39:16.000000000 +0200
+++ new/python-openstackclient-3.16.2/releasenotes/notes/reno.cache
1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
----
-file-contents: {}
-notes: []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-openstackclient-3.16.1/setup.cfg
new/python-openstackclient-3.16.2/setup.cfg
--- old/python-openstackclient-3.16.1/setup.cfg 2018-09-05 21:39:16.000000000
+0200
+++ new/python-openstackclient-3.16.2/setup.cfg 2018-11-19 21:59:58.000000000
+0100
@@ -53,6 +53,7 @@
compute_agent_delete = openstackclient.compute.v2.agent:DeleteAgent
compute_agent_list = openstackclient.compute.v2.agent:ListAgent
compute_agent_set = openstackclient.compute.v2.agent:SetAgent
+
aggregate_add_host =
openstackclient.compute.v2.aggregate:AddAggregateHost
aggregate_create = openstackclient.compute.v2.aggregate:CreateAggregate
aggregate_delete = openstackclient.compute.v2.aggregate:DeleteAggregate
@@ -61,31 +62,41 @@
aggregate_set = openstackclient.compute.v2.aggregate:SetAggregate
aggregate_show = openstackclient.compute.v2.aggregate:ShowAggregate
aggregate_unset = openstackclient.compute.v2.aggregate:UnsetAggregate
+
compute_service_delete =
openstackclient.compute.v2.service:DeleteService
compute_service_list = openstackclient.compute.v2.service:ListService
compute_service_set = openstackclient.compute.v2.service:SetService
+
console_log_show = openstackclient.compute.v2.console:ShowConsoleLog
console_url_show = openstackclient.compute.v2.console:ShowConsoleURL
+
flavor_create = openstackclient.compute.v2.flavor:CreateFlavor
flavor_delete = openstackclient.compute.v2.flavor:DeleteFlavor
flavor_list = openstackclient.compute.v2.flavor:ListFlavor
flavor_show = openstackclient.compute.v2.flavor:ShowFlavor
flavor_set = openstackclient.compute.v2.flavor:SetFlavor
flavor_unset = openstackclient.compute.v2.flavor:UnsetFlavor
+
host_list = openstackclient.compute.v2.host:ListHost
host_set = openstackclient.compute.v2.host:SetHost
host_show = openstackclient.compute.v2.host:ShowHost
+
hypervisor_list = openstackclient.compute.v2.hypervisor:ListHypervisor
hypervisor_show = openstackclient.compute.v2.hypervisor:ShowHypervisor
+
hypervisor_stats_show =
openstackclient.compute.v2.hypervisor_stats:ShowHypervisorStats
+
ip_fixed_add = openstackclient.compute.v2.fixedip:AddFixedIP
ip_fixed_remove = openstackclient.compute.v2.fixedip:RemoveFixedIP
+
ip_floating_add = openstackclient.compute.v2.floatingip:AddFloatingIP
ip_floating_remove =
openstackclient.compute.v2.floatingip:RemoveFloatingIP
+
keypair_create = openstackclient.compute.v2.keypair:CreateKeypair
keypair_delete = openstackclient.compute.v2.keypair:DeleteKeypair
keypair_list = openstackclient.compute.v2.keypair:ListKeypair
keypair_show = openstackclient.compute.v2.keypair:ShowKeypair
+
server_add_fixed_ip = openstackclient.compute.v2.server:AddFixedIP
server_add_floating_ip = openstackclient.compute.v2.server:AddFloatingIP
server_add_port = openstackclient.compute.v2.server:AddPort
@@ -123,33 +134,42 @@
server_unrescue = openstackclient.compute.v2.server:UnrescueServer
server_unset = openstackclient.compute.v2.server:UnsetServer
server_unshelve = openstackclient.compute.v2.server:UnshelveServer
+
server_backup_create =
openstackclient.compute.v2.server_backup:CreateServerBackup
+
server_event_list =
openstackclient.compute.v2.server_event:ListServerEvent
server_event_show =
openstackclient.compute.v2.server_event:ShowServerEvent
+
server_group_create =
openstackclient.compute.v2.server_group:CreateServerGroup
server_group_delete =
openstackclient.compute.v2.server_group:DeleteServerGroup
server_group_list =
openstackclient.compute.v2.server_group:ListServerGroup
server_group_show =
openstackclient.compute.v2.server_group:ShowServerGroup
+
server_image_create =
openstackclient.compute.v2.server_image:CreateServerImage
+
usage_list = openstackclient.compute.v2.usage:ListUsage
usage_show = openstackclient.compute.v2.usage:ShowUsage
openstack.identity.v2 =
catalog_list = openstackclient.identity.v2_0.catalog:ListCatalog
catalog_show = openstackclient.identity.v2_0.catalog:ShowCatalog
+
ec2_credentials_create =
openstackclient.identity.v2_0.ec2creds:CreateEC2Creds
ec2_credentials_delete =
openstackclient.identity.v2_0.ec2creds:DeleteEC2Creds
ec2_credentials_list =
openstackclient.identity.v2_0.ec2creds:ListEC2Creds
ec2_credentials_show =
openstackclient.identity.v2_0.ec2creds:ShowEC2Creds
+
endpoint_create = openstackclient.identity.v2_0.endpoint:CreateEndpoint
endpoint_delete = openstackclient.identity.v2_0.endpoint:DeleteEndpoint
endpoint_list = openstackclient.identity.v2_0.endpoint:ListEndpoint
endpoint_show = openstackclient.identity.v2_0.endpoint:ShowEndpoint
+
project_create = openstackclient.identity.v2_0.project:CreateProject
project_delete = openstackclient.identity.v2_0.project:DeleteProject
project_list = openstackclient.identity.v2_0.project:ListProject
project_set = openstackclient.identity.v2_0.project:SetProject
project_show = openstackclient.identity.v2_0.project:ShowProject
project_unset = openstackclient.identity.v2_0.project:UnsetProject
+
role_add = openstackclient.identity.v2_0.role:AddRole
role_create = openstackclient.identity.v2_0.role:CreateRole
role_delete = openstackclient.identity.v2_0.role:DeleteRole
@@ -157,45 +177,56 @@
role_remove = openstackclient.identity.v2_0.role:RemoveRole
role_show = openstackclient.identity.v2_0.role:ShowRole
role_assignment_list =
openstackclient.identity.v2_0.role_assignment:ListRoleAssignment
+
service_create = openstackclient.identity.v2_0.service:CreateService
service_delete = openstackclient.identity.v2_0.service:DeleteService
service_list = openstackclient.identity.v2_0.service:ListService
service_show = openstackclient.identity.v2_0.service:ShowService
+
token_issue = openstackclient.identity.v2_0.token:IssueToken
token_revoke = openstackclient.identity.v2_0.token:RevokeToken
+
user_create = openstackclient.identity.v2_0.user:CreateUser
user_delete = openstackclient.identity.v2_0.user:DeleteUser
user_list = openstackclient.identity.v2_0.user:ListUser
user_set = openstackclient.identity.v2_0.user:SetUser
user_show = openstackclient.identity.v2_0.user:ShowUser
+
user_role_list = openstackclient.identity.v2_0.role:ListUserRole
openstack.identity.v3 =
access_token_create =
openstackclient.identity.v3.token:CreateAccessToken
+
application_credential_create =
openstackclient.identity.v3.application_credential:CreateApplicationCredential
application_credential_delete =
openstackclient.identity.v3.application_credential:DeleteApplicationCredential
application_credential_list =
openstackclient.identity.v3.application_credential:ListApplicationCredential
application_credential_show =
openstackclient.identity.v3.application_credential:ShowApplicationCredential
+
catalog_list = openstackclient.identity.v3.catalog:ListCatalog
catalog_show = openstackclient.identity.v3.catalog:ShowCatalog
+
consumer_create = openstackclient.identity.v3.consumer:CreateConsumer
consumer_delete = openstackclient.identity.v3.consumer:DeleteConsumer
consumer_list = openstackclient.identity.v3.consumer:ListConsumer
consumer_set = openstackclient.identity.v3.consumer:SetConsumer
consumer_show = openstackclient.identity.v3.consumer:ShowConsumer
+
credential_create =
openstackclient.identity.v3.credential:CreateCredential
credential_delete =
openstackclient.identity.v3.credential:DeleteCredential
credential_list = openstackclient.identity.v3.credential:ListCredential
credential_set = openstackclient.identity.v3.credential:SetCredential
credential_show = openstackclient.identity.v3.credential:ShowCredential
+
domain_create = openstackclient.identity.v3.domain:CreateDomain
domain_delete = openstackclient.identity.v3.domain:DeleteDomain
domain_list = openstackclient.identity.v3.domain:ListDomain
domain_set = openstackclient.identity.v3.domain:SetDomain
domain_show = openstackclient.identity.v3.domain:ShowDomain
+
ec2_credentials_create =
openstackclient.identity.v3.ec2creds:CreateEC2Creds
ec2_credentials_delete =
openstackclient.identity.v3.ec2creds:DeleteEC2Creds
ec2_credentials_list = openstackclient.identity.v3.ec2creds:ListEC2Creds
ec2_credentials_show = openstackclient.identity.v3.ec2creds:ShowEC2Creds
+
endpoint_add_project =
openstackclient.identity.v3.endpoint:AddProjectToEndpoint
endpoint_create = openstackclient.identity.v3.endpoint:CreateEndpoint
endpoint_delete = openstackclient.identity.v3.endpoint:DeleteEndpoint
@@ -203,6 +234,7 @@
endpoint_remove_project =
openstackclient.identity.v3.endpoint:RemoveProjectFromEndpoint
endpoint_set = openstackclient.identity.v3.endpoint:SetEndpoint
endpoint_show = openstackclient.identity.v3.endpoint:ShowEndpoint
+
endpoint_group_add_project =
openstackclient.identity.v3.endpoint_group:AddProjectToEndpointGroup
endpoint_group_create =
openstackclient.identity.v3.endpoint_group:CreateEndpointGroup
endpoint_group_delete =
openstackclient.identity.v3.endpoint_group:DeleteEndpointGroup
@@ -210,6 +242,7 @@
endpoint_group_remove_project =
openstackclient.identity.v3.endpoint_group:RemoveProjectFromEndpointGroup
endpoint_group_set =
openstackclient.identity.v3.endpoint_group:SetEndpointGroup
endpoint_group_show =
openstackclient.identity.v3.endpoint_group:ShowEndpointGroup
+
group_add_user = openstackclient.identity.v3.group:AddUserToGroup
group_contains_user = openstackclient.identity.v3.group:CheckUserInGroup
group_create = openstackclient.identity.v3.group:CreateGroup
@@ -218,53 +251,65 @@
group_remove_user =
openstackclient.identity.v3.group:RemoveUserFromGroup
group_set = openstackclient.identity.v3.group:SetGroup
group_show = openstackclient.identity.v3.group:ShowGroup
+
identity_provider_create =
openstackclient.identity.v3.identity_provider:CreateIdentityProvider
identity_provider_delete =
openstackclient.identity.v3.identity_provider:DeleteIdentityProvider
identity_provider_list =
openstackclient.identity.v3.identity_provider:ListIdentityProvider
identity_provider_set =
openstackclient.identity.v3.identity_provider:SetIdentityProvider
identity_provider_show =
openstackclient.identity.v3.identity_provider:ShowIdentityProvider
+
implied_role_create =
openstackclient.identity.v3.implied_role:CreateImpliedRole
implied_role_delete =
openstackclient.identity.v3.implied_role:DeleteImpliedRole
implied_role_list =
openstackclient.identity.v3.implied_role:ListImpliedRole
+
limit_create = openstackclient.identity.v3.limit:CreateLimit
limit_delete = openstackclient.identity.v3.limit:DeleteLimit
limit_list = openstackclient.identity.v3.limit:ListLimit
limit_set = openstackclient.identity.v3.limit:SetLimit
limit_show = openstackclient.identity.v3.limit:ShowLimit
+
mapping_create = openstackclient.identity.v3.mapping:CreateMapping
mapping_delete = openstackclient.identity.v3.mapping:DeleteMapping
mapping_list = openstackclient.identity.v3.mapping:ListMapping
mapping_set = openstackclient.identity.v3.mapping:SetMapping
mapping_show = openstackclient.identity.v3.mapping:ShowMapping
+
policy_create = openstackclient.identity.v3.policy:CreatePolicy
policy_delete = openstackclient.identity.v3.policy:DeletePolicy
policy_list = openstackclient.identity.v3.policy:ListPolicy
policy_set = openstackclient.identity.v3.policy:SetPolicy
policy_show = openstackclient.identity.v3.policy:ShowPolicy
+
project_create = openstackclient.identity.v3.project:CreateProject
project_delete = openstackclient.identity.v3.project:DeleteProject
project_list = openstackclient.identity.v3.project:ListProject
project_set = openstackclient.identity.v3.project:SetProject
project_show = openstackclient.identity.v3.project:ShowProject
+
federation_protocol_create =
openstackclient.identity.v3.federation_protocol:CreateProtocol
federation_protocol_delete =
openstackclient.identity.v3.federation_protocol:DeleteProtocol
federation_protocol_list =
openstackclient.identity.v3.federation_protocol:ListProtocols
federation_protocol_set =
openstackclient.identity.v3.federation_protocol:SetProtocol
federation_protocol_show =
openstackclient.identity.v3.federation_protocol:ShowProtocol
+
federation_domain_list =
openstackclient.identity.v3.unscoped_saml:ListAccessibleDomains
federation_project_list =
openstackclient.identity.v3.unscoped_saml:ListAccessibleProjects
+
region_create = openstackclient.identity.v3.region:CreateRegion
region_delete = openstackclient.identity.v3.region:DeleteRegion
region_list = openstackclient.identity.v3.region:ListRegion
region_set = openstackclient.identity.v3.region:SetRegion
region_show = openstackclient.identity.v3.region:ShowRegion
+
registered_limit_create =
openstackclient.identity.v3.registered_limit:CreateRegisteredLimit
registered_limit_delete =
openstackclient.identity.v3.registered_limit:DeleteRegisteredLimit
registered_limit_list =
openstackclient.identity.v3.registered_limit:ListRegisteredLimit
registered_limit_set =
openstackclient.identity.v3.registered_limit:SetRegisteredLimit
registered_limit_show =
openstackclient.identity.v3.registered_limit:ShowRegisteredLimit
+
request_token_authorize =
openstackclient.identity.v3.token:AuthorizeRequestToken
request_token_create =
openstackclient.identity.v3.token:CreateRequestToken
+
role_add = openstackclient.identity.v3.role:AddRole
role_create = openstackclient.identity.v3.role:CreateRole
role_delete = openstackclient.identity.v3.role:DeleteRole
@@ -273,22 +318,27 @@
role_show = openstackclient.identity.v3.role:ShowRole
role_set = openstackclient.identity.v3.role:SetRole
role_assignment_list =
openstackclient.identity.v3.role_assignment:ListRoleAssignment
+
service_create = openstackclient.identity.v3.service:CreateService
service_delete = openstackclient.identity.v3.service:DeleteService
service_list = openstackclient.identity.v3.service:ListService
service_show = openstackclient.identity.v3.service:ShowService
service_set = openstackclient.identity.v3.service:SetService
+
service_provider_create =
openstackclient.identity.v3.service_provider:CreateServiceProvider
service_provider_delete =
openstackclient.identity.v3.service_provider:DeleteServiceProvider
service_provider_list =
openstackclient.identity.v3.service_provider:ListServiceProvider
service_provider_set =
openstackclient.identity.v3.service_provider:SetServiceProvider
service_provider_show =
openstackclient.identity.v3.service_provider:ShowServiceProvider
+
token_issue = openstackclient.identity.v3.token:IssueToken
token_revoke = openstackclient.identity.v3.token:RevokeToken
+
trust_create = openstackclient.identity.v3.trust:CreateTrust
trust_delete = openstackclient.identity.v3.trust:DeleteTrust
trust_list = openstackclient.identity.v3.trust:ListTrust
trust_show = openstackclient.identity.v3.trust:ShowTrust
+
user_create = openstackclient.identity.v3.user:CreateUser
user_delete = openstackclient.identity.v3.user:DeleteUser
user_list = openstackclient.identity.v3.user:ListUser
@@ -319,15 +369,19 @@
address_scope_list =
openstackclient.network.v2.address_scope:ListAddressScope
address_scope_set =
openstackclient.network.v2.address_scope:SetAddressScope
address_scope_show =
openstackclient.network.v2.address_scope:ShowAddressScope
+
floating_ip_create =
openstackclient.network.v2.floating_ip:CreateFloatingIP
floating_ip_delete =
openstackclient.network.v2.floating_ip:DeleteFloatingIP
floating_ip_list = openstackclient.network.v2.floating_ip:ListFloatingIP
floating_ip_set = openstackclient.network.v2.floating_ip:SetFloatingIP
floating_ip_show = openstackclient.network.v2.floating_ip:ShowFloatingIP
floating_ip_unset =
openstackclient.network.v2.floating_ip:UnsetFloatingIP
+
floating_ip_pool_list =
openstackclient.network.v2.floating_ip_pool:ListFloatingIPPool
+
ip_availability_list =
openstackclient.network.v2.ip_availability:ListIPAvailability
ip_availability_show =
openstackclient.network.v2.ip_availability:ShowIPAvailability
+
network_agent_add_network =
openstackclient.network.v2.network_agent:AddNetworkToAgent
network_agent_add_router =
openstackclient.network.v2.network_agent:AddRouterToAgent
network_agent_delete =
openstackclient.network.v2.network_agent:DeleteNetworkAgent
@@ -336,8 +390,10 @@
network_agent_remove_router =
openstackclient.network.v2.network_agent:RemoveRouterFromAgent
network_agent_set =
openstackclient.network.v2.network_agent:SetNetworkAgent
network_agent_show =
openstackclient.network.v2.network_agent:ShowNetworkAgent
+
network_auto_allocated_topology_create =
openstackclient.network.v2.network_auto_allocated_topology:CreateAutoAllocatedTopology
network_auto_allocated_topology_delete =
openstackclient.network.v2.network_auto_allocated_topology:DeleteAutoAllocatedTopology
+
network_flavor_add_profile =
openstackclient.network.v2.network_flavor:AddNetworkFlavorToProfile
network_flavor_create =
openstackclient.network.v2.network_flavor:CreateNetworkFlavor
network_flavor_delete =
openstackclient.network.v2.network_flavor:DeleteNetworkFlavor
@@ -345,54 +401,66 @@
network_flavor_remove_profile =
openstackclient.network.v2.network_flavor:RemoveNetworkFlavorFromProfile
network_flavor_set =
openstackclient.network.v2.network_flavor:SetNetworkFlavor
network_flavor_show =
openstackclient.network.v2.network_flavor:ShowNetworkFlavor
+
network_flavor_profile_create =
openstackclient.network.v2.network_flavor_profile:CreateNetworkFlavorProfile
network_flavor_profile_delete =
openstackclient.network.v2.network_flavor_profile:DeleteNetworkFlavorProfile
network_flavor_profile_list =
openstackclient.network.v2.network_flavor_profile:ListNetworkFlavorProfile
network_flavor_profile_set =
openstackclient.network.v2.network_flavor_profile:SetNetworkFlavorProfile
network_flavor_profile_show =
openstackclient.network.v2.network_flavor_profile:ShowNetworkFlavorProfile
+
network_create = openstackclient.network.v2.network:CreateNetwork
network_delete = openstackclient.network.v2.network:DeleteNetwork
network_list = openstackclient.network.v2.network:ListNetwork
network_set = openstackclient.network.v2.network:SetNetwork
network_show = openstackclient.network.v2.network:ShowNetwork
network_unset = openstackclient.network.v2.network:UnsetNetwork
+
network_meter_create =
openstackclient.network.v2.network_meter:CreateMeter
network_meter_delete =
openstackclient.network.v2.network_meter:DeleteMeter
network_meter_list = openstackclient.network.v2.network_meter:ListMeter
network_meter_show = openstackclient.network.v2.network_meter:ShowMeter
+
network_meter_rule_create =
openstackclient.network.v2.network_meter_rule:CreateMeterRule
network_meter_rule_delete =
openstackclient.network.v2.network_meter_rule:DeleteMeterRule
network_meter_rule_list =
openstackclient.network.v2.network_meter_rule:ListMeterRule
network_meter_rule_show =
openstackclient.network.v2.network_meter_rule:ShowMeterRule
+
network_qos_policy_create =
openstackclient.network.v2.network_qos_policy:CreateNetworkQosPolicy
network_qos_policy_delete =
openstackclient.network.v2.network_qos_policy:DeleteNetworkQosPolicy
network_qos_policy_list =
openstackclient.network.v2.network_qos_policy:ListNetworkQosPolicy
network_qos_policy_set =
openstackclient.network.v2.network_qos_policy:SetNetworkQosPolicy
network_qos_policy_show =
openstackclient.network.v2.network_qos_policy:ShowNetworkQosPolicy
+
network_qos_rule_create =
openstackclient.network.v2.network_qos_rule:CreateNetworkQosRule
network_qos_rule_delete =
openstackclient.network.v2.network_qos_rule:DeleteNetworkQosRule
network_qos_rule_list =
openstackclient.network.v2.network_qos_rule:ListNetworkQosRule
network_qos_rule_set =
openstackclient.network.v2.network_qos_rule:SetNetworkQosRule
network_qos_rule_show =
openstackclient.network.v2.network_qos_rule:ShowNetworkQosRule
+
network_qos_rule_type_list =
openstackclient.network.v2.network_qos_rule_type:ListNetworkQosRuleType
network_qos_rule_type_show =
openstackclient.network.v2.network_qos_rule_type:ShowNetworkQosRuleType
+
network_rbac_create =
openstackclient.network.v2.network_rbac:CreateNetworkRBAC
network_rbac_delete =
openstackclient.network.v2.network_rbac:DeleteNetworkRBAC
network_rbac_list =
openstackclient.network.v2.network_rbac:ListNetworkRBAC
network_rbac_set =
openstackclient.network.v2.network_rbac:SetNetworkRBAC
network_rbac_show =
openstackclient.network.v2.network_rbac:ShowNetworkRBAC
+
network_segment_create =
openstackclient.network.v2.network_segment:CreateNetworkSegment
network_segment_delete =
openstackclient.network.v2.network_segment:DeleteNetworkSegment
network_segment_list =
openstackclient.network.v2.network_segment:ListNetworkSegment
network_segment_set =
openstackclient.network.v2.network_segment:SetNetworkSegment
network_segment_show =
openstackclient.network.v2.network_segment:ShowNetworkSegment
+
network_service_provider_list =
openstackclient.network.v2.network_service_provider:ListNetworkServiceProvider
+
port_create = openstackclient.network.v2.port:CreatePort
port_delete = openstackclient.network.v2.port:DeletePort
port_list = openstackclient.network.v2.port:ListPort
port_set = openstackclient.network.v2.port:SetPort
port_show = openstackclient.network.v2.port:ShowPort
port_unset = openstackclient.network.v2.port:UnsetPort
+
router_add_port = openstackclient.network.v2.router:AddPortToRouter
router_add_subnet = openstackclient.network.v2.router:AddSubnetToRouter
router_create = openstackclient.network.v2.router:CreateRouter
@@ -403,22 +471,26 @@
router_set = openstackclient.network.v2.router:SetRouter
router_show = openstackclient.network.v2.router:ShowRouter
router_unset = openstackclient.network.v2.router:UnsetRouter
+
security_group_create =
openstackclient.network.v2.security_group:CreateSecurityGroup
security_group_delete =
openstackclient.network.v2.security_group:DeleteSecurityGroup
security_group_list =
openstackclient.network.v2.security_group:ListSecurityGroup
security_group_set =
openstackclient.network.v2.security_group:SetSecurityGroup
security_group_show =
openstackclient.network.v2.security_group:ShowSecurityGroup
security_group_unset =
openstackclient.network.v2.security_group:UnsetSecurityGroup
+
security_group_rule_create =
openstackclient.network.v2.security_group_rule:CreateSecurityGroupRule
security_group_rule_delete =
openstackclient.network.v2.security_group_rule:DeleteSecurityGroupRule
security_group_rule_list =
openstackclient.network.v2.security_group_rule:ListSecurityGroupRule
security_group_rule_show =
openstackclient.network.v2.security_group_rule:ShowSecurityGroupRule
+
subnet_create = openstackclient.network.v2.subnet:CreateSubnet
subnet_delete = openstackclient.network.v2.subnet:DeleteSubnet
subnet_list = openstackclient.network.v2.subnet:ListSubnet
subnet_set = openstackclient.network.v2.subnet:SetSubnet
subnet_show = openstackclient.network.v2.subnet:ShowSubnet
subnet_unset = openstackclient.network.v2.subnet:UnsetSubnet
+
subnet_pool_create =
openstackclient.network.v2.subnet_pool:CreateSubnetPool
subnet_pool_delete =
openstackclient.network.v2.subnet_pool:DeleteSubnetPool
subnet_pool_list = openstackclient.network.v2.subnet_pool:ListSubnetPool
@@ -449,12 +521,14 @@
backup_list = openstackclient.volume.v1.backup:ListBackup
backup_restore = openstackclient.volume.v1.backup:RestoreBackup
backup_show = openstackclient.volume.v1.backup:ShowBackup
+
snapshot_create = openstackclient.volume.v1.snapshot:CreateSnapshot
snapshot_delete = openstackclient.volume.v1.snapshot:DeleteSnapshot
snapshot_list = openstackclient.volume.v1.snapshot:ListSnapshot
snapshot_set = openstackclient.volume.v1.snapshot:SetSnapshot
snapshot_show = openstackclient.volume.v1.snapshot:ShowSnapshot
snapshot_unset = openstackclient.volume.v1.snapshot:UnsetSnapshot
+
volume_create = openstackclient.volume.v1.volume:CreateVolume
volume_delete = openstackclient.volume.v1.volume:DeleteVolume
volume_list = openstackclient.volume.v1.volume:ListVolume
@@ -462,23 +536,27 @@
volume_set = openstackclient.volume.v1.volume:SetVolume
volume_show = openstackclient.volume.v1.volume:ShowVolume
volume_unset = openstackclient.volume.v1.volume:UnsetVolume
+
volume_backup_create =
openstackclient.volume.v1.backup:CreateVolumeBackup
volume_backup_delete =
openstackclient.volume.v1.backup:DeleteVolumeBackup
volume_backup_list = openstackclient.volume.v1.backup:ListVolumeBackup
volume_backup_restore =
openstackclient.volume.v1.backup:RestoreVolumeBackup
volume_backup_show = openstackclient.volume.v1.backup:ShowVolumeBackup
+
volume_snapshot_create =
openstackclient.volume.v1.volume_snapshot:CreateVolumeSnapshot
volume_snapshot_delete =
openstackclient.volume.v1.volume_snapshot:DeleteVolumeSnapshot
volume_snapshot_list =
openstackclient.volume.v1.volume_snapshot:ListVolumeSnapshot
volume_snapshot_set =
openstackclient.volume.v1.volume_snapshot:SetVolumeSnapshot
volume_snapshot_show =
openstackclient.volume.v1.volume_snapshot:ShowVolumeSnapshot
volume_snapshot_unset =
openstackclient.volume.v1.volume_snapshot:UnsetVolumeSnapshot
+
volume_type_create =
openstackclient.volume.v1.volume_type:CreateVolumeType
volume_type_delete =
openstackclient.volume.v1.volume_type:DeleteVolumeType
volume_type_list = openstackclient.volume.v1.volume_type:ListVolumeType
volume_type_set = openstackclient.volume.v1.volume_type:SetVolumeType
volume_type_show = openstackclient.volume.v1.volume_type:ShowVolumeType
volume_type_unset =
openstackclient.volume.v1.volume_type:UnsetVolumeType
+
volume_qos_associate = openstackclient.volume.v1.qos_specs:AssociateQos
volume_qos_create = openstackclient.volume.v1.qos_specs:CreateQos
volume_qos_delete = openstackclient.volume.v1.qos_specs:DeleteQos
@@ -487,8 +565,10 @@
volume_qos_set = openstackclient.volume.v1.qos_specs:SetQos
volume_qos_show = openstackclient.volume.v1.qos_specs:ShowQos
volume_qos_unset = openstackclient.volume.v1.qos_specs:UnsetQos
+
volume_service_list = openstackclient.volume.v1.service:ListService
volume_service_set = openstackclient.volume.v1.service:SetService
+
volume_transfer_request_accept =
openstackclient.volume.v1.volume_transfer_request:AcceptTransferRequest
volume_transfer_request_create =
openstackclient.volume.v1.volume_transfer_request:CreateTransferRequest
volume_transfer_request_delete =
openstackclient.volume.v1.volume_transfer_request:DeleteTransferRequest
@@ -500,6 +580,7 @@
backup_list = openstackclient.volume.v2.backup:ListBackup
backup_restore = openstackclient.volume.v2.backup:RestoreBackup
backup_show = openstackclient.volume.v2.backup:ShowBackup
+
consistency_group_add_volume =
openstackclient.volume.v2.consistency_group:AddVolumeToConsistencyGroup
consistency_group_create =
openstackclient.volume.v2.consistency_group:CreateConsistencyGroup
consistency_group_delete =
openstackclient.volume.v2.consistency_group:DeleteConsistencyGroup
@@ -507,16 +588,19 @@
consistency_group_remove_volume =
openstackclient.volume.v2.consistency_group:RemoveVolumeFromConsistencyGroup
consistency_group_set =
openstackclient.volume.v2.consistency_group:SetConsistencyGroup
consistency_group_show =
openstackclient.volume.v2.consistency_group:ShowConsistencyGroup
+
consistency_group_snapshot_create =
openstackclient.volume.v2.consistency_group_snapshot:CreateConsistencyGroupSnapshot
consistency_group_snapshot_delete =
openstackclient.volume.v2.consistency_group_snapshot:DeleteConsistencyGroupSnapshot
consistency_group_snapshot_list =
openstackclient.volume.v2.consistency_group_snapshot:ListConsistencyGroupSnapshot
consistency_group_snapshot_show =
openstackclient.volume.v2.consistency_group_snapshot:ShowConsistencyGroupSnapshot
+
snapshot_create = openstackclient.volume.v2.snapshot:CreateSnapshot
snapshot_delete = openstackclient.volume.v2.snapshot:DeleteSnapshot
snapshot_list = openstackclient.volume.v2.snapshot:ListSnapshot
snapshot_set = openstackclient.volume.v2.snapshot:SetSnapshot
snapshot_show = openstackclient.volume.v2.snapshot:ShowSnapshot
snapshot_unset = openstackclient.volume.v2.snapshot:UnsetSnapshot
+
volume_create = openstackclient.volume.v2.volume:CreateVolume
volume_delete = openstackclient.volume.v2.volume:DeleteVolume
volume_list = openstackclient.volume.v2.volume:ListVolume
@@ -524,26 +608,31 @@
volume_set = openstackclient.volume.v2.volume:SetVolume
volume_show = openstackclient.volume.v2.volume:ShowVolume
volume_unset = openstackclient.volume.v2.volume:UnsetVolume
+
volume_backup_create =
openstackclient.volume.v2.backup:CreateVolumeBackup
volume_backup_delete =
openstackclient.volume.v2.backup:DeleteVolumeBackup
volume_backup_list = openstackclient.volume.v2.backup:ListVolumeBackup
volume_backup_restore =
openstackclient.volume.v2.backup:RestoreVolumeBackup
volume_backup_set = openstackclient.volume.v2.backup:SetVolumeBackup
volume_backup_show = openstackclient.volume.v2.backup:ShowVolumeBackup
+
volume_host_failover =
openstackclient.volume.v2.volume_host:FailoverVolumeHost
volume_host_set = openstackclient.volume.v2.volume_host:SetVolumeHost
+
volume_snapshot_create =
openstackclient.volume.v2.volume_snapshot:CreateVolumeSnapshot
volume_snapshot_delete =
openstackclient.volume.v2.volume_snapshot:DeleteVolumeSnapshot
volume_snapshot_list =
openstackclient.volume.v2.volume_snapshot:ListVolumeSnapshot
volume_snapshot_set =
openstackclient.volume.v2.volume_snapshot:SetVolumeSnapshot
volume_snapshot_show =
openstackclient.volume.v2.volume_snapshot:ShowVolumeSnapshot
volume_snapshot_unset =
openstackclient.volume.v2.volume_snapshot:UnsetVolumeSnapshot
+
volume_type_create =
openstackclient.volume.v2.volume_type:CreateVolumeType
volume_type_delete =
openstackclient.volume.v2.volume_type:DeleteVolumeType
volume_type_list = openstackclient.volume.v2.volume_type:ListVolumeType
volume_type_set = openstackclient.volume.v2.volume_type:SetVolumeType
volume_type_show = openstackclient.volume.v2.volume_type:ShowVolumeType
volume_type_unset =
openstackclient.volume.v2.volume_type:UnsetVolumeType
+
volume_qos_associate = openstackclient.volume.v2.qos_specs:AssociateQos
volume_qos_create = openstackclient.volume.v2.qos_specs:CreateQos
volume_qos_delete = openstackclient.volume.v2.qos_specs:DeleteQos
@@ -552,8 +641,10 @@
volume_qos_set = openstackclient.volume.v2.qos_specs:SetQos
volume_qos_show = openstackclient.volume.v2.qos_specs:ShowQos
volume_qos_unset = openstackclient.volume.v2.qos_specs:UnsetQos
+
volume_service_list = openstackclient.volume.v2.service:ListService
volume_service_set = openstackclient.volume.v2.service:SetService
+
volume_transfer_request_accept =
openstackclient.volume.v2.volume_transfer_request:AcceptTransferRequest
volume_transfer_request_create =
openstackclient.volume.v2.volume_transfer_request:CreateTransferRequest
volume_transfer_request_delete =
openstackclient.volume.v2.volume_transfer_request:DeleteTransferRequest
@@ -567,10 +658,12 @@
consistency_group_remove_volume =
openstackclient.volume.v2.consistency_group:RemoveVolumeFromConsistencyGroup
consistency_group_set =
openstackclient.volume.v2.consistency_group:SetConsistencyGroup
consistency_group_show =
openstackclient.volume.v2.consistency_group:ShowConsistencyGroup
+
consistency_group_snapshot_create =
openstackclient.volume.v2.consistency_group_snapshot:CreateConsistencyGroupSnapshot
consistency_group_snapshot_delete =
openstackclient.volume.v2.consistency_group_snapshot:DeleteConsistencyGroupSnapshot
consistency_group_snapshot_list =
openstackclient.volume.v2.consistency_group_snapshot:ListConsistencyGroupSnapshot
consistency_group_snapshot_show =
openstackclient.volume.v2.consistency_group_snapshot:ShowConsistencyGroupSnapshot
+
volume_create = openstackclient.volume.v2.volume:CreateVolume
volume_delete = openstackclient.volume.v2.volume:DeleteVolume
volume_list = openstackclient.volume.v2.volume:ListVolume
@@ -578,25 +671,30 @@
volume_set = openstackclient.volume.v2.volume:SetVolume
volume_show = openstackclient.volume.v2.volume:ShowVolume
volume_unset = openstackclient.volume.v2.volume:UnsetVolume
+
volume_backup_create =
openstackclient.volume.v2.backup:CreateVolumeBackup
volume_backup_delete =
openstackclient.volume.v2.backup:DeleteVolumeBackup
volume_backup_list = openstackclient.volume.v2.backup:ListVolumeBackup
volume_backup_restore =
openstackclient.volume.v2.backup:RestoreVolumeBackup
volume_backup_set = openstackclient.volume.v2.backup:SetVolumeBackup
volume_backup_show = openstackclient.volume.v2.backup:ShowVolumeBackup
+
volume_host_set = openstackclient.volume.v2.volume_host:SetVolumeHost
+
volume_snapshot_create =
openstackclient.volume.v2.volume_snapshot:CreateVolumeSnapshot
volume_snapshot_delete =
openstackclient.volume.v2.volume_snapshot:DeleteVolumeSnapshot
volume_snapshot_list =
openstackclient.volume.v2.volume_snapshot:ListVolumeSnapshot
volume_snapshot_set =
openstackclient.volume.v2.volume_snapshot:SetVolumeSnapshot
volume_snapshot_show =
openstackclient.volume.v2.volume_snapshot:ShowVolumeSnapshot
volume_snapshot_unset =
openstackclient.volume.v2.volume_snapshot:UnsetVolumeSnapshot
+
volume_type_create =
openstackclient.volume.v2.volume_type:CreateVolumeType
volume_type_delete =
openstackclient.volume.v2.volume_type:DeleteVolumeType
volume_type_list = openstackclient.volume.v2.volume_type:ListVolumeType
volume_type_set = openstackclient.volume.v2.volume_type:SetVolumeType
volume_type_show = openstackclient.volume.v2.volume_type:ShowVolumeType
volume_type_unset =
openstackclient.volume.v2.volume_type:UnsetVolumeType
+
volume_qos_associate = openstackclient.volume.v2.qos_specs:AssociateQos
volume_qos_create = openstackclient.volume.v2.qos_specs:CreateQos
volume_qos_delete = openstackclient.volume.v2.qos_specs:DeleteQos
@@ -605,8 +703,10 @@
volume_qos_set = openstackclient.volume.v2.qos_specs:SetQos
volume_qos_show = openstackclient.volume.v2.qos_specs:ShowQos
volume_qos_unset = openstackclient.volume.v2.qos_specs:UnsetQos
+
volume_service_list = openstackclient.volume.v2.service:ListService
volume_service_set = openstackclient.volume.v2.service:SetService
+
volume_transfer_request_accept =
openstackclient.volume.v2.volume_transfer_request:AcceptTransferRequest
volume_transfer_request_create =
openstackclient.volume.v2.volume_transfer_request:CreateTransferRequest
volume_transfer_request_delete =
openstackclient.volume.v2.volume_transfer_request:DeleteTransferRequest