2 #Filename:servicechain.py
5 from requests.auth import HTTPBasicAuth
10 TRANSACTION_BEGIN="http://%s:8181/restconf/operations/nemo-intent:begin-transaction"
11 TRANSACTION_END="http://%s:8181/restconf/operations/nemo-intent:end-transaction"
12 REGISTER_USER="http://%s:8181/restconf/operations/nemo-intent:register-user"
13 STRUCTURE_UPDATE_USERS="http://%s:8181/restconf/operations/nemo-intent:structure-style-nemo-update"
15 def register_user(contHost):
18 "user-id":"14ce424a-3e50-4a2a-ad5c-b29845158c8b",
20 "user-password":"abc",
24 post(REGISTER_USER % contHost, data)
26 def transaction_begin(contHost):
29 "user-id":"14ce424a-3e50-4a2a-ad5c-b29845158c8b",
31 "user-password":"abc",
35 post(TRANSACTION_BEGIN % contHost, data)
37 def transaction_end(contHost):
40 "user-id":"14ce424a-3e50-4a2a-ad5c-b29845158c8b",
42 "user-password":"abc",
46 post(TRANSACTION_END % contHost, data)
48 def add_server1_host(contHost):
52 "user-role": "tenant",
53 "user-password": "abc",
54 "user-id": "14ce424a-3e50-4a2a-ad5c-b29845158c8b",
58 "node-name": "server1",
60 "node-id":"7b796915-adf4-4356-b5ca-de005ac410c1"
66 post(STRUCTURE_UPDATE_USERS % contHost, data)
68 def add_server2_host(contHost):
72 "user-role": "tenant",
73 "user-password": "abc",
74 "user-id": "14ce424a-3e50-4a2a-ad5c-b29845158c8b",
78 "node-name": "server2",
80 "node-id":"22282cca-9a13-4d0c-a67e-a933ebb0b0ae"
86 post(STRUCTURE_UPDATE_USERS % contHost, data)
88 def add_vm1_host(contHost):
92 "user-role": "tenant",
93 "user-password": "abc",
94 "user-id": "14ce424a-3e50-4a2a-ad5c-b29845158c8b",
100 "node-id":"1eaf9a67-a171-42a8-9282-71cf702f61dd"
106 post(STRUCTURE_UPDATE_USERS % contHost, data)
108 def add_vm2_host(contHost):
111 "user-name": "user2",
112 "user-role": "tenant",
113 "user-password": "abc",
114 "user-id": "14ce424a-3e50-4a2a-ad5c-b29845158c8b",
120 "node-id":"6c787caa-156a-49ed-8546-547bdccf283c"
126 post(STRUCTURE_UPDATE_USERS % contHost, data)
128 def add_enterpise_node(contHost):
131 "user-name": "user2",
132 "user-role": "tenant",
133 "user-password": "abc",
134 "user-id": "14ce424a-3e50-4a2a-ad5c-b29845158c8b",
138 "node-name": "enterprise",
139 "node-type": "ext-group",
142 "property-name": "location",
147 "value": "openflow:4:2"
153 "property-name": "ac-info-network",
164 "property-name": "ac-info-protocol",
175 "property-name": "ip-prefix",
180 "value": "192.168.13.0/24"
186 "node-id": "94a6fb90-b425-4ffd-9515-c0684aa4c37f"
192 post(STRUCTURE_UPDATE_USERS % contHost, data)
194 def add_internet_node(contHost):
197 "user-name": "user2",
198 "user-role": "tenant",
199 "user-password": "abc",
200 "user-id": "14ce424a-3e50-4a2a-ad5c-b29845158c8b",
204 "node-name": "internet",
205 "node-type": "ext-group",
208 "property-name": "location",
213 "value": "openflow:3:4"
219 "property-name": "ac-info-network",
230 "property-name": "ac-info-protocol",
241 "property-name": "ip-prefix",
246 #wait for external network ip
247 "value": "172.168.1.0/24"
253 "node-id": "d463232f-363f-491c-a6f5-097ed0a794d3"
259 post(STRUCTURE_UPDATE_USERS % contHost, data)
261 def add_dmz_node(contHost):
264 "user-name": "user2",
265 "user-role": "tenant",
266 "user-password": "abc",
267 "user-id": "14ce424a-3e50-4a2a-ad5c-b29845158c8b",
272 "node-type": "l2-group",
275 "node-id":"7b796915-adf4-4356-b5ca-de005ac410c1",
281 "property-name": "location",
286 "value": "openflow:3"
292 "property-name": "ip-prefix",
297 "value": "192.168.11.0/24"
303 "property-name": "gateway-ip",
308 "value": "192.168.11.1"
314 "node-id": "b46cfa7f-93a3-43f4-ac20-09307c75feca"
320 post(STRUCTURE_UPDATE_USERS % contHost, data)
322 def add_interior_node(contHost):
325 "user-name": "user2",
326 "user-role": "tenant",
327 "user-password": "abc",
328 "user-id": "14ce424a-3e50-4a2a-ad5c-b29845158c8b",
332 "node-name": "interior",
333 "node-type": "l2-group",
336 "node-id":"22282cca-9a13-4d0c-a67e-a933ebb0b0ae",
340 "node-id":"1eaf9a67-a171-42a8-9282-71cf702f61dd",
344 "node-id":"6c787caa-156a-49ed-8546-547bdccf283c",
350 "property-name": "location",
355 "value": "openflow:3"
361 "property-name": "ip-prefix",
366 "value": "192.168.12.0/24"
372 "property-name": "gateway-ip",
377 "value": "192.168.12.1"
383 "node-id": "175425f7-c9c9-474a-962c-70cb6c180d4d"
389 post(STRUCTURE_UPDATE_USERS % contHost, data)
391 def add_enterprise_interior_connection(contHost):
394 "user-name": "user2",
395 "user-role": "tenant",
396 "user-password": "abc",
397 "user-id": "14ce424a-3e50-4a2a-ad5c-b29845158c8b",
401 "connection-name": "c1",
402 "connection-id": "30da6667-608e-4d2f-bb50-79e5cabcc523",
406 "node-id": "94a6fb90-b425-4ffd-9515-c0684aa4c37f"
410 "node-id": "175425f7-c9c9-474a-962c-70cb6c180d4d"
413 "connection-type": "p2p",
416 "property-name": "bandwidth",
432 post(STRUCTURE_UPDATE_USERS % contHost, data)
434 def add_interior_dmz_connection(contHost):
437 "user-name": "user2",
438 "user-role": "tenant",
439 "user-password": "abc",
440 "user-id": "14ce424a-3e50-4a2a-ad5c-b29845158c8b",
444 "connection-name": "c2",
445 "connection-id": "b49e3960-c08d-4fff-b9fc-08b65ebcde2c",
449 "node-id": "175425f7-c9c9-474a-962c-70cb6c180d4d"
453 "node-id": "b46cfa7f-93a3-43f4-ac20-09307c75feca"
456 "connection-type": "p2p"
462 post(STRUCTURE_UPDATE_USERS % contHost, data)
464 def add_dmz_internet_connection(contHost):
467 "user-name": "user2",
468 "user-role": "tenant",
469 "user-password": "abc",
470 "user-id": "14ce424a-3e50-4a2a-ad5c-b29845158c8b",
474 "connection-name": "c3",
475 "connection-id": "e0d56fee-7235-4748-a2a1-eb5e3733d866",
479 "node-id": "b46cfa7f-93a3-43f4-ac20-09307c75feca"
483 "node-id": "d463232f-363f-491c-a6f5-097ed0a794d3"
486 "connection-type": "p2p"
492 post(STRUCTURE_UPDATE_USERS % contHost, data)
494 def update_enterprise_interior_connection(contHost):
497 "user-name": "user2",
498 "user-role": "tenant",
499 "user-password": "abc",
500 "user-id": "14ce424a-3e50-4a2a-ad5c-b29845158c8b",
504 "connection-name": "c1",
505 "connection-id": "30da6667-608e-4d2f-bb50-79e5cabcc523",
509 "node-id": "94a6fb90-b425-4ffd-9515-c0684aa4c37f"
513 "node-id": "175425f7-c9c9-474a-962c-70cb6c180d4d"
516 "connection-type": "p2p",
519 "property-name": "bandwidth",
535 post(STRUCTURE_UPDATE_USERS % contHost, data)
538 headers = {'Content-type': 'application/yang.data+json',
539 'Accept': 'application/yang.data+json'}
540 print "POST %s" % url
541 print json.dumps(data, indent=4, sort_keys=True)
542 r = requests.post(url, data=json.dumps(data), headers=headers, auth=HTTPBasicAuth(USERNAME, PASSWORD))
546 if __name__ == '__main__':
548 parser = argparse.ArgumentParser()
549 parser.add_argument('--controller', default='127.0.0.1', help='controller IP')
550 args=parser.parse_args()
553 #register_user(args.controller)
555 # IMPORT Node server1 Type host;
556 #transaction_begin(args.controller)
557 #add_server1_host(args.controller)
558 #transaction_end(args.controller)
560 # IMPORT Node server2 Type host;
561 #transaction_begin(args.controller)
562 #add_server2_host(args.controller)
563 #transaction_end(args.controller)
565 # IMPORT Node vm1 Type host;
566 #transaction_begin(args.controller)
567 #add_vm1_host(args.controller)
568 #transaction_end(args.controller)
570 # IMPORT Node vm2 Type host;
571 #transaction_begin(args.controller)
572 #add_vm2_host(args.controller)
573 #transaction_end(args.controller)
575 # IMPORT Node enterprise Type ext-group Property location:openflow:4:2, ip-prefix:192.18.13.0/24;
576 #transaction_begin(args.controller)
577 #add_enterpise_node(args.controller)
578 #transaction_end(args.controller)
580 # CREATE Node interior Type l2-group Contain server1,vm1,vm2;
581 #transaction_begin(args.controller)
582 #add_interior_node(args.controller)
583 #transaction_end(args.controller)
585 # CREATE Node dmz Type l2-group Contain server2;
586 #transaction_begin(args.controller)
587 #add_dmz_node(args.controller)
588 #transaction_end(args.controller)
590 # IMPORT Node internet Type ext-group Property location:openflow:3:4, ip-prefix:172.168.1.0/24;
591 #transaction_begin(args.controller)
592 #add_internet_node(args.controller)
593 #transaction_end(args.controller)
595 # CREATE Connection c1 Endnodes enterprise,interior Property bandwidth:128(kbps);
596 #transaction_begin(args.controller)
597 #add_enterprise_interior_connection(args.controller)
598 #transaction_end(args.controller)
600 # CREATE Connection c2 Endnodes interior,dmz;
601 #transaction_begin(args.controller)
602 #add_interior_dmz_connection(args.controller)
603 #transaction_end(args.controller)
605 # CREATE Connection c3 Endnodes dmz,internet;
606 #transaction_begin(args.controller)
607 #add_dmz_internet_connection(args.controller)
608 #transaction_end(args.controller)
610 # UPDATE Connection c1 Endnodes enterprise,interior Property bandwidth:1024(kbps);
611 transaction_begin(args.controller)
612 update_enterprise_interior_connection(args.controller)
613 transaction_end(args.controller)