2 ##############################################################################
3 # Copyright (c) 2017 Orange, Inc. and others. All rights reserved.
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
22 class TransportPCEtesting(unittest.TestCase):
25 honeynode_topology = None
26 restconf_baseurl = "http://localhost:8181/restconf"
30 honeynode_topology_file = "sample_configs/honeynode-topo.xml"
31 if os.path.isfile(honeynode_topology_file):
32 with open(honeynode_topology_file, 'r') as honeynode_file:
33 cls.honeynode_topo = honeynode_file.read();
37 executable = "../karaf/target/assembly/bin/karaf"
38 with open('odl.log', 'w') as outfile:
39 cls.odl_process = subprocess.Popen(
40 ["bash", executable, "server"], stdout=outfile,
41 stdin=open(os.devnull))
44 def setUpClass(cls): # a class method called before tests in an individual class run.
50 def tearDownClass(cls):
51 for child in psutil.Process(cls.odl_process.pid).children():
52 child.send_signal(signal.SIGINT)
54 cls.odl_process.send_signal(signal.SIGINT)
55 cls.odl_process.wait()
57 def setUp(self): # instruction executed before each test method
58 print ("execution of {}".format(self.id().split(".")[-1]))
60 # def test_01_restconfAPI(self):
61 # url = ("{}/operational/network-topology:network-topology/topology/"
62 # "topology-netconf/node/controller-config".format(self.restconf_baseurl))
63 # headers = {'content-type': 'application/json'}
64 # response = requests.request("GET", url, headers=headers, auth=('admin', 'admin'))
65 # self.assertEqual(response.status_code, requests.codes.ok)
66 # res = response.json()
67 # self.assertEqual(res['node'] [0] ['netconf-node-topology:connection-status'],
71 # Load honeynode topology
72 def test_02_load_honeynode_topology(self):
73 url = ("{}/config/ietf-network:network/openroadm-topology"
74 .format(self.restconf_baseurl))
75 body = self.honeynode_topo
76 headers = {'content-type': 'application/xml',
77 "Accept": "application/json"}
78 response = requests.request(
79 "PUT", url, data=body, headers=headers,
80 auth=('admin', 'admin'))
81 self.assertEqual(response.status_code, requests.codes.ok)
84 def test_03_check_link_xpdra_roadma(self):
85 url = ("{}/config/ietf-network:network/openroadm-topology/link/"
86 "XPDRA-XPDR1-XPDR1-NETWORK1toROADMA-SRG1-SRG1-PP1-TXRX".format(self.restconf_baseurl))
87 headers = {'content-type': 'application/json'}
88 response = requests.request("GET", url, headers=headers, auth=('admin', 'admin'))
89 self.assertEqual(response.status_code, requests.codes.ok)
93 def test_04_check_link_xpdrc_roadmc(self):
94 url = ("{}/config/ietf-network:network/openroadm-topology/link/"
95 "XPDRC-XPDR1-XPDR1-NETWORK1toROADMC-SRG1-SRG1-PP1-TXRX".format(self.restconf_baseurl))
96 headers = {'content-type': 'application/json'}
97 response = requests.request("GET", url, headers=headers, auth=('admin', 'admin'))
98 self.assertEqual(response.status_code, requests.codes.ok)
102 def test_05_check_link_roadma_xpdra(self):
103 url = ("{}/config/ietf-network:network/openroadm-topology/link/"
104 "ROADMA-SRG1-SRG1-PP1-TXRXtoXPDRA-XPDR1-XPDR1-NETWORK1".format(self.restconf_baseurl))
105 headers = {'content-type': 'application/json'}
106 response = requests.request("GET", url, headers=headers, auth=('admin', 'admin'))
107 self.assertEqual(response.status_code, requests.codes.ok)
108 res = response.json()
111 def test_06_check_link_roadmc_xpdrc(self):
112 url = ("{}/config/ietf-network:network/openroadm-topology/link/"
113 "ROADMC-SRG1-SRG1-PP1-TXRXtoXPDRC-XPDR1-XPDR1-NETWORK1".format(self.restconf_baseurl))
114 headers = {'content-type': 'application/json'}
115 response = requests.request("GET", url, headers=headers, auth=('admin', 'admin'))
116 self.assertEqual(response.status_code, requests.codes.ok)
117 res = response.json()
120 # Create Service 'test' with correct parameters
121 def test_07_create_service(self):
122 url = ("{}/operations/org-openroadm-service:service-create"
123 .format(self.restconf_baseurl))
125 "sdnc-request-header": {
126 "request-id": "e3028bae-a90f-4ddd-a83f-cf224eba0e58",
127 "rpc-action": "service-create",
128 "request-system-id": "appname",
129 "notification-url": "http://localhost:8585/NotificationServer/notify"
131 "service-name": "test",
132 "common-id": "ASATT1234567",
133 "connection-type": "infrastructure",
135 "service-rate": "100",
137 "service-format": "Ethernet",
138 "clli": "SNJSCAMCJP8",
141 "port-device-name": "ROUTER_SNJSCAMCJP8_000000.00_00",
142 "port-type": "router",
143 "port-name": "Gigabit Ethernet_Tx.ge-5/0/0.0",
144 "port-rack": "000000.00",
148 "lgx-device-name": "LGX Panel_SNJSCAMCJP8_000000.00_00",
149 "lgx-port-name": "LGX Back.3",
150 "lgx-port-rack": "000000.00",
151 "lgx-port-shelf": "00"
156 "port-device-name": "ROUTER_SNJSCAMCJP8_000000.00_00",
157 "port-type": "router",
158 "port-name": "Gigabit Ethernet_Rx.ge-5/0/0.0",
159 "port-rack": "000000.00",
163 "lgx-device-name": "LGX Panel_SNJSCAMCJP8_000000.00_00",
164 "lgx-port-name": "LGX Back.4",
165 "lgx-port-rack": "000000.00",
166 "lgx-port-shelf": "00"
172 "service-rate": "100",
174 "service-format": "Ethernet",
175 "clli": "SNJSCAMCJT4",
178 "port-device-name": "ROUTER_SNJSCAMCJT4_000000.00_00",
179 "port-type": "router",
180 "port-name": "Gigabit Ethernet_Tx.ge-1/0/0.0",
181 "port-rack": "000000.00",
185 "lgx-device-name": "LGX Panel_SNJSCAMCJT4_000000.00_00",
186 "lgx-port-name": "LGX Back.29",
187 "lgx-port-rack": "000000.00",
188 "lgx-port-shelf": "00"
193 "port-device-name": "ROUTER_SNJSCAMCJT4_000000.00_00",
194 "port-type": "router",
195 "port-name": "Gigabit Ethernet_Rx.ge-1/0/0.0",
196 "port-rack": "000000.00",
200 "lgx-device-name": "LGX Panel_SNJSCAMCJT4_000000.00_00",
201 "lgx-port-name": "LGX Back.30",
202 "lgx-port-rack": "000000.00",
203 "lgx-port-shelf": "00"
208 "due-date": "2016-11-28T00:00:01Z",
209 "operator-contact": "pw1234"
212 headers = {'content-type': 'application/json',
213 "Accept": "application/json"}
214 response = requests.request(
215 "POST", url, data=json.dumps(data), headers=headers,
216 auth=('admin', 'admin'))
217 self.assertEqual(response.status_code, requests.codes.ok)
218 res = response.json()
219 self.assertIn('PCE calculation in progress',
220 res['output']['configuration-response-common']['response-message'])
223 # Create Service 'test' with not compliant parameter : no 'sdnc-request-header' parameter
224 def test_08_create_service(self):
225 url = ("{}/operations/org-openroadm-service:service-create"
226 .format(self.restconf_baseurl))
228 "service-name": "test",
229 "common-id": "ASATT1234567",
230 "connection-type": "infrastructure",
232 "service-rate": "100",
234 "service-format": "Ethernet",
235 "clli": "SNJSCAMCJP8",
238 "port-device-name": "ROUTER_SNJSCAMCJP8_000000.00_00",
239 "port-type": "router",
240 "port-name": "Gigabit Ethernet_Tx.ge-5/0/0.0",
241 "port-rack": "000000.00",
245 "lgx-device-name": "LGX Panel_SNJSCAMCJP8_000000.00_00",
246 "lgx-port-name": "LGX Back.3",
247 "lgx-port-rack": "000000.00",
248 "lgx-port-shelf": "00"
253 "port-device-name": "ROUTER_SNJSCAMCJP8_000000.00_00",
254 "port-type": "router",
255 "port-name": "Gigabit Ethernet_Rx.ge-5/0/0.0",
256 "port-rack": "000000.00",
260 "lgx-device-name": "LGX Panel_SNJSCAMCJP8_000000.00_00",
261 "lgx-port-name": "LGX Back.4",
262 "lgx-port-rack": "000000.00",
263 "lgx-port-shelf": "00"
269 "service-rate": "100",
271 "service-format": "Ethernet",
272 "clli": "SNJSCAMCJT4",
275 "port-device-name": "ROUTER_SNJSCAMCJT4_000000.00_00",
276 "port-type": "router",
277 "port-name": "Gigabit Ethernet_Tx.ge-1/0/0.0",
278 "port-rack": "000000.00",
282 "lgx-device-name": "LGX Panel_SNJSCAMCJT4_000000.00_00",
283 "lgx-port-name": "LGX Back.29",
284 "lgx-port-rack": "000000.00",
285 "lgx-port-shelf": "00"
290 "port-device-name": "ROUTER_SNJSCAMCJT4_000000.00_00",
291 "port-type": "router",
292 "port-name": "Gigabit Ethernet_Rx.ge-1/0/0.0",
293 "port-rack": "000000.00",
297 "lgx-device-name": "LGX Panel_SNJSCAMCJT4_000000.00_00",
298 "lgx-port-name": "LGX Back.30",
299 "lgx-port-rack": "000000.00",
300 "lgx-port-shelf": "00"
305 "due-date": "2016-11-28T00:00:01Z",
306 "operator-contact": "pw1234"
309 headers = {'content-type': 'application/json',
310 "Accept": "application/json"}
311 response = requests.request(
312 "POST", url, data=json.dumps(data), headers=headers,
313 auth=('admin', 'admin'))
314 self.assertEqual(response.status_code, requests.codes.ok)
315 res = response.json()
316 self.assertIn('Service sndc-request-header is not set',
317 res['output']['configuration-response-common']['response-message'])
320 # Create Service 'test' with not compliant parameter : no 'tx-direction' for serviceAEnd
321 def test_09_create_service(self):
322 url = ("{}/operations/org-openroadm-service:service-create"
323 .format(self.restconf_baseurl))
325 "sdnc-request-header": {
326 "request-id": "e3028bae-a90f-4ddd-a83f-cf224eba0e58",
327 "rpc-action": "service-create",
328 "request-system-id": "appname",
329 "notification-url": "http://localhost:8585/NotificationServer/notify"
331 "service-name": "test",
332 "common-id": "ASATT1234567",
333 "connection-type": "infrastructure",
335 "service-rate": "100",
337 "service-format": "Ethernet",
338 "clli": "SNJSCAMCJP8",
341 "port-device-name": "ROUTER_SNJSCAMCJP8_000000.00_00",
342 "port-type": "router",
343 "port-name": "Gigabit Ethernet_Rx.ge-5/0/0.0",
344 "port-rack": "000000.00",
348 "lgx-device-name": "LGX Panel_SNJSCAMCJP8_000000.00_00",
349 "lgx-port-name": "LGX Back.4",
350 "lgx-port-rack": "000000.00",
351 "lgx-port-shelf": "00"
357 "service-rate": "100",
359 "service-format": "Ethernet",
360 "clli": "SNJSCAMCJT4",
363 "port-device-name": "ROUTER_SNJSCAMCJT4_000000.00_00",
364 "port-type": "router",
365 "port-name": "Gigabit Ethernet_Tx.ge-1/0/0.0",
366 "port-rack": "000000.00",
370 "lgx-device-name": "LGX Panel_SNJSCAMCJT4_000000.00_00",
371 "lgx-port-name": "LGX Back.29",
372 "lgx-port-rack": "000000.00",
373 "lgx-port-shelf": "00"
378 "port-device-name": "ROUTER_SNJSCAMCJT4_000000.00_00",
379 "port-type": "router",
380 "port-name": "Gigabit Ethernet_Rx.ge-1/0/0.0",
381 "port-rack": "000000.00",
385 "lgx-device-name": "LGX Panel_SNJSCAMCJT4_000000.00_00",
386 "lgx-port-name": "LGX Back.30",
387 "lgx-port-rack": "000000.00",
388 "lgx-port-shelf": "00"
393 "due-date": "2016-11-28T00:00:01Z",
394 "operator-contact": "pw1234"
397 headers = {'content-type': 'application/json',
398 "Accept": "application/json"}
399 response = requests.request(
400 "POST", url, data=json.dumps(data), headers=headers,
401 auth=('admin', 'admin'))
402 self.assertEqual(response.status_code, requests.codes.ok)
403 res = response.json()
404 self.assertIn('Service TxDirection is not correctly set',
405 res['output']['configuration-response-common']['response-message'])
408 # Get 'test' service created
409 def test_10_get_service(self):
410 url = ("{}/operational/org-openroadm-service:service-list/services/test"
411 .format(self.restconf_baseurl))
412 headers = {'content-type': 'application/json',
413 "Accept": "application/json"}
414 response = requests.request(
415 "GET", url, headers=headers, auth=('admin', 'admin'))
416 self.assertEqual(response.status_code, requests.codes.ok)
417 res = response.json()
419 res['services'][0]['administrative-state'],
423 # get non existing service
424 def test_11_get_service(self):
425 url = ("{}/operational/org-openroadm-service:service-list/services/test1"
426 .format(self.restconf_baseurl))
427 headers = {'content-type': 'application/json',
428 "Accept": "application/json"}
429 response = requests.request(
430 "GET", url, headers=headers, auth=('admin', 'admin'))
431 self.assertEqual(response.status_code, 404)
434 # These tests is not available in this commit (cf commit message )
435 # reconfigure 'test' to be 'test-new'
436 # def test_08_reconfigure_service(self):
437 # url = ("{}/operations/org-openroadm-service:service-reconfigure"
438 # .format(self.restconf_baseurl))
440 # "service-name": "test",
441 # "new-service-name": "test-new",
442 # "common-id": "ASATT1234567",
443 # "connection-type": "infrastructure",
445 # "service-rate": "100",
446 # "node-id": "XPDRA",
447 # "service-format": "Ethernet",
448 # "clli": "SNJSCAMCJP8",
451 # "port-device-name": "ROUTER_SNJSCAMCJP8_000000.00_00",
452 # "port-type": "router",
453 # "port-name": "Gigabit Ethernet_Tx.ge-5/0/0.0",
454 # "port-rack": "000000.00",
458 # "lgx-device-name": "LGX Panel_SNJSCAMCJP8_000000.00_00",
459 # "lgx-port-name": "LGX Back.3",
460 # "lgx-port-rack": "000000.00",
461 # "lgx-port-shelf": "00"
466 # "port-device-name": "ROUTER_SNJSCAMCJP8_000000.00_00",
467 # "port-type": "router",
468 # "port-name": "Gigabit Ethernet_Rx.ge-5/0/0.0",
469 # "port-rack": "000000.00",
473 # "lgx-device-name": "LGX Panel_SNJSCAMCJP8_000000.00_00",
474 # "lgx-port-name": "LGX Back.4",
475 # "lgx-port-rack": "000000.00",
476 # "lgx-port-shelf": "00"
479 # "optic-type": "gray"
482 # "service-rate": "100",
483 # "node-id": "XPDRC",
484 # "service-format": "Ethernet",
485 # "clli": "SNJSCAMCJT4",
488 # "port-device-name": "ROUTER_SNJSCAMCJT4_000000.00_00",
489 # "port-type": "router",
490 # "port-name": "Gigabit Ethernet_Tx.ge-1/0/0.0",
491 # "port-rack": "000000.00",
495 # "lgx-device-name": "LGX Panel_SNJSCAMCJT4_000000.00_00",
496 # "lgx-port-name": "LGX Back.29",
497 # "lgx-port-rack": "000000.00",
498 # "lgx-port-shelf": "00"
503 # "port-device-name": "ROUTER_SNJSCAMCJT4_000000.00_00",
504 # "port-type": "router",
505 # "port-name": "Gigabit Ethernet_Rx.ge-1/0/0.0",
506 # "port-rack": "000000.00",
510 # "lgx-device-name": "LGX Panel_SNJSCAMCJT4_000000.00_00",
511 # "lgx-port-name": "LGX Back.30",
512 # "lgx-port-rack": "000000.00",
513 # "lgx-port-shelf": "00"
516 # "optic-type": "gray"
518 # "hard-constraints": {
520 # "existing-service": [
521 # "104/GE100/SNJSCAMCJP8/SNJSCAMCJT4"
523 # "existing-service-applicability": {
532 # "SNJSCAMCJP8_000000.00"
536 # "max-latency": "30"
541 # headers = {'content-type': 'application/json',
542 # "Accept": "application/json"}
543 # response = requests.request(
544 # "POST", url, data=json.dumps(data), headers=headers,
545 # auth=('admin', 'admin'))
546 # self.assertEqual(response.status_code, requests.codes.ok)
547 # res = response.json()
548 # self.assertIn('in progress',
549 # res['output']['status-message'])
552 # # get new service 'test-new'
553 # def test_09_get_service(self):
554 # url = ("{}/operational/org-openroadm-service:service-list/services/test-new"
555 # .format(self.restconf_baseurl))
556 # headers = {'content-type': 'application/json',
557 # "Accept": "application/json"}
558 # response = requests.request(
559 # "GET", url, headers=headers, auth=('admin', 'admin'))
560 # res = response.json()
562 # res['services'][0]['operational-state'],
566 # # Modify 'test-new' state
567 # def test_10_modify_service_state(self):
568 # url = ("{}/operations/servicehandler:service-state-modify"
569 # .format(self.restconf_baseurl))
571 # "service-name": "test-new",
572 # "operational-state": "outOfService"
575 # headers = {'content-type': 'application/json'}
576 # response = requests.request(
577 # "POST", url, data=json.dumps(data), headers=headers,
578 # auth=('admin', 'admin'))
579 # res = response.json()
580 # self.assertIn('Service state modified',
581 # res['output']['configuration-response-common']['response-message'])
584 # # get new service 'test-new' state
585 # def test_11_get_service(self):
586 # url = ("{}/operational/org-openroadm-service:service-list/services/test-new"
587 # .format(self.restconf_baseurl))
588 # headers = {'content-type': 'application/json',
589 # "Accept": "application/json"}
590 # response = requests.request(
591 # "GET", url, headers=headers, auth=('admin', 'admin'))
592 # res = response.json()
594 # res['services'][0]['operational-state'],
598 # # restore service 'test-new'
599 # def test_12_restore_service(self):
600 # url = ("{}/operations/org-openroadm-service:service-restoration"
601 # .format(self.restconf_baseurl))
603 # "service-name": "test-new",
604 # "option": "permanent"
607 # headers = {'content-type': 'application/json'}
608 # response = requests.request(
609 # "POST", url, data=json.dumps(data), headers=headers,
610 # auth=('admin', 'admin'))
611 # res = response.json()
612 # self.assertIn('in progress',
613 # res['output']['status-message'])
616 # # get new service 'test-new' state
617 # def test_13_get_service(self):
618 # url = ("{}/operational/org-openroadm-service:service-list/services/test-new"
619 # .format(self.restconf_baseurl))
620 # headers = {'content-type': 'application/json',
621 # "Accept": "application/json"}
622 # response = requests.request(
623 # "GET", url, headers=headers, auth=('admin', 'admin'))
624 # res = response.json()
626 # res['services'][0]['operational-state'],
631 def test_12_delete_service(self):
632 url = ("{}/operations/org-openroadm-service:service-delete"
633 .format(self.restconf_baseurl))
635 "sdnc-request-header": {
636 "request-id": "e3028bae-a90f-4ddd-a83f-cf224eba0e58",
637 "rpc-action": "service-delete",
638 "request-system-id": "appname",
639 "notification-url": "http://localhost:8585/NotificationServer/notify"
641 "service-delete-req-info": {
642 "service-name": "test",
643 "due-date": "2016-11-28T00:00:01Z",
644 "tail-retention": "no"
648 headers = {'content-type': 'application/json'}
649 response = requests.request(
650 "POST", url, data=json.dumps(data), headers=headers,
651 auth=('admin', 'admin'))
652 self.assertEqual(response.status_code, requests.codes.ok)
653 res = response.json()
654 self.assertIn('Renderer service delete in progress',
655 res['output']['configuration-response-common']['response-message'])
658 # Verify 'test' service deleted
659 def test_13_get_service(self):
660 url = ("{}/operational/org-openroadm-service:service-list/services/test"
661 .format(self.restconf_baseurl))
662 headers = {'content-type': 'application/json',
663 "Accept": "application/json"}
664 response = requests.request(
665 "GET", url, headers=headers, auth=('admin', 'admin'))
666 self.assertEqual(response.status_code, 404)
669 # Create Temp Service 'ASATT1234567' with correct parameters
670 def test_14_create_temp_service(self):
671 url = ("{}/operations/org-openroadm-service:temp-service-create"
672 .format(self.restconf_baseurl))
675 "sdnc-request-header": {
676 "request-id": "e3028bae-a90f-4ddd-a83f-cf224eba0e58",
677 "rpc-action": "temp-service-create",
678 "request-system-id": "appname",
679 "notification-url": "http://localhost:8585/NotificationServer/notify"
681 "common-id": "ASATT1234567",
682 "connection-type": "infrastructure",
684 "service-rate": "100",
686 "service-format": "Ethernet",
687 "clli": "SNJSCAMCJP8",
690 "port-device-name": "ROUTER_SNJSCAMCJP8_000000.00_00",
691 "port-type": "router",
692 "port-name": "Gigabit Ethernet_Tx.ge-5/0/0.0",
693 "port-rack": "000000.00",
697 "lgx-device-name": "LGX Panel_SNJSCAMCJP8_000000.00_00",
698 "lgx-port-name": "LGX Back.3",
699 "lgx-port-rack": "000000.00",
700 "lgx-port-shelf": "00"
705 "port-device-name": "ROUTER_SNJSCAMCJP8_000000.00_00",
706 "port-type": "router",
707 "port-name": "Gigabit Ethernet_Rx.ge-5/0/0.0",
708 "port-rack": "000000.00",
712 "lgx-device-name": "LGX Panel_SNJSCAMCJP8_000000.00_00",
713 "lgx-port-name": "LGX Back.4",
714 "lgx-port-rack": "000000.00",
715 "lgx-port-shelf": "00"
721 "service-rate": "100",
723 "service-format": "Ethernet",
724 "clli": "SNJSCAMCJT4",
727 "port-device-name": "ROUTER_SNJSCAMCJT4_000000.00_00",
728 "port-type": "router",
729 "port-name": "Gigabit Ethernet_Tx.ge-1/0/0.0",
730 "port-rack": "000000.00",
734 "lgx-device-name": "LGX Panel_SNJSCAMCJT4_000000.00_00",
735 "lgx-port-name": "LGX Back.29",
736 "lgx-port-rack": "000000.00",
737 "lgx-port-shelf": "00"
742 "port-device-name": "ROUTER_SNJSCAMCJT4_000000.00_00",
743 "port-type": "router",
744 "port-name": "Gigabit Ethernet_Rx.ge-1/0/0.0",
745 "port-rack": "000000.00",
749 "lgx-device-name": "LGX Panel_SNJSCAMCJT4_000000.00_00",
750 "lgx-port-name": "LGX Back.30",
751 "lgx-port-rack": "000000.00",
752 "lgx-port-shelf": "00"
757 "due-date": "2016-11-28T00:00:01Z",
758 "operator-contact": "pw1234"
761 headers = {'content-type': 'application/json',
762 "Accept": "application/json"}
763 response = requests.request(
764 "POST", url, data=json.dumps(data), headers=headers,
765 auth=('admin', 'admin'))
766 self.assertEqual(response.status_code, requests.codes.ok)
767 res = response.json()
768 self.assertIn('PCE calculation in progress',
769 res['output']['configuration-response-common']['response-message'])
773 # Create Temp Service not compliant with no common-id
774 def test_15_create_temp_service(self):
775 url = ("{}/operations/org-openroadm-service:temp-service-create"
776 .format(self.restconf_baseurl))
779 "sdnc-request-header": {
780 "request-id": "e3028bae-a90f-4ddd-a83f-cf224eba0e58",
781 "rpc-action": "temp-service-create",
782 "request-system-id": "appname",
783 "notification-url": "http://localhost:8585/NotificationServer/notify"
785 "connection-type": "infrastructure",
787 "service-rate": "100",
789 "service-format": "Ethernet",
790 "clli": "SNJSCAMCJP8",
793 "port-device-name": "ROUTER_SNJSCAMCJP8_000000.00_00",
794 "port-type": "router",
795 "port-name": "Gigabit Ethernet_Tx.ge-5/0/0.0",
796 "port-rack": "000000.00",
800 "lgx-device-name": "LGX Panel_SNJSCAMCJP8_000000.00_00",
801 "lgx-port-name": "LGX Back.3",
802 "lgx-port-rack": "000000.00",
803 "lgx-port-shelf": "00"
808 "port-device-name": "ROUTER_SNJSCAMCJP8_000000.00_00",
809 "port-type": "router",
810 "port-name": "Gigabit Ethernet_Rx.ge-5/0/0.0",
811 "port-rack": "000000.00",
815 "lgx-device-name": "LGX Panel_SNJSCAMCJP8_000000.00_00",
816 "lgx-port-name": "LGX Back.4",
817 "lgx-port-rack": "000000.00",
818 "lgx-port-shelf": "00"
824 "service-rate": "100",
826 "service-format": "Ethernet",
827 "clli": "SNJSCAMCJT4",
830 "port-device-name": "ROUTER_SNJSCAMCJT4_000000.00_00",
831 "port-type": "router",
832 "port-name": "Gigabit Ethernet_Tx.ge-1/0/0.0",
833 "port-rack": "000000.00",
837 "lgx-device-name": "LGX Panel_SNJSCAMCJT4_000000.00_00",
838 "lgx-port-name": "LGX Back.29",
839 "lgx-port-rack": "000000.00",
840 "lgx-port-shelf": "00"
845 "port-device-name": "ROUTER_SNJSCAMCJT4_000000.00_00",
846 "port-type": "router",
847 "port-name": "Gigabit Ethernet_Rx.ge-1/0/0.0",
848 "port-rack": "000000.00",
852 "lgx-device-name": "LGX Panel_SNJSCAMCJT4_000000.00_00",
853 "lgx-port-name": "LGX Back.30",
854 "lgx-port-rack": "000000.00",
855 "lgx-port-shelf": "00"
860 "due-date": "2016-11-28T00:00:01Z",
861 "operator-contact": "pw1234"
864 headers = {'content-type': 'application/json',
865 "Accept": "application/json"}
866 response = requests.request(
867 "POST", url, data=json.dumps(data), headers=headers,
868 auth=('admin', 'admin'))
869 self.assertEqual(response.status_code, requests.codes.ok)
870 res = response.json()
871 self.assertIn('Service Name (common-id for Temp service) is not set',
872 res['output']['configuration-response-common']['response-message'])
875 # Get 'ASATT1234567' temp service created
876 def test_16_get_temp_service(self):
877 url = ("{}/operational/org-openroadm-service:temp-service-list/services/ASATT1234567"
878 .format(self.restconf_baseurl))
879 headers = {'content-type': 'application/json',
880 "Accept": "application/json"}
881 response = requests.request(
882 "GET", url, headers=headers, auth=('admin', 'admin'))
883 self.assertEqual(response.status_code, requests.codes.ok)
884 res = response.json()
886 res['services'][0]['administrative-state'],
890 # get non existing service
891 def test_17_get_temp_service(self):
892 url = ("{}/operational/org-openroadm-service:temp-service-list/services/test1"
893 .format(self.restconf_baseurl))
894 headers = {'content-type': 'application/json',
895 "Accept": "application/json"}
896 response = requests.request(
897 "GET", url, headers=headers, auth=('admin', 'admin'))
898 self.assertEqual(response.status_code, 404)
901 # Delete temp service
902 def test_18_delete_temp_service(self):
903 url = ("{}/operations/org-openroadm-service:temp-service-delete"
904 .format(self.restconf_baseurl))
906 "common-id": "ASATT1234567"
909 headers = {'content-type': 'application/json'}
910 response = requests.request(
911 "POST", url, data=json.dumps(data), headers=headers,
912 auth=('admin', 'admin'))
913 self.assertEqual(response.status_code, requests.codes.ok)
914 res = response.json()
915 self.assertIn('Renderer service delete in progress',
916 res['output']['configuration-response-common']['response-message'])
919 # Verify 'test' service deleted
920 def test_19_verify_temp_service_deleted(self):
921 url = ("{}/operational/org-openroadm-service:service-list/services/ASATT1234567"
922 .format(self.restconf_baseurl))
923 headers = {'content-type': 'application/json',
924 "Accept": "application/json"}
925 response = requests.request(
926 "GET", url, headers=headers, auth=('admin', 'admin'))
927 self.assertEqual(response.status_code, 404)
931 if __name__ == "__main__":
932 unittest.main(verbosity=2)