summaryrefslogtreecommitdiff
path: root/vyroute/basic_function/OSPFRoute.py
blob: 0d2fa3326464261e0832d3554b0716acc6eefd10 (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# author=Hochikong
def ospfarea(obj, data):
    """This method provide a OSPF area configuration function

    Parameter data example:
    {'config':{'area':'0','network':'192.168.10.0/24'},
    }

    :param obj: a connection object
    :param data: a python dictionary
    :return: a python dictionary
    """
    ospf_basic_configuration = "set protocols ospf area %s network %s"

    try:
        # Configure ospf area
        obj.execute(ospf_basic_configuration % (data['config']['area'], data['config']['network']))
        return {"Result": "Configured successfully"}
    except Exception, e:
        return {"Error": e}


def router_id(obj, data):
    """This method provide a router id configuration function

    Parameter data example:
    {'config':{'id':'1.1.1.1'},
    }

    :param obj: a connection object
    :param data: a python dictionary
    :return: a python dictionary
    """
    router_id_configuration = "set protocols ospf parameters router-id %s"
    try:
        # Configure router id
        obj.execute(router_id_configuration % data['config']['id'])
        return {"Result": "Configured successfully"}
    except Exception, e:
        return {"Error": e}


def ospf_redistribute(obj, data):
    """This method provide a router redistribute function

    Parameter data example:
    {'config':{'type':'2'},
    }

    :param obj: a connection object
    :param data: a python dictionary
    :return: a python dictionary
    """
    redistribute_configuration = {"0": "set protocols ospf redistribute connected metric-type %s",
                                  "1": "set protocols ospf redistribute connected route-map CONNECT",
                                  }
    try:
        obj.execute(redistribute_configuration['0'] % data['config']['type'])
        obj.execute(redistribute_configuration['1'])
        return {"Result": "Configured successfully"}
    except Exception, e:
        return {"Error": e}


def ospf_adjacency(obj):
    """This method execute : set protocols ospf log-adjacency-changes

    :param obj: a connection object
    :return: a python dictionary
    """
    log_adjacency_changes_configuration = "set protocols ospf log-adjacency-changes"
    try:
        obj.execute(log_adjacency_changes_configuration)
        return {"Result": "Configured successfully"}
    except Exception, e:
        return {"Error": e}


def ospf_default_route(obj, data):
    """This method execute : set protocols ospf default-information originate always
    and other commands

    Parameter data example:
    {'config':{'metric':'10','metric-type':'2'},
    }

    :param obj: a connection object
    :param data: a python dictionary
    :return: a python dictionary
    """
    default_route_configuration = {"0": "set protocols ospf default-information originate always",
                                   "1": "set protocols ospf default-information originate metric %s",
                                   "2": "set protocols ospf default-information originate metric-type %s",
                                   }
    try:
        obj.execute(default_route_configuration['0'])
        obj.execute(default_route_configuration['1'] % data['config']['metric'])
        obj.execute(default_route_configuration['2'] % data['config']['metric-type'])
        return {"Result": "Configured successfully"}
    except Exception, e:
        return {"Error": e}


def ospf_route_map(obj, data):
    """This method used for VyOS route-map setting when you configure a OSPF router

    Parameter data example:
    {'config':{'rule':'10','interface':'lo'},
    }

    :param obj: a connection object
    :param data: a python dictionary
    :return: a python dictionary
    """
    route_map_configuration = {"0": "set policy route-map CONNECT rule %s action permit",
                               "1": "set policy route-map CONNECT rule %s match interface %s",
                               }
    try:
        obj.execute(route_map_configuration['0'] % data['config']['rule'])
        obj.execute(route_map_configuration['1'] % (data['config']['rule'], data['config']['interface']))
        return {"Result": "Configured successfully"}
    except Exception, e:
        return {"Error": e}