-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreateSubnet.py
More file actions
122 lines (89 loc) · 2 KB
/
Copy pathcreateSubnet.py
File metadata and controls
122 lines (89 loc) · 2 KB
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
#input: tenantID, vpcID, subnetID ,CIDR
import bridge
import util_ip
import libnet
import os
import argparse
p = argparse.ArgumentParser()
p.add_argument("-t", "--tenantID", type=str,
help="tenantID")
p.add_argument("-v", "--vpcID", type=str,
help="vpcID")
p.add_argument("-s", "--subnetID", type=str,
help="subnetID, auto generate if not assigned.")
p.add_argument("-c", "--cidr", type=str,
help="CIDR, e.g., 192.168.1.0/24")
args = p.parse_args()
if args.tenantID:
tenantID = args.tenantID
else:
exit("tenantID missing.")
if args.vpcID:
vpcID = args.vpcID
else:
exit("vpcID missing")
if args.subnetID:
subnetID = args.subnetID
else:
exit("subnetID missing")
if args.cidr:
cidr = args.cidr
else:
exit("cidr missing")
'''
verify input
'''
try:
print("Input:", tenantID, vpcID, subnetID, cidr)
except NameError:
exit("One of the required parameter was not included.")
## check is CIDR is in the correct format
try:
n_cidr= util_ip.check_subnet(cidr)
except ValueError:
exit("CIDR error")
## if tenantID exist -> yes
## if vpcID under tenantID -> yes
## if subneID in vpcID -> no
## if CIDR in vpc range and unused
'''
Verifying subnet
'''
## check subnet for colision
'''
Verify Router is running
'''
routeID = "RT_"+ tenantID + "_" + subnetID
## verify router VM running
## vmRunning(routerID)
'''
Creating Bridge using bridge.py
'''
bridgeID = "BR_" + tenantID + "_" + subnetID
if bridge.isRunning(bridgeID):
print("Bridge", bridgeID, "exists.")
else:
bridge.newBridge(bridgeID)
print("Bridge created, bridgeID:", bridgeID)
'''
## rollback
'''
## bridge.rmBridge(bridgeID)
'''
networkID = createNetwork(bridgeID, CIDR)
'''
networkID = "NW_" + tenantID + "_" + subnetID
if libnet.isRunning(networkID):
print("Network", bridgeID, "exists.")
else:
libnet.newNet(networkID, bridgeID, n_cidr)
'''
rollback
'''
## libnet.rmNet(networkID)
'''
attachSubnettoRouter(routerID, networkID)
'''
'''
Append entries in db
'''