Merge "Set empty Tag list if Network Tag API extension not supported"

This commit is contained in:
Zuul 2018-01-02 18:34:26 +00:00 committed by Gerrit Code Review
commit 589b5132f4
6 changed files with 21 additions and 9 deletions

View File

@ -115,7 +115,7 @@ class Network(resource.Resource, tag.TagMixin):
is_vlan_transparent = resource.Body('vlan_transparent', type=bool)
#: A list of assocaited tags
#: *Type: list of tag strings*
tags = resource.Body('tags', type=list)
tags = resource.Body('tags', type=list, default=[])
class DHCPAgentHostingNetwork(Network):

View File

@ -131,4 +131,4 @@ class Port(resource.Resource, tag.TagMixin):
updated_at = resource.Body('updated_at')
#: A list of assocaited tags
#: *Type: list of tag strings*
tags = resource.Body('tags', type=list)
tags = resource.Body('tags', type=list, default=[])

View File

@ -78,7 +78,7 @@ class Router(resource.Resource, tag.TagMixin):
updated_at = resource.Body('updated_at')
#: A list of assocaited tags
#: *Type: list of tag strings*
tags = resource.Body('tags', type=list)
tags = resource.Body('tags', type=list, default=[])
def add_interface(self, session, **body):
"""Add an internal interface to a logical router.

View File

@ -91,4 +91,4 @@ class Subnet(resource.Resource, tag.TagMixin):
)
#: A list of assocaited tags
#: *Type: list of tag strings*
tags = resource.Body('tags', type=list)
tags = resource.Body('tags', type=list, default=[])

View File

@ -81,4 +81,4 @@ class SubnetPool(resource.Resource, tag.TagMixin):
updated_at = resource.Body('updated_at')
#: A list of assocaited tags
#: *Type: list of tag strings*
tags = resource.Body('tags', type=list)
tags = resource.Body('tags', type=list, default=[])

View File

@ -10,11 +10,13 @@
# License for the specific language governing permissions and limitations
# under the License.
import inspect
import mock
import testtools
from openstack.network.v2 import network
import openstack.network.v2 as network_resources
from openstack.network.v2.tag import TagMixin
ID = 'IDENTIFIER'
@ -22,17 +24,17 @@ ID = 'IDENTIFIER'
class TestTag(testtools.TestCase):
@staticmethod
def _create_resource(tags=None):
def _create_network_resource(tags=None):
tags = tags or []
return network.Network(id=ID, name='test-net', tags=tags)
def test_tags_attribute(self):
net = self._create_resource()
net = self._create_network_resource()
self.assertTrue(hasattr(net, 'tags'))
self.assertIsInstance(net.tags, list)
def test_set_tags(self):
net = self._create_resource()
net = self._create_network_resource()
sess = mock.Mock()
result = net.set_tags(sess, ['blue', 'green'])
# Check tags attribute is updated
@ -42,3 +44,13 @@ class TestTag(testtools.TestCase):
url = 'networks/' + ID + '/tags'
sess.put.assert_called_once_with(url,
json={'tags': ['blue', 'green']})
def test_tagged_resource_always_created_with_empty_tag_list(self):
for _, module in inspect.getmembers(network_resources,
inspect.ismodule):
for _, resource in inspect.getmembers(module, inspect.isclass):
if issubclass(resource, TagMixin) and resource != TagMixin:
x_resource = resource.new(
id="%s_ID" % resource.resource_key.upper())
self.assertIsNotNone(x_resource.tags)
self.assertEqual(x_resource.tags, list())