Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| aa21151152 | |||
|
|
c4d823cbcc | ||
| 1e8f0cdae8 | |||
| 8adfc9d1e5 |
@@ -2,3 +2,4 @@
|
||||
host=review.opendev.org
|
||||
port=29418
|
||||
project=openstack/python-neutronclient.git
|
||||
defaultbranch=unmaintained/xena
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
- project:
|
||||
templates:
|
||||
- openstack-cover-jobs
|
||||
- openstack-python3-zed-jobs
|
||||
- openstack-python3-xena-jobs
|
||||
- publish-openstack-docs-pti
|
||||
- check-requirements
|
||||
- lib-forward-testing-python3
|
||||
@@ -63,7 +63,6 @@
|
||||
Q_ML2_TENANT_NETWORK_TYPE: vxlan
|
||||
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
|
||||
devstack_plugins:
|
||||
neutron: https://opendev.org/openstack/neutron
|
||||
neutron-vpnaas: https://opendev.org/openstack/neutron-vpnaas
|
||||
|
||||
- job:
|
||||
|
||||
111
lower-constraints.txt
Normal file
111
lower-constraints.txt
Normal file
@@ -0,0 +1,111 @@
|
||||
alabaster==0.7.10
|
||||
amqp==2.1.1
|
||||
appdirs==1.3.0
|
||||
asn1crypto==0.23.0
|
||||
Babel==2.3.4
|
||||
cachetools==2.0.0
|
||||
cffi==1.14.0
|
||||
cliff==3.4.0
|
||||
cmd2==0.8.0
|
||||
contextlib2==0.4.0
|
||||
coverage==4.0
|
||||
cryptography==2.7
|
||||
debtcollector==1.2.0
|
||||
decorator==3.4.0
|
||||
deprecation==1.0
|
||||
docutils==0.11
|
||||
dogpile.cache==0.6.5
|
||||
dulwich==0.15.0
|
||||
eventlet==0.18.2
|
||||
extras==1.0.0
|
||||
fasteners==0.7.0
|
||||
fixtures==3.0.0
|
||||
flake8-import-order==0.12
|
||||
flake8==3.6.0
|
||||
future==0.16.0
|
||||
futurist==1.2.0
|
||||
greenlet==0.4.10
|
||||
hacking==3.0.1
|
||||
idna==2.6
|
||||
imagesize==0.7.1
|
||||
iso8601==0.1.11
|
||||
Jinja2==2.10
|
||||
jmespath==0.9.0
|
||||
jsonpatch==1.16
|
||||
jsonpointer==1.13
|
||||
jsonschema==2.6.0
|
||||
keystoneauth1==3.8.0
|
||||
kombu==4.0.0
|
||||
linecache2==1.0.0
|
||||
MarkupSafe==1.0
|
||||
mccabe==0.6.0
|
||||
monotonic==0.6
|
||||
msgpack-python==0.4.0
|
||||
munch==2.1.0
|
||||
netaddr==0.7.18
|
||||
netifaces==0.10.4
|
||||
openstacksdk==0.15.0
|
||||
os-client-config==1.28.0
|
||||
os-service-types==1.2.0
|
||||
osc-lib==1.12.0
|
||||
oslo.concurrency==3.26.0
|
||||
oslo.config==5.2.0
|
||||
oslo.context==2.19.2
|
||||
oslo.i18n==3.15.3
|
||||
oslo.log==3.36.0
|
||||
oslo.messaging==5.29.0
|
||||
oslo.middleware==3.31.0
|
||||
oslo.serialization==2.18.0
|
||||
oslo.service==1.24.0
|
||||
oslo.utils==3.33.0
|
||||
oslotest==3.2.0
|
||||
osprofiler==2.3.0
|
||||
paramiko==2.0.0
|
||||
Paste==2.0.2
|
||||
PasteDeploy==1.5.0
|
||||
pbr==2.0.0
|
||||
pika-pool==0.1.3
|
||||
pika==0.10.0
|
||||
positional==1.2.1
|
||||
prettytable==0.7.2
|
||||
pyasn1==0.1.8
|
||||
pycodestyle==2.4.0
|
||||
pycparser==2.18
|
||||
pyflakes==2.0.0
|
||||
Pygments==2.2.0
|
||||
pyinotify==0.9.6
|
||||
pyOpenSSL==17.1.0
|
||||
pyparsing==2.1.0
|
||||
pyperclip==1.5.27
|
||||
python-cinderclient==3.3.0
|
||||
python-dateutil==2.5.3
|
||||
python-glanceclient==2.8.0
|
||||
python-keystoneclient==3.8.0
|
||||
python-mimeparse==1.6.0
|
||||
python-novaclient==9.1.0
|
||||
python-openstackclient==3.12.0
|
||||
python-subunit==1.0.0
|
||||
pytz==2013.6
|
||||
PyYAML==5.3.1
|
||||
repoze.lru==0.7
|
||||
requests-mock==1.2.0
|
||||
requests==2.14.2
|
||||
requestsexceptions==1.2.0
|
||||
rfc3986==0.3.1
|
||||
Routes==2.3.1
|
||||
simplejson==3.5.1
|
||||
snowballstemmer==1.2.1
|
||||
statsd==3.2.1
|
||||
stestr==2.0.0
|
||||
stevedore==2.0.1
|
||||
tempest==17.1.0
|
||||
tenacity==3.2.1
|
||||
testscenarios==0.4
|
||||
testtools==2.2.0
|
||||
traceback2==1.4.0
|
||||
unittest2==1.1.0
|
||||
urllib3==1.21.1
|
||||
vine==1.1.4
|
||||
warlock==1.2.0
|
||||
WebOb==1.7.1
|
||||
wrapt==1.7.0
|
||||
@@ -245,15 +245,15 @@ class CreatePort(neutronV20.CreateCommand, UpdatePortSecGroupMixin,
|
||||
parser.add_argument(
|
||||
'--vnic-type',
|
||||
metavar='<direct | direct-physical | macvtap '
|
||||
'| normal | baremetal | smart-nic>',
|
||||
'| normal | baremetal>',
|
||||
choices=['direct', 'direct-physical', 'macvtap',
|
||||
'normal', 'baremetal', 'smart-nic'],
|
||||
'normal', 'baremetal'],
|
||||
type=utils.convert_to_lowercase,
|
||||
help=_('VNIC type for this port.'))
|
||||
parser.add_argument(
|
||||
'--vnic_type',
|
||||
choices=['direct', 'direct-physical', 'macvtap',
|
||||
'normal', 'baremetal', 'smart-nic'],
|
||||
'normal', 'baremetal'],
|
||||
type=utils.convert_to_lowercase,
|
||||
help=argparse.SUPPRESS)
|
||||
parser.add_argument(
|
||||
|
||||
@@ -214,26 +214,6 @@ class CLITestV20PortJSON(test_cli20.CLITestV20Base):
|
||||
self._test_create_resource(resource, cmd, name, myid, args,
|
||||
position_names, position_values)
|
||||
|
||||
def test_create_port_vnic_type_smart_nic(self):
|
||||
# Create port: --vnic_type smart-nic netid.
|
||||
resource = 'port'
|
||||
cmd = port.CreatePort(test_cli20.MyApp(sys.stdout), None)
|
||||
name = 'myname'
|
||||
myid = 'myid'
|
||||
netid = 'netid'
|
||||
args = ['--vnic_type', 'smart-nic', netid]
|
||||
position_names = ['binding:vnic_type', 'network_id']
|
||||
position_values = ['smart-nic', netid]
|
||||
self._test_create_resource(resource, cmd, name, myid, args,
|
||||
position_names, position_values)
|
||||
|
||||
# Test dashed options
|
||||
args = ['--vnic-type', 'smart-nic', netid]
|
||||
position_names = ['binding:vnic_type', 'network_id']
|
||||
position_values = ['smart-nic', netid]
|
||||
self._test_create_resource(resource, cmd, name, myid, args,
|
||||
position_names, position_values)
|
||||
|
||||
def test_create_port_with_binding_profile(self):
|
||||
resource = 'port'
|
||||
cmd = port.CreatePort(test_cli20.MyApp(sys.stdout), None)
|
||||
|
||||
@@ -357,10 +357,10 @@ class ShellTest(testtools.TestCase):
|
||||
self.useFixture(fixtures.MockPatchObject(openstack_shell,
|
||||
'COMMANDS', None))
|
||||
openstack_shell.NeutronShell('2.0')
|
||||
self.assertLessEqual(
|
||||
self.assertDictContainsSubset(
|
||||
{'net-create': network.CreateNetwork,
|
||||
'net-delete': network.DeleteNetwork,
|
||||
'net-list': network.ListNetwork,
|
||||
'net-show': network.ShowNetwork,
|
||||
'net-update': network.UpdateNetwork}.items(),
|
||||
openstack_shell.COMMANDS['2.0'].items())
|
||||
'net-update': network.UpdateNetwork},
|
||||
openstack_shell.COMMANDS['2.0'])
|
||||
|
||||
@@ -515,8 +515,6 @@ class Client(ClientBase):
|
||||
router_path = "/routers/%s"
|
||||
floatingips_path = "/floatingips"
|
||||
floatingip_path = "/floatingips/%s"
|
||||
port_forwardings_path = "/floatingips/%s/port_forwardings"
|
||||
port_forwarding_path = "/floatingips/%s/port_forwardings/%s"
|
||||
security_groups_path = "/security-groups"
|
||||
security_group_path = "/security-groups/%s"
|
||||
security_group_rules_path = "/security-group-rules"
|
||||
@@ -621,20 +619,12 @@ class Client(ClientBase):
|
||||
qos_policy_path = "/qos/policies/%s"
|
||||
qos_bandwidth_limit_rules_path = "/qos/policies/%s/bandwidth_limit_rules"
|
||||
qos_bandwidth_limit_rule_path = "/qos/policies/%s/bandwidth_limit_rules/%s"
|
||||
qos_packet_rate_limit_rules_path = \
|
||||
"/qos/policies/%s/packet_rate_limit_rules"
|
||||
qos_packet_rate_limit_rule_path = \
|
||||
"/qos/policies/%s/packet_rate_limit_rules/%s"
|
||||
qos_dscp_marking_rules_path = "/qos/policies/%s/dscp_marking_rules"
|
||||
qos_dscp_marking_rule_path = "/qos/policies/%s/dscp_marking_rules/%s"
|
||||
qos_minimum_bandwidth_rules_path = \
|
||||
"/qos/policies/%s/minimum_bandwidth_rules"
|
||||
qos_minimum_bandwidth_rule_path = \
|
||||
"/qos/policies/%s/minimum_bandwidth_rules/%s"
|
||||
qos_minimum_packet_rate_rules_path = \
|
||||
"/qos/policies/%s/minimum_packet_rate_rules"
|
||||
qos_minimum_packet_rate_rule_path = \
|
||||
"/qos/policies/%s/minimum_packet_rate_rules/%s"
|
||||
qos_rule_types_path = "/qos/rule-types"
|
||||
qos_rule_type_path = "/qos/rule-types/%s"
|
||||
flavors_path = "/flavors"
|
||||
@@ -718,9 +708,7 @@ class Client(ClientBase):
|
||||
'qos_policies': 'qos_policy',
|
||||
'policies': 'policy',
|
||||
'bandwidth_limit_rules': 'bandwidth_limit_rule',
|
||||
'packet_rate_limit_rules': 'packet_rate_limit_rule',
|
||||
'minimum_bandwidth_rules': 'minimum_bandwidth_rule',
|
||||
'minimum_packet_rate_rules': 'minimum_packet_rate_rule',
|
||||
'rules': 'rule',
|
||||
'dscp_marking_rules': 'dscp_marking_rule',
|
||||
'rule_types': 'rule_type',
|
||||
@@ -1021,32 +1009,6 @@ class Client(ClientBase):
|
||||
"""Deletes the specified floatingip."""
|
||||
return self.delete(self.floatingip_path % (floatingip))
|
||||
|
||||
def show_port_forwarding(self, floatingip, portforwarding):
|
||||
"""Fetches information of a certain portforwarding"""
|
||||
return self.get(self.port_forwarding_path % (floatingip,
|
||||
portforwarding))
|
||||
|
||||
def list_port_forwardings(self, floatingip, retrieve_all=True, **_params):
|
||||
"""Fetches a list of all portforwardings for a floatingip."""
|
||||
return self.list('port_forwardings',
|
||||
self.port_forwardings_path % floatingip, retrieve_all,
|
||||
**_params)
|
||||
|
||||
def create_port_forwarding(self, floatingip, body=None):
|
||||
"""Creates a new portforwarding."""
|
||||
return self.post(self.port_forwardings_path % floatingip, body=body)
|
||||
|
||||
def delete_port_forwarding(self, floatingip, portforwarding):
|
||||
"""Deletes the specified portforwarding."""
|
||||
return self.delete(self.port_forwarding_path % (floatingip,
|
||||
portforwarding))
|
||||
|
||||
def update_port_forwarding(self, floatingip, portforwarding, body=None):
|
||||
"""Updates a portforwarding."""
|
||||
return self.put(self.port_forwarding_path % (floatingip,
|
||||
portforwarding),
|
||||
body=body)
|
||||
|
||||
def create_security_group(self, body=None):
|
||||
"""Creates a new security group."""
|
||||
return self.post(self.security_groups_path, body=body)
|
||||
@@ -2010,35 +1972,6 @@ class Client(ClientBase):
|
||||
return self.post(self.qos_minimum_bandwidth_rules_path % policy,
|
||||
body=body)
|
||||
|
||||
def list_packet_rate_limit_rules(self, policy_id, retrieve_all=True,
|
||||
**_params):
|
||||
"""Fetches a list of all packet rate limit rules for the given policy
|
||||
|
||||
"""
|
||||
return self.list('packet_rate_limit_rules',
|
||||
self.qos_packet_rate_limit_rules_path %
|
||||
policy_id, retrieve_all, **_params)
|
||||
|
||||
def show_packet_rate_limit_rule(self, rule, policy, body=None):
|
||||
"""Fetches information of a certain packet rate limit rule."""
|
||||
return self.get(self.qos_packet_rate_limit_rule_path %
|
||||
(policy, rule), body=body)
|
||||
|
||||
def create_packet_rate_limit_rule(self, policy, body=None):
|
||||
"""Creates a new packet rate limit rule."""
|
||||
return self.post(self.qos_packet_rate_limit_rules_path % policy,
|
||||
body=body)
|
||||
|
||||
def update_packet_rate_limit_rule(self, rule, policy, body=None):
|
||||
"""Updates a packet rate limit rule."""
|
||||
return self.put(self.qos_packet_rate_limit_rule_path %
|
||||
(policy, rule), body=body)
|
||||
|
||||
def delete_packet_rate_limit_rule(self, rule, policy):
|
||||
"""Deletes a packet rate limit rule."""
|
||||
return self.delete(self.qos_packet_rate_limit_rule_path %
|
||||
(policy, rule))
|
||||
|
||||
def update_minimum_bandwidth_rule(self, rule, policy, body=None):
|
||||
"""Updates a minimum bandwidth rule."""
|
||||
return self.put(self.qos_minimum_bandwidth_rule_path %
|
||||
@@ -2049,35 +1982,6 @@ class Client(ClientBase):
|
||||
return self.delete(self.qos_minimum_bandwidth_rule_path %
|
||||
(policy, rule))
|
||||
|
||||
def list_minimum_packet_rate_rules(self, policy_id, retrieve_all=True,
|
||||
**_params):
|
||||
"""Fetches a list of all minimum packet rate rules for the given policy
|
||||
|
||||
"""
|
||||
return self.list('minimum_packet_rate_rules',
|
||||
self.qos_minimum_packet_rate_rules_path %
|
||||
policy_id, retrieve_all, **_params)
|
||||
|
||||
def show_minimum_packet_rate_rule(self, rule, policy, body=None):
|
||||
"""Fetches information of a certain minimum packet rate rule."""
|
||||
return self.get(self.qos_minimum_packet_rate_rule_path %
|
||||
(policy, rule), body=body)
|
||||
|
||||
def create_minimum_packet_rate_rule(self, policy, body=None):
|
||||
"""Creates a new minimum packet rate rule."""
|
||||
return self.post(self.qos_minimum_packet_rate_rules_path % policy,
|
||||
body=body)
|
||||
|
||||
def update_minimum_packet_rate_rule(self, rule, policy, body=None):
|
||||
"""Updates a minimum packet rate rule."""
|
||||
return self.put(self.qos_minimum_packet_rate_rule_path %
|
||||
(policy, rule), body=body)
|
||||
|
||||
def delete_minimum_packet_rate_rule(self, rule, policy):
|
||||
"""Deletes a minimum packet rate rule."""
|
||||
return self.delete(self.qos_minimum_packet_rate_rule_path %
|
||||
(policy, rule))
|
||||
|
||||
def create_flavor(self, body=None):
|
||||
"""Creates a new Neutron service flavor."""
|
||||
return self.post(self.flavors_path, body=body)
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Add support to floating ip port forwarding.
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
Python 3.6 & 3.7 support has been dropped. The minimum version of Python now
|
||||
supported is Python 3.8.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Added new client methods for QoS minimum packet rate rule:
|
||||
``list_minimum_packet_rate_rules``, ``show_minimum_packet_rate_rule``,
|
||||
``create_minimum_packet_rate_rule``, ``update_minimum_packet_rate_rule``,
|
||||
``delete_minimum_packet_rate_rule``.
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Added new client methods for QoS packet rate limit rule:
|
||||
``list_packet_rate_limit_rules``, ``show_packet_rate_limit_rule``,
|
||||
``create_packet_rate_limit_rule``, ``update_packet_rate_limit_rule``,
|
||||
``delete_packet_rate_limit_rule``.
|
||||
@@ -6,8 +6,6 @@
|
||||
:maxdepth: 1
|
||||
|
||||
unreleased
|
||||
yoga
|
||||
xena
|
||||
wallaby
|
||||
victoria
|
||||
ussuri
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
=========================
|
||||
Xena Series Release Notes
|
||||
=========================
|
||||
|
||||
.. release-notes::
|
||||
:branch: stable/xena
|
||||
@@ -1,6 +0,0 @@
|
||||
=========================
|
||||
Yoga Series Release Notes
|
||||
=========================
|
||||
|
||||
.. release-notes::
|
||||
:branch: stable/yoga
|
||||
@@ -1,7 +1,3 @@
|
||||
# Requirements lower bounds listed here are our best effort to keep them up to
|
||||
# date but we do not test them so no guarantee of having them all correct. If
|
||||
# you find any incorrect lower bounds, let us know or propose a fix.
|
||||
|
||||
# The order of packages is significant, because pip processes them in the order
|
||||
# of appearance. Changing the order has an impact on the overall integration
|
||||
# process, which may cause wedges in the gate later.
|
||||
|
||||
@@ -6,7 +6,7 @@ description_file =
|
||||
author = OpenStack Networking Project
|
||||
author_email = openstack-discuss@lists.openstack.org
|
||||
home_page = https://docs.openstack.org/python-neutronclient/latest/
|
||||
python_requires = >=3.8
|
||||
python_requires = >=3.6
|
||||
classifier =
|
||||
Environment :: OpenStack
|
||||
Intended Audience :: Developers
|
||||
@@ -18,8 +18,9 @@ classifier =
|
||||
Programming Language :: Python :: Implementation :: CPython
|
||||
Programming Language :: Python :: 3 :: Only
|
||||
Programming Language :: Python :: 3
|
||||
Programming Language :: Python :: 3.6
|
||||
Programming Language :: Python :: 3.7
|
||||
Programming Language :: Python :: 3.8
|
||||
Programming Language :: Python :: 3.9
|
||||
|
||||
[files]
|
||||
packages =
|
||||
|
||||
14
tox.ini
14
tox.ini
@@ -1,5 +1,5 @@
|
||||
[tox]
|
||||
envlist = py39,pep8
|
||||
envlist = py38,pep8
|
||||
minversion = 3.18.0
|
||||
skipsdist = True
|
||||
ignore_basepython_conflict = True
|
||||
@@ -13,7 +13,7 @@ setenv = VIRTUAL_ENV={envdir}
|
||||
PYTHONWARNINGS=default::DeprecationWarning
|
||||
usedevelop = True
|
||||
install_command = pip install {opts} {packages}
|
||||
deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
||||
deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/xena}
|
||||
-r{toxinidir}/requirements.txt
|
||||
-r{toxinidir}/test-requirements.txt
|
||||
# Delete bytecodes from normal directories before running tests.
|
||||
@@ -52,7 +52,7 @@ commands =
|
||||
|
||||
[testenv:docs]
|
||||
deps =
|
||||
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
||||
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/xena}
|
||||
-r{toxinidir}/doc/requirements.txt
|
||||
commands = sphinx-build -W -b html doc/source doc/build/html
|
||||
|
||||
@@ -67,7 +67,7 @@ commands =
|
||||
|
||||
[testenv:releasenotes]
|
||||
deps =
|
||||
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
||||
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/xena}
|
||||
-r{toxinidir}/doc/requirements.txt
|
||||
commands = sphinx-build -a -E -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
||||
|
||||
@@ -86,3 +86,9 @@ enable-extensions=H904
|
||||
# components.
|
||||
deps = -r{toxinidir}/test-requirements.txt
|
||||
commands = bandit -r neutronclient -x tests -n5 -s B303,B105
|
||||
|
||||
[testenv:lower-constraints]
|
||||
deps =
|
||||
-c{toxinidir}/lower-constraints.txt
|
||||
-r{toxinidir}/test-requirements.txt
|
||||
-r{toxinidir}/requirements.txt
|
||||
|
||||
Reference in New Issue
Block a user