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
123
124
125
126
127
128
129
130
131
132
133
134
|
import logging
import re
import sys
import time
import json
from http.server import BaseHTTPRequestHandler
import httpServerLib
ch = logging.StreamHandler(sys.stdout)
handlers = [ch]
logging.basicConfig(
level=logging.DEBUG,
format='[%(asctime)s] {%(filename)s:%(lineno)d} %(levelname)s - %(message)s',
handlers=handlers
)
logger = logging.getLogger('DMaaP-simulator-logger')
DMAAP_EMPTY = b'[]'
event_ves = DMAAP_EMPTY
event_pnf_ready = DMAAP_EMPTY
event_pnf_update = DMAAP_EMPTY
class DmaapSetup(BaseHTTPRequestHandler):
def do_GET(self):
try:
if re.search('/verify/pnf_ready', self.path):
global event_pnf_ready
httpServerLib.set_response_200_ok(self, payload = event_pnf_ready)
logger.debug('DmaapSetup GET /verify/pnf_ready -> 200 OK')
elif re.search('/verify/pnf_update', self.path):
global event_pnf_update
httpServerLib.set_response_200_ok(self, payload = event_pnf_update)
logger.debug('DmaapSetup GET /verify/pnf_ready -> 200 OK')
else:
httpServerLib.set_response_404_not_found(self)
logger.info('DmaapSetup GET ' + self.path + ' -> 404 Not found')
except Exception as e:
logger.error(e)
httpServerLib.set_response_500_server_error(self)
def do_PUT(self):
try:
if re.search('/setup/ves_event', self.path):
global event_ves
event_ves = httpServerLib.get_payload(self)
httpServerLib.set_response_200_ok(self)
logger.debug('DmaapSetup PUT /setup/ves_event -> 200 OK, content: ' + event_ves.decode("utf-8"))
else:
httpServerLib.set_response_404_not_found(self)
logger.info('DmaapSetup PUT ' + self.path + ' -> 404 Not found')
except Exception as e:
logger.error(e)
httpServerLib.set_response_500_server_error(self)
def do_POST(self):
try:
if re.search('/reset', self.path):
global event_ves
global event_pnf_ready
global event_pnf_update
event_ves = DMAAP_EMPTY
event_pnf_ready = DMAAP_EMPTY
event_pnf_update = DMAAP_EMPTY
httpServerLib.set_response_200_ok(self)
logger.debug('DmaapSetup POST /reset -> 200 OK')
else:
httpServerLib.set_response_404_not_found(self)
logger.info('DmaapSetup POST ' + self.path + ' -> 404 Not found')
except Exception as e:
logger.error(e)
httpServerLib.set_response_500_server_error(self)
class DMaaPHandler(BaseHTTPRequestHandler):
def do_POST(self):
try:
if re.search('/events/unauthenticated.PNF_READY', self.path):
global event_pnf_ready
event_pnf_ready = httpServerLib.get_payload(self)
httpServerLib.set_response_200_ok(self)
logger.debug('DMaaPHandler POST /events/unauthenticated.PNF_READY -> 200, content: '
+ event_pnf_ready.decode("utf-8"))
elif re.search('/events/unauthenticated.PNF_UPDATE', self.path):
global event_pnf_update
event_pnf_update = httpServerLib.get_payload(self)
httpServerLib.set_response_200_ok(self)
logger.debug('DMaaPHandler POST /events/unauthenticated.PNF_READY -> 200, content: '
+ event_pnf_update.decode("utf-8"))
else:
httpServerLib.set_response_404_not_found(self)
logger.info('DMaaPHandler POST ' + self.path + ' -> 404 Not found')
except Exception as e:
logger.error(e)
httpServerLib.set_response_500_server_error(self)
def do_GET(self):
try:
if re.search('/events/unauthenticated.VES_PNFREG_OUTPUT/OpenDCAE-c12/c12', self.path):
global event_ves
httpServerLib.set_response_200_ok(self, payload=self.pack_event_json_as_quoted_string_into_array(event_ves))
logger.debug(
'DMaaPHandler GET /events/unauthenticated.VES_PNFREG_OUTPUT/OpenDcae-c12/c12 -> 200, content: '
+ event_ves.decode("utf-8"))
event_ves = DMAAP_EMPTY
logger.debug('DMaaPHandler GET /events/unauthenticated.VES_PNFREG_OUTPUT/OpenDcae-c12/c12 -> 200')
else:
httpServerLib.set_response_404_not_found(self)
logger.info('DMaaPHandler GET ' + self.path + ' -> 404 Not found')
except Exception as e:
logger.error(e)
httpServerLib.set_response_500_server_error(self)
def pack_event_json_as_quoted_string_into_array(self, event):
if event == DMAAP_EMPTY:
return DMAAP_EMPTY
else:
decoded = event_ves.decode("utf-8")
packed = '[' + json.dumps(decoded) + ']'
logger.info("prepared response: " + packed)
return packed.encode()
def _main_(handler_class=DMaaPHandler, protocol="HTTP/1.0"):
handler_class.protocol_version = protocol
httpServerLib.start_https_endpoint(2223, DMaaPHandler, keyfile="certs/dmaap-mr.key", certfile="certs/dmaap-mr.crt", ca_certs="certs/root.crt")
httpServerLib.start_http_endpoint(2224, DmaapSetup)
while 1:
time.sleep(10)
if __name__ == '__main__':
_main_()
|