aboutsummaryrefslogtreecommitdiffstats
path: root/tests/dcaegen2/prh-testcases/resources/simulator/DMaaP.py
blob: 5ec601f613f14d7d0ff2c29479627270349f4ed4 (plain)
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_()