aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_vxlan_gbp.py
diff options
context:
space:
mode:
authorAlexander Chernavin <achernavin@netgate.com>2020-10-01 08:57:59 -0400
committerMatthew Smith <mgsmith@netgate.com>2020-10-01 21:23:53 +0000
commit67ec752917ad95184f07ab67a67ada3f6265b48c (patch)
tree2f32a1f892a0a8a1955054e0d8a849c528bb8034 /test/test_vxlan_gbp.py
parent433a498683506e4e22b8304db22efb56ef24bdf9 (diff)
misc: allow disabling of ipfix exporter via api
Zero collector address indicates that the IPFIX exporter is disabled. You can zero the collector address via vppctl but you can't do it via the API because the handler returns an error if the address is zero. With this change, do not return an error in the handler when the collector address is zero thus allowing the IPFIX exporter be disabled. Type: fix Signed-off-by: Alexander Chernavin <achernavin@netgate.com> Change-Id: I1335c0d06af81f11d743c395399a360c612c0c21
Diffstat (limited to 'test/test_vxlan_gbp.py')
0 files changed, 0 insertions, 0 deletions
ue='rls1904_2'>rls1904_2 Integration testsGrokmirror user
aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python/Cop.py
blob: 29530b1277298468b976a66522ff2ca44518cadb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# Copyright (c) 2019 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""COP utilities library."""

from resources.libraries.python.PapiExecutor import PapiSocketExecutor
from resources.libraries.python.topology import Topology


class Cop:
    """COP utilities."""

    @staticmethod
    def cop_add_whitelist_entry(
            node, interface, ip_version, fib_id, default_cop=0):
        """Add cop whitelisted entry.

        :param node: Node to add COP whitelist on.
        :param interface: Interface of the node where the COP is added.
        :param ip_version: IP version. 'ip4' and 'ip6' are valid values.
        :param fib_id: Specify the fib table ID.
        :param default_cop: 1 => enable non-ip4, non-ip6 filtration,
            0 => disable it.
        :type node: dict
        :type interface: str
        :type ip_version: str
        :type fib_id: int
        :type default_cop: int
        :raises ValueError: If parameter 'ip_version' has incorrect value.
        """
        if ip_version not in (u"ip4", u"ip6"):
            raise ValueError(u"IP version is not in correct format")

        cmd = u"cop_whitelist_enable_disable"
        err_msg = f"Failed to add COP whitelist on interface {interface} " \
            f"on host {node[u'host']}"
        args = dict(
            sw_if_index=Topology.get_interface_sw_index(node, interface),
            fib_id=int(fib_id),
            ip4=bool(ip_version == u"ip4"),
            ip6=bool(ip_version == u"ip6"),
            default_cop=default_cop
        )

        with PapiSocketExecutor(node) as papi_exec:
            papi_exec.add(cmd, **args).get_reply(err_msg)

    @staticmethod
    def cop_interface_enable_or_disable(node, interface, state):
        """Enable or disable COP on the interface.

        :param node: Node to add COP whitelist on.
        :param interface: Interface of the node where the COP is added.
        :param state: Enable or disable COP on the interface.
        :type node: dict
        :type interface: str
        :type state: str
        :raises ValueError: If parameter 'state' has incorrect value.
        """
        state = state.lower()
        if state in (u"enable", u"disable"):
            enable = bool(state == u"enable")
        else:
            raise ValueError(u"Possible state values are 'enable' or 'disable'")

        cmd = u"cop_interface_enable_disable"
        err_msg = f"Failed to enable/disable COP on interface {interface} " \
            f"on host {node[u'host']}"
        args = dict(
            sw_if_index=Topology.get_interface_sw_index(node, interface),
            enable_disable=enable
        )

        with PapiSocketExecutor(node) as papi_exec:
            papi_exec.add(cmd, **args).get_reply(err_msg)