Code Duplication    Length = 15-32 lines in 2 locations

models/evc.py 2 locations

@@ 750-781 (lines=32) @@
747
748
        return flow_mod
749
750
    def _prepare_push_flow(self, *args, queue_id=None):
751
        """Prepare push flow.
752
753
        Arguments:
754
            in_interface(str): Interface input.
755
            out_interface(str): Interface output.
756
            in_vlan(str): Vlan input.
757
            out_vlan(str): Vlan output.
758
759
        Return:
760
            dict: An python dictionary representing a FlowMod
761
762
        """
763
        # assign all arguments
764
        in_interface, out_interface, in_vlan, out_vlan = args
765
766
        flow_mod = self._prepare_flow_mod(
767
            in_interface, out_interface, queue_id
768
        )
769
770
        # the service tag must be always pushed
771
        new_action = {"action_type": "set_vlan", "vlan_id": out_vlan}
772
        flow_mod["actions"].insert(0, new_action)
773
774
        new_action = {"action_type": "push_vlan", "tag_type": "s"}
775
        flow_mod["actions"].insert(0, new_action)
776
777
        if in_vlan:
778
            # if in_vlan is set, it must be included in the match
779
            flow_mod["match"]["dl_vlan"] = in_vlan
780
            new_action = {"action_type": "pop_vlan"}
781
            flow_mod["actions"].insert(0, new_action)
782
        return flow_mod
783
784
    def _prepare_pop_flow(
@@ 784-798 (lines=15) @@
781
            flow_mod["actions"].insert(0, new_action)
782
        return flow_mod
783
784
    def _prepare_pop_flow(
785
        self, in_interface, out_interface, in_vlan, out_vlan, queue_id=None
786
    ):
787
        # pylint: disable=too-many-arguments
788
        """Prepare pop flow."""
789
        flow_mod = self._prepare_flow_mod(
790
            in_interface, out_interface, queue_id
791
        )
792
        flow_mod["match"]["dl_vlan"] = out_vlan
793
        if in_vlan:
794
            new_action = {"action_type": "set_vlan", "vlan_id": in_vlan}
795
            flow_mod["actions"].insert(0, new_action)
796
            new_action = {"action_type": "push_vlan", "tag_type": "c"}
797
            flow_mod["actions"].insert(0, new_action)
798
        new_action = {"action_type": "pop_vlan"}
799
        flow_mod["actions"].insert(0, new_action)
800
        return flow_mod
801