6 from http.server import BaseHTTPRequestHandler
7 from os.path import basename
10 ch = logging.StreamHandler(sys.stdout)
14 format='[%(asctime)s] {%(filename)s:%(lineno)d} %(levelname)s - %(message)s',
18 logger = logging.getLogger('AAI-simulator-logger')
20 AAI_RESOURCE_NOT_FOUND = b'{}'
23 patched_pnf = AAI_RESOURCE_NOT_FOUND
24 created_logical_link = AAI_RESOURCE_NOT_FOUND
26 class AAISetup(BaseHTTPRequestHandler):
30 if re.search('/setup/patched_pnf', self.path):
31 httpServerLib.set_response_200_ok(self, payload = patched_pnf)
32 logger.debug('AAISetup GET /setup/patched_pnf -> 200 OK')
33 elif re.search('/setup/created_logical_link', self.path):
34 httpServerLib.set_response_200_ok(self, payload = created_logical_link)
35 logger.debug('AAISetup GET /setup/created_logical_link -> 200 OK')
37 httpServerLib.set_response_404_not_found(self)
38 logger.info('AAISetup GET ' + self.path + ' -> 404 Not found')
39 except Exception as e:
41 httpServerLib.set_response_500_server_error(self)
45 if re.search('/setup/add_pnf_entry', self.path):
46 pnf_entry = httpServerLib.get_payload(self)
47 pnf_name = json.loads(pnf_entry).get("pnf-name")
49 raise Exception("Invalid PNF entry, could not extract `pnf-name`")
52 pnf_entries[pnf_name] = pnf_entry
54 httpServerLib.set_response_200_ok(self)
55 logger.debug('AAISetup PUT /setup/add_pnf_entry [' + pnf_name + '] -> 200 OK')
56 elif re.search('/set_pnf', self.path):
57 pnf_name = httpServerLib.get_payload(self).decode()
58 pnf_entries[pnf_name] = AAI_RESOURCE_NOT_FOUND
59 httpServerLib.set_response_200_ok(self)
61 httpServerLib.set_response_404_not_found(self)
62 logger.info('AAISetup PUT ' + self.path + ' -> 404 Not found')
63 except Exception as e:
65 httpServerLib.set_response_500_server_error(self)
69 if re.search('/reset', self.path):
72 global created_logical_link
74 patched_pnf = AAI_RESOURCE_NOT_FOUND
75 created_logical_link = AAI_RESOURCE_NOT_FOUND
77 httpServerLib.set_response_200_ok(self)
78 logger.debug('AAISetup POST /reset -> 200 OK')
80 httpServerLib.set_response_404_not_found(self)
81 logger.info('AAISetup POST ' + self.path + ' -> 404 Not found')
82 except Exception as e:
84 httpServerLib.set_response_500_server_error(self)
86 class AAIHandler(BaseHTTPRequestHandler):
90 if re.search('/aai/v12/network/pnfs/pnf/[^/]*$', self.path):
91 pnf_name = basename(self.path)
92 if pnf_name in pnf_entries:
93 httpServerLib.set_response_200_ok(self, payload = pnf_entries[pnf_name])
94 logger.debug('AAIHandler GET /aai/v12/network/pnfs/pnf/' + pnf_name + ' -> 200 OK')
96 httpServerLib.set_response_404_not_found(self)
97 logger.info('AAIHandler GET /aai/v12/network/pnfs/pnf/' + pnf_name + ' -> 404 Not found, actual entries: ' + str(pnf_entries.keys()))
99 httpServerLib.set_response_404_not_found(self)
100 logger.info('AAIHandler GET ' + self.path + ' -> 404 Not found')
101 except Exception as e:
103 httpServerLib.set_response_500_server_error(self)
107 if re.search('/aai/v12/network/pnfs/pnf/[^/]*$', self.path):
108 pnf_name = basename(self.path)
109 if pnf_name in pnf_entries:
111 patched_pnf = httpServerLib.get_payload(self)
113 httpServerLib.set_response_200_ok(self)
114 logger.debug('AAIHandler PATCH /aai/v12/network/pnfs/pnf/' + pnf_name + ' -> 200 OK')
116 httpServerLib.set_response_404_not_found(self)
117 logger.info('AAIHandler PATCH /aai/v12/network/pnfs/pnf/' + pnf_name + ' -> 404 Not found, actual entries: ' + str(pnf_entries.keys()))
119 httpServerLib.set_response_404_not_found(self)
120 logger.info('AAIHandler PATCH ' + self.path + ' -> 404 Not found')
121 except Exception as e:
123 httpServerLib.set_response_500_server_error(self)
127 if re.search('/aai/v12/network/logical-links/logical-link/[^/]*$', self.path):
128 global created_logical_link
129 created_logical_link = httpServerLib.get_payload(self)
131 httpServerLib.set_response_200_ok(self)
132 logger.debug('AAIHandler PUT /aai/v12/network/logical-links/logical-link/' + created_logical_link + ' -> 200 OK')
134 httpServerLib.set_response_404_not_found(self)
135 logger.info('AAIHandler PUT ' + self.path + ' -> 404 Not found')
136 except Exception as e:
138 httpServerLib.set_response_500_server_error(self)
141 def _main_(handler_class=AAIHandler, protocol="HTTP/1.0"):
142 handler_class.protocol_version = protocol
143 httpServerLib.start_http_endpoint(3333, AAIHandler)
144 httpServerLib.start_https_endpoint(3334, AAIHandler, keyfile="certs/org.onap.aai.key", certfile="certs/aai_aai.onap.org.cer", ca_certs="certs/ca_local_0.cer")
145 httpServerLib.start_http_endpoint(3335, AAISetup)
150 if __name__ == '__main__':