Skip to content

Commit

Permalink
Merge pull request #389 from gryf/master
Browse files Browse the repository at this point in the history
Bug 1890472: Bulk port creation exception not completely formatted
  • Loading branch information
openshift-merge-robot committed Nov 2, 2020
2 parents 0d1c445 + b1a0f7f commit 99e14aa
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
2 changes: 1 addition & 1 deletion kuryr_kubernetes/clients.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ def _create_ports(self, payload):
response = self.post(os_port.Port.base_path, json=payload)

if not response.ok:
raise os_exc.SDKException('Error when bulk creating ports: %s',
raise os_exc.SDKException('Error when bulk creating ports: %s' %
response.text)
return (os_port.Port(**item) for item in response.json()['ports'])

Expand Down
25 changes: 25 additions & 0 deletions kuryr_kubernetes/tests/unit/test_clients.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

from unittest import mock

from openstack import exceptions as os_exc
from openstack.network.v2 import port as os_port

from kuryr_kubernetes import clients
Expand Down Expand Up @@ -128,3 +129,27 @@ def test_create_ports(self):

clients._create_ports(m_osdk, payload)
m_post.assert_called_once_with(os_port.Port.base_path, json=expected)

def test_create_ports_out_of_ports(self):
"""Simulate error response from OpenStack SDK"""
m_response = mock.Mock()
m_response.text = ('{"NeutronError": {"type": "OverQuota", "message": '
'"Quota exceeded for resources: [\'port\'].", '
'"detail": ""}}')
m_response.ok = False
m_post = mock.Mock()
m_post.return_value = m_response
m_osdk = mock.Mock()
m_osdk.post = m_post

payload = {'ports': []}

try:
clients._create_ports(m_osdk, payload)
except os_exc.SDKException as ex:
# no additional params passed to the exception class
self.assertIsNone(ex.extra_data)
# no formatting placeholders in message
self.assertNotIn('%s', ex.message)

m_post.assert_called_once_with(os_port.Port.base_path, json=payload)

0 comments on commit 99e14aa

Please sign in to comment.