diff --git a/neutron/extensions/segment.py b/neutron/extensions/segment.py index 820178c6433..d27aeb3473b 100644 --- a/neutron/extensions/segment.py +++ b/neutron/extensions/segment.py @@ -25,6 +25,8 @@ import six from neutron.api import extensions from neutron.api.v2 import base +from neutron.extensions import _standard_attr_segment_lib as stdattrseg_apidef +from neutron.extensions import standardattrdescription as ext_stddesc SEGMENT = 'segment' SEGMENTS = '%ss' % SEGMENT @@ -73,12 +75,7 @@ RESOURCE_ATTRIBUTE_MAP = { 'allow_put': True, 'default': constants.ATTR_NOT_SPECIFIED, 'validate': {'type:string_or_none': NAME_LEN}, - 'is_visible': True}, - 'description': {'allow_post': True, - 'allow_put': True, - 'default': constants.ATTR_NOT_SPECIFIED, - 'validate': {'type:string_or_none': DESC_LEN}, - 'is_visible': True}, + 'is_visible': True} }, subnet_def.COLLECTION_NAME: { SEGMENT_ID: {'allow_post': True, @@ -134,6 +131,10 @@ class Segment(api_extensions.ExtensionDescriptor): else: return {} + def get_required_extensions(self): + return [ext_stddesc.Standardattrdescription.get_alias(), + stdattrseg_apidef.ALIAS] + @six.add_metaclass(abc.ABCMeta) class SegmentPluginBase(object): diff --git a/neutron/tests/unit/extensions/test_segment.py b/neutron/tests/unit/extensions/test_segment.py index 2e42e8d3bbd..433ce758e4f 100644 --- a/neutron/tests/unit/extensions/test_segment.py +++ b/neutron/tests/unit/extensions/test_segment.py @@ -42,6 +42,7 @@ from neutron.db import db_base_plugin_v2 from neutron.db import portbindings_db from neutron.db import segments_db from neutron.extensions import segment as ext_segment +from neutron.extensions import standardattrdescription as ext_stddesc from neutron.objects import network from neutron.services.segments import db from neutron.services.segments import exceptions as segment_exc @@ -62,6 +63,8 @@ HTTP_NOT_FOUND = 404 class SegmentTestExtensionManager(object): def get_resources(self): + ext_segment.Segment().update_attributes_map( + {ext_segment.SEGMENTS: ext_stddesc.DESCRIPTION_BODY}) return ext_segment.Segment.get_resources() def get_actions(self): @@ -161,14 +164,14 @@ class TestSegmentNameDescription(SegmentTestCase): continue d.setdefault('network_id', self.network['id']) d.setdefault('name', None) - d.setdefault('description', None) + d.setdefault('description', 'desc') d.setdefault('physical_network', 'phys_net') d.setdefault('network_type', 'net_type') d.setdefault('segmentation_id', 200) return super(TestSegmentNameDescription, self)._test_create_segment( expected, **kwargs) - def test_create_segment_no_name_description(self): + def test_create_segment_no_name(self): self._test_create_segment(expected={}) def test_create_segment_with_name(self): @@ -209,11 +212,9 @@ class TestSegmentNameDescription(SegmentTestCase): def test_update_segment_set_description_to_none(self): segment = self._test_create_segment( description='A segment', name='segment') - result = self._update('segments', - segment['segment']['id'], - {'segment': {'description': None}}, - expected_code=webob.exc.HTTPOk.code) - self.assertIsNone(result['segment']['description']) + self._update('segments', segment['segment']['id'], + {'segment': {'description': None}}, + expected_code=webob.exc.HTTPBadRequest.code) class TestSegment(SegmentTestCase):