/
driver_mpls.py
117 lines (79 loc) · 3.17 KB
/
driver_mpls.py
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
# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
# Copyright (C) 2012 Daniel Turull - KTH Royal Institute of Technology
import libnetvirt
import commands
from NetworkManager import NetworkManager,Database
def mpls_connect(addr,port):
print "connect to " +addr
return 0
def mpls_stop():
print "stop"
def mpls_create_fns(desc):
print "create fns"
#libnetvirt.printFNS(desc)
fns_id= libnetvirt.getUuidFromFNS(desc)
D = Database ('libnetvirt.sqlite')
for i in range(0,libnetvirt.getNepFromFNS(desc)):
ep = libnetvirt.getEndpoint(desc,i)
r_id = libnetvirt.getSwIdFromEp(ep)
# Get router name
#r_name = str(libnetvirt.getSwIdFromEp(ep))
r_name = D.getRouterName(r_id)
# Get the router user name
r_uname = D.getRouterUserName(r_id)
# Get the router interface
r_interface = D.getRouterInterface(r_id)+str(libnetvirt.getPortFromEp(ep))
#r_uname = "root"
#r_interface = "eth3"
r_d_net = '192.66.23.0'
pe_address = libnetvirt.getAddressFromEp(ep)
#ce_address = libnetvirt.getAddressCEFromEp(ep)
#we need net address for CE
tmp = commands.getoutput('ipcalc -n ' + str(pe_address))
tmp = tmp.split()
ce_net = tmp[16]
vlan = libnetvirt.getVlanFromEp(ep)
vrf = 'vrf' + str(fns_id)
#get address from global configuration database
r_d = r_d_net + ':' + str(fns_id)
#call script for PE configuration
#Calling the scripts for configuration. Uncomment when the network is available
NM = NetworkManager(r_name, r_uname)
if NM != None:
NM.start_configuration(r_interface, pe_address, ce_net, r_d, vlan, vrf)
NM.close_ssh()
else:
print "Error in applying configuration"
return 0
def mpls_remove_fns(desc):
fns_id= libnetvirt.getUuidFromFNS(desc)
print "remove id " + str(fns_id) + "num of endpoints: " + str(libnetvirt.getNepFromFNS(desc))
#libnetvirt.printFNS(desc)
D = Database ('libnetvirt.sqlite')
for i in range(0,libnetvirt.getNepFromFNS(desc)):
ep = libnetvirt.getEndpoint(desc,i)
r_id = libnetvirt.getSwIdFromEp(ep)
# Get router name
#r_name = str(libnetvirt.getSwIdFromEp(ep))
r_name = D.getRouterName(r_id)
# Get the router user name
r_uname = D.getRouterUserName(r_id)
vlan = libnetvirt.getVlanFromEp(ep)
pe_if = libnetvirt.getPortFromEp
vrf = 'vrf' + str(fns_id)
#Calling the scripts for configuration. Uncomment when the network is available
NM = NetworkManager(r_name, r_uname)
if NM != None:
NM.stop_configuration(vlan, vrf,pe_if)
NM.close_ssh()
else:
print "Error in applying configuration"
return 0
def mpls_modify_fns_add(desc):
print "modify add "
#get current fns
mpls_create_fns(desc)
def mpls_modify_fns_del(desc):
print "modify del"
def mpls_request_ids():
print ids