Commit 1296e935 authored by Georgios P. Katsikas's avatar Georgios P. Katsikas
Browse files

fix: remove hardcoded service settings after pathcomp bug fix

parent 9dfe1e7f
Loading
Loading
Loading
Loading
+5 −46
Original line number Diff line number Diff line
@@ -335,56 +335,15 @@ class P4FabricACLServiceHandler(_ServiceHandler):
            self.__settings = self.__settings_handler.get('/settings')
            LOGGER.info("{} with settings: {}".format(self.__service_label, self.__settings))
        except Exception as ex:
            self.__settings = {}
            LOGGER.error("Failed to parse service settings: {}".format(ex))

    def _default_settings(self):
        acl = [
            {
                PORT_ID: 1,
                TRN_PORT_DST: 8080,
                ACTION: ACTION_DROP
            }
        ]

        switch_info = {
            "p4-sw1": {
                ARCH: TARGET_ARCH_V1MODEL,
                DPID: 1,
                ACL: acl
            }
        }
        self.__settings = {
            SWITCH_INFO: switch_info
        }

        # port_map = {
        #     "p4-sw1": {
        #         "port-1": {
        #             PORT_ID: 1,
        #             ACL: [
        #                 {
        #                     IPV4_SRC: "10.158.72.11",
        #                     IPV4_PREFIX_LEN: 32,
        #                     ACTION: ACTION_DROP
        #                 },
        #                 {
        #                     TRN_PORT_DST: 8080,
        #                     ACTION: ACTION_DROP
        #                 }
        #             ]
        #         }
        #     }
        # }
            LOGGER.error("Failed to retrieve service settings: {}".format(ex))
            raise Exception(ex)

    def _parse_settings(self):
        #TODO: Pass settings in a correct way
        try:
            self.__switch_info = self.__settings[SWITCH_INFO]
            self.__switch_info = self.__settings.value[SWITCH_INFO]
        except Exception as ex:
            LOGGER.error("Failed to parse settings: {}".format(ex))
            self._default_settings() #TODO: Remove when bug is fixed
            self.__switch_info = self.__settings[SWITCH_INFO]
            LOGGER.error("Failed to parse service settings: {}".format(ex))
            raise Exception(ex)
        assert isinstance(self.__switch_info, dict), "Switch info object must be a map with switch names as keys"

        for switch_name, switch_info in self.__switch_info.items():
+6 −34
Original line number Diff line number Diff line
@@ -305,43 +305,15 @@ class P4FabricINTServiceHandler(_ServiceHandler):
            self.__settings = self.__settings_handler.get('/settings')
            LOGGER.info("{} with settings: {}".format(self.__service_label, self.__settings))
        except Exception as ex:
            self.__settings = {}
            LOGGER.error("Failed to parse service settings: {}".format(ex))

    def _default_settings(self):
        switch_info = {
            "p4-sw1": {
                ARCH: TARGET_ARCH_V1MODEL,
                DPID: 1,
                MAC: "fa:16:3e:93:8c:c0",
                IP: "10.10.10.120",
                PORT_INT: {
                    PORT_ID: 3,
                    PORT_TYPE: "host"
                },
                RECIRCULATION_PORT_LIST: RECIRCULATION_PORTS_V1MODEL,
                INT_REPORT_MIRROR_ID_LIST: INT_REPORT_MIRROR_ID_LIST_V1MODEL
            }
        }
        int_collector_info = {
            MAC: "fa:16:3e:fb:cf:96",
            IP: "10.10.10.41",
            PORT: 32766,
            VLAN_ID: 4094
        }
        self.__settings = {
            SWITCH_INFO: switch_info,
            INT_COLLECTOR_INFO: int_collector_info
        }
            LOGGER.error("Failed to retrieve service settings: {}".format(ex))
            raise Exception(ex)

    def _parse_settings(self):
        #TODO: Pass settings in a correct way
        try:
            self.__switch_info = self.__settings[SWITCH_INFO]
            self.__switch_info = self.__settings.value[SWITCH_INFO]
        except Exception as ex:
            LOGGER.error("Failed to parse settings: {}".format(ex))
            self._default_settings() #TODO: Remove when bug is fixed
            self.__switch_info = self.__settings[SWITCH_INFO]
            LOGGER.error("Failed to parse service settings: {}".format(ex))
            raise Exception(ex)
        assert isinstance(self.__switch_info, dict), "Switch info object must be a map with switch names as keys"

        for switch_name, switch_info in self.__switch_info.items():
@@ -364,7 +336,7 @@ class P4FabricINTServiceHandler(_ServiceHandler):
                switch_info[INT_REPORT_MIRROR_ID_LIST] = INT_REPORT_MIRROR_ID_LIST_V1MODEL
            assert isinstance(switch_info[RECIRCULATION_PORT_LIST], list), "Switch {} - Recirculation ports must be described as a list".format(switch_name)

        self.__int_collector_info = self.__settings[INT_COLLECTOR_INFO]
        self.__int_collector_info = self.__settings.value[INT_COLLECTOR_INFO]
        assert isinstance(self.__int_collector_info, dict), "INT collector info object must be a map with mac, ip, port, and vlan_id keys)"

        self.__int_collector_mac = self.__int_collector_info[MAC]
+5 −59
Original line number Diff line number Diff line
@@ -318,69 +318,15 @@ class P4FabricL2SimpleServiceHandler(_ServiceHandler):
            self.__settings = self.__settings_handler.get('/settings')
            LOGGER.info("{} with settings: {}".format(self.__service_label, self.__settings))
        except Exception as ex:
            self.__settings = {}
            LOGGER.error("Failed to parse service settings: {}".format(ex))

    def _default_settings(self):
        port_list = [
            {
                PORT_ID: 1,
                PORT_TYPE: "host",
                VLAN_ID: 4094
            },
            {
                PORT_ID: 2,
                PORT_TYPE: "host",
                VLAN_ID: 4094
            },
        ]
        fwd_list = [
            {
                PORT_ID: 1,
                HOST_MAC: "fa:16:3e:75:9c:e5"
            },
            {
                PORT_ID: 2,
                HOST_MAC: "fa:16:3e:e2:af:28"
            }
        ]
        switch_info = {
            "p4-sw1": {
                ARCH: TARGET_ARCH_V1MODEL,
                DPID: 1,
                PORT_LIST: port_list,
                FORWARDING_LIST: fwd_list
            }
        }
        self.__settings = {
            SWITCH_INFO: switch_info
        }

        # port_map = {
        #     "p4-sw1": {
        #         "port-1": {
        #             PORT_ID: 1,
        #             PORT_TYPE: PORT_TYPE_HOST,
        #             VLAN_ID: 4094,
        #             FORWARDING_LIST: ["fa:16:3e:75:9c:e5"]
        #         },
        #         "port-2": {
        #             PORT_ID: 2,
        #             PORT_TYPE: PORT_TYPE_HOST,
        #             VLAN_ID: 4094,
        #             FORWARDING_LIST: ["fa:16:3e:e2:af:28"]
        #         }
        #     }
        # }
            LOGGER.error("Failed to retrieve service settings: {}".format(ex))
            raise Exception(ex)

    def _parse_settings(self):
        #TODO: Pass settings in a correct way
        try:
            self.__switch_info = self.__settings[SWITCH_INFO]
            self.__switch_info = self.__settings.value[SWITCH_INFO]
        except Exception as ex:
            LOGGER.error("Failed to parse settings: {}".format(ex))
            self._default_settings() #TODO: Remove when bug is fixed
            self.__switch_info = self.__settings[SWITCH_INFO]
            LOGGER.error("Failed to parse service settings: {}".format(ex))
            raise Exception(ex)
        assert isinstance(self.__switch_info, dict), "Switch info object must be a map with switch names as keys"

        for switch_name, switch_info in self.__switch_info.items():
+5 −75
Original line number Diff line number Diff line
@@ -316,85 +316,15 @@ class P4FabricL3ServiceHandler(_ServiceHandler):
            self.__settings = self.__settings_handler.get('/settings')
            LOGGER.info("{} with settings: {}".format(self.__service_label, self.__settings))
        except Exception as ex:
            self.__settings = {}
            LOGGER.error("Failed to parse service settings: {}".format(ex))

    def _default_settings(self):
        port_list = [
            {
                PORT_ID: 1,
                PORT_TYPE: "host"
            },
            {
                PORT_ID: 2,
                PORT_TYPE: "host"
            },
        ]
        routing_list = [
            {
                PORT_ID: 1,
                IPV4_DST: "10.158.72.11",
                IPV4_PREFIX_LEN: 32,
                MAC_SRC: "fa:16:3e:e2:af:28",
                MAC_DST: "fa:16:3e:75:9c:e5"
            },
            {
                PORT_ID: 2,
                IPV4_DST: "172.16.10.9",
                IPV4_PREFIX_LEN: 32,
                MAC_SRC: "fa:16:3e:75:9c:e5",
                MAC_DST: "fa:16:3e:e2:af:28"
            }
        ]
        switch_info = {
            "p4-sw1": {
                ARCH: TARGET_ARCH_V1MODEL,
                DPID: 1,
                PORT_LIST: port_list,
                ROUTING_LIST: routing_list
            }
        }
        self.__settings = {
            SWITCH_INFO: switch_info
        }

        # port_map = {
        #     "p4-sw1": {
        #         "port-1": {
        #             PORT_ID: 1,
        #             PORT_TYPE: PORT_TYPE_HOST,
        #             ROUTING_LIST: [
        #                 {
        #                     IPV4_DST: "10.158.72.11",
        #                     IPV4_PREFIX_LEN: 32,
        #                     MAC_SRC: "fa:16:3e:e2:af:28",
        #                     MAC_DST: "fa:16:3e:75:9c:e5"
        #                 }
        #             ]
        #         },
        #         "port-2": {
        #             PORT_ID: 2,
        #             PORT_TYPE: PORT_TYPE_HOST,
        #             ROUTING_LIST: [
        #                 {
        #                     IPV4_DST: "172.16.10.9",
        #                     IPV4_PREFIX_LEN: 32,
        #                     MAC_SRC: "fa:16:3e:75:9c:e5",
        #                     MAC_DST: "fa:16:3e:e2:af:28"
        #                 }
        #             ]
        #         }
        #     }
        # }
            LOGGER.error("Failed to retrieve service settings: {}".format(ex))
            raise Exception(ex)

    def _parse_settings(self):
        #TODO: Pass settings in a correct way
        try:
            self.__switch_info = self.__settings[SWITCH_INFO]
            self.__switch_info = self.__settings.value[SWITCH_INFO]
        except Exception as ex:
            LOGGER.error("Failed to parse settings: {}".format(ex))
            self._default_settings() #TODO: Remove when bug is fixed
            self.__switch_info = self.__settings[SWITCH_INFO]
            LOGGER.error("Failed to parse service settings: {}".format(ex))
            raise Exception(ex)
        assert isinstance(self.__switch_info, dict), "Switch info object must be a map with switch names as keys"

        for switch_name, switch_info in self.__switch_info.items():
+3 −3
Original line number Diff line number Diff line
@@ -9,11 +9,11 @@
            "service_status": {"service_status": "SERVICESTATUS_PLANNED"},
            "service_endpoint_ids": [
                {
                    "device_id": {"device_uuid": {"uuid": "p4-sw1"}},
                    "device_id": {"device_uuid": {"uuid": "sw1"}},
                    "endpoint_uuid": {"uuid": "1"}
                },
                {
                    "device_id": {"device_uuid": {"uuid": "p4-sw1"}},
                    "device_id": {"device_uuid": {"uuid": "sw1"}},
                    "endpoint_uuid": {"uuid": "2"}
                }
            ],
@@ -25,7 +25,7 @@
                            "resource_key": "/settings",
                            "resource_value": {
                                "switch_info": {
                                    "p4-sw1": {
                                    "sw1": {
                                        "arch": "v1model",
                                        "dpid": 1,
                                        "acl": [
Loading