def main(): # get vlan auto resource model resource_context = helpers.get_resource_context_details() resource_model_parser = ResourceModelParser() vlan_auto_resource_model = resource_model_parser.convert_to_resource_model(resource_context) # get reservation details reservation_context = helpers.get_reservation_context_details() # Start api session api = helpers.get_api_session() vlan_service_provider = VlanResolverProvider(vlan_resource_model=vlan_auto_resource_model, pool_id=reservation_context.domain, reservation_id=reservation_context.id, owner_id=resource_context.name, api=api) if not vlan_service_provider.is_vlan_resolved(): # resolve vlan id vlan_id = vlan_service_provider.resolve_vlan_auto() vlan_id = str(vlan_id) # set resolved vlan id to virtual network attribute api.SetServiceAttributesValues(reservation_context.id, resource_context.name, [AttributeNameValue( vlan_auto_resource_model.virtual_network_attribute, vlan_id)]) _logger.info("{0} resolved vlan id {1} successfully".format(resource_context.name, vlan_id)) else: vlan_id = str(vlan_auto_resource_model.virtual_network) _logger.info("{0} already has a resolved vlan id: {1}".format(resource_context.name, vlan_id)) # command result for programmatic use set_command_result(vlan_id)
def test_vlan_service_resolves_first_numeric_when_vlan_id_empty(self): vlan_resource_model = VLANAutoResourceModel() vlan_resource_model.vlan_id = "" vlan_resource_model.isolation_level = "Exclusive" vlan_resource_model.virtual_network = "" vlan_resource_model.allocation_ranges = "10-100" resolved_vlan_info = Mock() resolved_vlan_info.VlanId = 10 api = MagicMock() api.GetVlanAutoSelectFirstNumericFromRange = Mock( return_value=resolved_vlan_info) resolver = VlanResolverProvider( vlan_resource_model=vlan_resource_model, pool_id="Global", reservation_id="c5144273-c456-4885-a9b7-f5b058f02678", owner_id="VLAN Auto", api=api) resolved_vlan = resolver.resolve_vlan_auto() api.GetVlanAutoSelectFirstNumericFromRange.assert_called_with( "Global", "c5144273-c456-4885-a9b7-f5b058f02678", "VLAN Auto", "Exclusive", 10, 100) self.assertEquals(resolved_vlan, 10)
def test_vlan_service_is_vlan_id_range_false(self): vlan_resource_model = VLANAutoResourceModel() vlan_resource_model.vlan_id = "20" vlan_resource_model.virtual_network = "" vlan_resource_model.allocation_ranges = "10-30" resolver = VlanResolverProvider(vlan_resource_model=vlan_resource_model, pool_id="Global", reservation_id="c5144273-c456-4885-a9b7-f5b058f02678", owner_id="VLAN Auto", api=Mock()) self.assertFalse(resolver._is_vlan_id_range())
def test_vlan_service_not_resolved_yet(self): vlan_resource_model = VLANAutoResourceModel() vlan_resource_model.vlan_id = "20" vlan_resource_model.virtual_network = "" resolver = VlanResolverProvider(vlan_resource_model=vlan_resource_model, pool_id="Global", reservation_id="c5144273-c456-4885-a9b7-f5b058f02678", owner_id="VLAN Auto", api=Mock()) result = resolver.is_vlan_resolved() self.assertFalse(result)
def test_vlan_service_is_vlan_id_range_false(self): vlan_resource_model = VLANAutoResourceModel() vlan_resource_model.vlan_id = "20" vlan_resource_model.virtual_network = "" vlan_resource_model.allocation_ranges = "10-30" resolver = VlanResolverProvider( vlan_resource_model=vlan_resource_model, pool_id="Global", reservation_id="c5144273-c456-4885-a9b7-f5b058f02678", owner_id="VLAN Auto", api=Mock()) self.assertFalse(resolver._is_vlan_id_range())
def test_vlan_service_get_requested_vlan_returns_numeric(self): vlan_resource_model = VLANAutoResourceModel() vlan_resource_model.vlan_id = "20" vlan_resource_model.virtual_network = "" vlan_resource_model.allocation_ranges = "10-30" resolver = VlanResolverProvider(vlan_resource_model=vlan_resource_model, pool_id="Global", reservation_id="c5144273-c456-4885-a9b7-f5b058f02678", owner_id="VLAN Auto", api=Mock()) vlan = resolver._get_requested_vlan_auto() self.assertEquals(vlan, 20)
def test_vlan_service_requested_specific_vlan_numeric_outside_of_allocated_range(self): vlan_resource_model = VLANAutoResourceModel() vlan_resource_model.vlan_id = "50" vlan_resource_model.virtual_network = "" vlan_resource_model.allocation_ranges = "10-30" resolver = VlanResolverProvider(vlan_resource_model=vlan_resource_model, pool_id="Global", reservation_id="c5144273-c456-4885-a9b7-f5b058f02678", owner_id="VLAN Auto", api=Mock()) allocation_range = resolver._get_allocation_range() self.assertRaises(ValueError, resolver._ensure_numeric_vlan_valid, allocation_range)
def test_vlan_service_not_resolved_yet(self): vlan_resource_model = VLANAutoResourceModel() vlan_resource_model.vlan_id = "20" vlan_resource_model.virtual_network = "" resolver = VlanResolverProvider( vlan_resource_model=vlan_resource_model, pool_id="Global", reservation_id="c5144273-c456-4885-a9b7-f5b058f02678", owner_id="VLAN Auto", api=Mock()) result = resolver.is_vlan_resolved() self.assertFalse(result)
def test_vlan_service_get_requested_vlan_returns_numeric(self): vlan_resource_model = VLANAutoResourceModel() vlan_resource_model.vlan_id = "20" vlan_resource_model.virtual_network = "" vlan_resource_model.allocation_ranges = "10-30" resolver = VlanResolverProvider( vlan_resource_model=vlan_resource_model, pool_id="Global", reservation_id="c5144273-c456-4885-a9b7-f5b058f02678", owner_id="VLAN Auto", api=Mock()) vlan = resolver._get_requested_vlan_auto() self.assertEquals(vlan, 20)
def test_vlan_service_get_vlan_range_from_vlan_id(self): vlan_resource_model = VLANAutoResourceModel() vlan_resource_model.vlan_id = "200-400" vlan_resource_model.virtual_network = "" vlan_resource_model.allocation_ranges = "10-30" resolver = VlanResolverProvider(vlan_resource_model=vlan_resource_model, pool_id="Global", reservation_id="c5144273-c456-4885-a9b7-f5b058f02678", owner_id="VLAN Auto", api=Mock()) requested_range = resolver._get_vlan_range_from_vlan_id() self.assertEquals(requested_range.start, 200) self.assertEquals(requested_range.end, 400)
def integrationtest_get_auto_vlan_specific_id(self): dev_helpers.attach_to_cloudshell_as( "admin", "admin", "Global", "4255fc8b-f964-444d-aa0c-96ae58659a52") requested_vlan_id = "24" os.environ["RESOURCECONTEXT"] = \ '{' \ ' "name":"VLAN Auto", ' \ ' "address":"Service",' \ ' "model":"VLAN Auto", ' \ ' "family":"Virtual Network", ' \ ' "description":"", ' \ ' "fullname":"", ' \ ' "attributes":{"Access Mode":"trunk",' \ '"Allocation Ranges":"2-4098",' \ '"Isolation Level":"Shared", ' \ '"Virtual Network":"", ' \ '"VLAN Id":"' + requested_vlan_id + '"}}' resource_context = helpers.get_resource_context_details() vlan_auto_resource_model = VLANAutoResourceModel() vlan_auto_resource_model.access_mode = resource_context.attributes[ "Access Mode"] vlan_auto_resource_model.allocation_ranges = resource_context.attributes[ "Allocation Ranges"] vlan_auto_resource_model.isolation_level = resource_context.attributes[ "Isolation Level"] vlan_auto_resource_model.vlan_id = resource_context.attributes[ "VLAN Id"] vlan_auto_resource_model.virtual_network = resource_context.attributes[ "Virtual Network"] vlan_auto_resource_model.virtual_network_attribute = "Virtual Network" # get reservation details reservation_details = helpers.get_reservation_context_details() # Start api session api = helpers.get_api_session() vlan_service_provider = VlanResolverProvider( vlan_auto_resource_model, reservation_details.domain, reservation_details.id, resource_context.name, api) vlan_id = vlan_service_provider.resolve_vlan_auto() assert (vlan_id, requested_vlan_id)
def test_vlan_service_get_vlan_range_from_vlan_id(self): vlan_resource_model = VLANAutoResourceModel() vlan_resource_model.vlan_id = "200-400" vlan_resource_model.virtual_network = "" vlan_resource_model.allocation_ranges = "10-30" resolver = VlanResolverProvider( vlan_resource_model=vlan_resource_model, pool_id="Global", reservation_id="c5144273-c456-4885-a9b7-f5b058f02678", owner_id="VLAN Auto", api=Mock()) requested_range = resolver._get_vlan_range_from_vlan_id() self.assertEquals(requested_range.start, 200) self.assertEquals(requested_range.end, 400)
def test_vlan_service_requested_vlan_not_numeric(self): vlan_resource_model = VLANAutoResourceModel() vlan_resource_model.vlan_id = "stam" vlan_resource_model.virtual_network = "" vlan_resource_model.allocation_ranges = "10-30" resolver = VlanResolverProvider( vlan_resource_model=vlan_resource_model, pool_id="Global", reservation_id="c5144273-c456-4885-a9b7-f5b058f02678", owner_id="VLAN Auto", api=Mock()) allocation_range = resolver._get_allocation_range() self.assertRaises(ValueError, resolver._ensure_numeric_vlan_valid, allocation_range)
def integrationtest_get_auto_vlan_specific_id(self): dev_helpers.attach_to_cloudshell_as("admin", "admin", "Global", "4255fc8b-f964-444d-aa0c-96ae58659a52") requested_vlan_id = "24" os.environ["RESOURCECONTEXT"] = \ '{' \ ' "name":"VLAN Auto", ' \ ' "address":"Service",' \ ' "model":"VLAN Auto", ' \ ' "family":"Virtual Network", ' \ ' "description":"", ' \ ' "fullname":"", ' \ ' "attributes":{"Access Mode":"trunk",' \ '"Allocation Ranges":"2-4098",' \ '"Isolation Level":"Shared", ' \ '"Virtual Network":"", ' \ '"VLAN Id":"' + requested_vlan_id + '"}}' resource_context = helpers.get_resource_context_details() vlan_auto_resource_model = VLANAutoResourceModel() vlan_auto_resource_model.access_mode = resource_context.attributes["Access Mode"] vlan_auto_resource_model.allocation_ranges = resource_context.attributes["Allocation Ranges"] vlan_auto_resource_model.isolation_level = resource_context.attributes["Isolation Level"] vlan_auto_resource_model.vlan_id = resource_context.attributes["VLAN Id"] vlan_auto_resource_model.virtual_network = resource_context.attributes["Virtual Network"] vlan_auto_resource_model.virtual_network_attribute = "Virtual Network" # get reservation details reservation_details = helpers.get_reservation_context_details() # Start api session api = helpers.get_api_session() vlan_service_provider = VlanResolverProvider(vlan_auto_resource_model, reservation_details.domain, reservation_details.id, resource_context.name, api) vlan_id = vlan_service_provider.resolve_vlan_auto() assert(vlan_id, requested_vlan_id)
def main(): # get vlan auto resource model resource_context = helpers.get_resource_context_details() resource_model_parser = ResourceModelParser() vlan_auto_resource_model = resource_model_parser.convert_to_resource_model( resource_context) # get reservation details reservation_context = helpers.get_reservation_context_details() # Start api session api = helpers.get_api_session() vlan_service_provider = VlanResolverProvider( vlan_resource_model=vlan_auto_resource_model, pool_id=reservation_context.domain, reservation_id=reservation_context.id, owner_id=resource_context.name, api=api) if not vlan_service_provider.is_vlan_resolved(): # resolve vlan id vlan_id = vlan_service_provider.resolve_vlan_auto() vlan_id = str(vlan_id) # set resolved vlan id to virtual network attribute api.SetServiceAttributesValues( reservation_context.id, resource_context.name, [ AttributeNameValue( vlan_auto_resource_model.virtual_network_attribute, vlan_id) ]) _logger.info("{0} resolved vlan id {1} successfully".format( resource_context.name, vlan_id)) else: vlan_id = str(vlan_auto_resource_model.virtual_network) _logger.info("{0} already has a resolved vlan id: {1}".format( resource_context.name, vlan_id)) # command result for programmatic use set_command_result(vlan_id)
def test_vlan_service_get_requested_vlan_range_throws_not_supported(self): vlan_resource_model = VLANAutoResourceModel() vlan_resource_model.vlan_id = "20-30" vlan_resource_model.virtual_network = "" vlan_resource_model.allocation_ranges = "10-30" resolver = VlanResolverProvider( vlan_resource_model=vlan_resource_model, pool_id="Global", reservation_id="c5144273-c456-4885-a9b7-f5b058f02678", owner_id="VLAN Auto", api=Mock()) self.assertRaises(ValueError, resolver._get_requested_vlan_auto)
def test_vlan_service_resolves_first_numeric_when_vlan_id_empty(self): vlan_resource_model = VLANAutoResourceModel() vlan_resource_model.vlan_id = "" vlan_resource_model.isolation_level = "Exclusive" vlan_resource_model.virtual_network = "" vlan_resource_model.allocation_ranges = "10-100" resolved_vlan_info = Mock() resolved_vlan_info.VlanId = 10 api = MagicMock() api.GetVlanAutoSelectFirstNumericFromRange = Mock(return_value=resolved_vlan_info) resolver = VlanResolverProvider(vlan_resource_model=vlan_resource_model, pool_id="Global", reservation_id="c5144273-c456-4885-a9b7-f5b058f02678", owner_id="VLAN Auto", api=api) resolved_vlan = resolver.resolve_vlan_auto() api.GetVlanAutoSelectFirstNumericFromRange.assert_called_with("Global", "c5144273-c456-4885-a9b7-f5b058f02678", "VLAN Auto", "Exclusive", 10, 100) self.assertEquals(resolved_vlan, 10)