Esempio n. 1
0
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)
Esempio n. 2
0
    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)
Esempio n. 5
0
    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)
Esempio n. 8
0
    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)
Esempio n. 9
0
    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)
Esempio n. 12
0
    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)
Esempio n. 13
0
    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)
Esempio n. 15
0
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)
Esempio n. 16
0
    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)