summaryrefslogtreecommitdiffstats
path: root/conf/CA/clean.sh
blob: 3df61082118a472a4571010837f0d947575884a7 (plain)
1
rm -Rf private certs newcerts index* serial* intermediateCAs
me.Namespace */ .highlight .nx { color: #a6e22e } /* Name.Other */ .highlight .py { color: #f8f8f2 } /* Name.Property */ .highlight .nt { color: #f92672 } /* Name.Tag */ .highlight .nv { color: #f8f8f2 } /* Name.Variable */ .highlight .ow { color: #f92672 } /* Operator.Word */ .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ .highlight .mb { color: #ae81ff } /* Literal.Number.Bin */ .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ .highlight .sa { color: #e6db74 } /* Literal.String.Affix */ .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ .highlight .sc { color: #e6db74 } /* Literal.String.Char */ .highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */ .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ .highlight .se { color: #ae81ff } /* Literal.String.Escape */ .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ .highlight .sx { color: #e6db74 } /* Literal.String.Other */ .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #a6e22e } /* Name.Function.Magic */ .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
import logging
import json
import sys
import re
import time
from http.server import BaseHTTPRequestHandler
from os.path import basename
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('AAI-simulator-logger')

AAI_RESOURCE_NOT_FOUND = b'{}'

pnf_entries = {}
patched_pnf = AAI_RESOURCE_NOT_FOUND
created_logical_link = AAI_RESOURCE_NOT_FOUND
service_instance = AAI_RESOURCE_NOT_FOUND

class AAISetup(BaseHTTPRequestHandler):

    def do_GET(self):
        try:
            if re.search('/setup/patched_pnf', self.path):
                httpServerLib.set_response_200_ok(self, payload = patched_pnf)
                logger.debug('AAISetup GET /setup/patched_pnf -> 200 OK')
            elif re.search('/verify/logical-link', self.path):
                httpServerLib.set_response_200_ok(self, payload = created_logical_link)
                logger.debug('AAISetup GET /verify/logical_link -> 200 OK')
            else:
                httpServerLib.set_response_404_not_found(self)
                logger.info('AAISetup 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/add_pnf_entry', self.path):
                pnf_entry = httpServerLib.get_payload(self)
                pnf_name = json.loads(pnf_entry).get("pnf-name")
                if pnf_name == None:
                    raise Exception("Invalid PNF entry, could not extract `pnf-name`")

                global pnf_entries
                pnf_entries[pnf_name] = pnf_entry

                httpServerLib.set_response_200_ok(self)
                logger.debug('AAISetup PUT /setup/add_pnf_entry [' + pnf_name + '] -> 200 OK')
            elif re.search('/setup/add_service_instace', self.path):
                service_instance_payload = httpServerLib.get_payload(self)
                global service_instance
                service_instance = json.loads(service_instance_payload)
                httpServerLib.set_response_200_ok(self)
                logger.debug('AAISetup PUT /setup/add_service_instace -> 200 OK')
            elif re.search('/setup/add_logical_link', self.path):
                logical_link_payload = httpServerLib.get_payload(self)
                logical_link_name = json.loads(logical_link_payload).get("link-name")
                if logical_link_name == None:
                    raise Exception("Invalid logical link entry, could not extract `link-name`")

                global created_logical_link
                created_logical_link = logical_link_payload

                httpServerLib.set_response_200_ok(self)
                logger.debug('AAISetup PUT /setup/add_logical_link -> 200 OK')

            elif re.search('/set_pnf', self.path):
                pnf_name = httpServerLib.get_payload(self).decode()
                pnf_entries[pnf_name] = AAI_RESOURCE_NOT_FOUND
                httpServerLib.set_response_200_ok(self)
            else:
                httpServerLib.set_response_404_not_found(self)
                logger.info('AAISetup 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 pnf_entries
                global patched_pnf
                global created_logical_link
                global service_instance
                pnf_entries = {}
                patched_pnf = AAI_RESOURCE_NOT_FOUND
                created_logical_link = AAI_RESOURCE_NOT_FOUND
                service_instance = AAI_RESOURCE_NOT_FOUND

                httpServerLib.set_response_200_ok(self)
                logger.debug('AAISetup POST /reset -> 200 OK')
            else:
                httpServerLib.set_response_404_not_found(self)
                logger.info('AAISetup POST ' + self.path + ' -> 404 Not found')
        except Exception as e:
            logger.error(e)
            httpServerLib.set_response_500_server_error(self)

class AAIHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        try:
            if re.search('/aai/v12/network/pnfs/pnf/[^/]*$', self.path):
                pnf_name = basename(self.path)
                if pnf_name in pnf_entries:
                    httpServerLib.set_response_200_ok(self, payload = pnf_entries[pnf_name])
                    logger.debug('AAIHandler GET /aai/v12/network/pnfs/pnf/' + pnf_name + ' -> 200 OK')
                else:
                    httpServerLib.set_response_404_not_found(self)
                    logger.info('AAIHandler GET /aai/v12/network/pnfs/pnf/' + pnf_name + ' -> 404 Not found, actual entries: ' + str(pnf_entries.keys()))
            elif re.search('/aai/v12/network/logical-links/logical-link/[^/]*$', self.path):
                logical_link_name = basename(self.path)
                if json.loads(created_logical_link).get("link-name") == logical_link_name:
                    httpServerLib.set_response_200_ok(self, payload = created_logical_link)
                    logger.debug('AAIHandler GET /aai/v12/network/logical-links/logical-link/' + logical_link_name + ' -> 200 OK')
                else:
                    httpServerLib.set_response_404_not_found(self)
                    logger.info('AAIHandler GET /aai/v12/network/logical-links/logical-link/' + logical_link_name + ' -> 404 Not found, actual link: ' + created_logical_link)
            elif re.search('aai/v12/network/pnfs/pnf/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFW/service-instances/service-instance/bbs_service', self.path):
                httpServerLib.set_response_200_ok(self, payload = json.dumps(service_instance).encode('utf-8'))
                logger.debug('AAIHandler GET aai/v12/network/pnfs/pnf/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFW/service-instances/service-instance/bbs_service -> 200 OK')
            else:
                httpServerLib.set_response_404_not_found(self)
                logger.info('AAIHandler GET ' + self.path + ' -> 404 Not found')
        except Exception as e:
            logger.error(e)
            httpServerLib.set_response_500_server_error(self)

    def do_PATCH(self):
        try:
            if re.search('/aai/v12/network/pnfs/pnf/[^/]*$', self.path):
                pnf_name = basename(self.path)
                if pnf_name in pnf_entries:
                    global patched_pnf
                    patched_pnf = httpServerLib.get_payload(self)

                    httpServerLib.set_response_200_ok(self)
                    logger.debug('AAIHandler PATCH /aai/v12/network/pnfs/pnf/' + pnf_name + ' -> 200 OK')
                else:
                    httpServerLib.set_response_404_not_found(self)
                    logger.info('AAIHandler PATCH /aai/v12/network/pnfs/pnf/' + pnf_name + ' -> 404 Not found, actual entries: ' + str(pnf_entries.keys()))
            else:
                httpServerLib.set_response_404_not_found(self)
                logger.info('AAIHandler PATCH ' + 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('/aai/v12/network/logical-links/logical-link/[^/]*$', self.path):
                global created_logical_link
                created_logical_link = httpServerLib.get_payload(self)

                httpServerLib.set_response_200_ok(self)

                logical_link_name = basename(self.path)
                logger.debug('AAIHandler PUT /aai/v12/network/logical-links/logical-link/' + logical_link_name + ' -> 200 OK')
            else:
                httpServerLib.set_response_404_not_found(self)
                logger.info('AAIHandler PUT ' + self.path + ' -> 404 Not found')
        except Exception as e:
            logger.error(e)
            httpServerLib.set_response_500_server_error(self)

    def do_DELETE(self):
        try:
            if re.search('/aai/v12/network/logical-links/logical-link/[^/]*\?resource-version=\d+$', self.path):
                httpServerLib.set_response_200_ok(self)
                logical_link_name = re.search('.+?(?=\?)', basename(self.path)).group(0)

                global created_logical_link
                if json.loads(created_logical_link).get("link-name") == logical_link_name:
                    created_logical_link = AAI_RESOURCE_NOT_FOUND

                logger.debug('AAIHandler DELETE /aai/v12/network/logical-links/logical-link/' + logical_link_name + ' -> 200 OK')
            else:
                httpServerLib.set_response_404_not_found(self)
                logger.info('AAIHandler DELETE ' + self.path + ' -> 404 Not found')
        except Exception as e:
            logger.error(e)
            httpServerLib.set_response_500_server_error(self)

def _main_(handler_class=AAIHandler, protocol="HTTP/1.0"):
    handler_class.protocol_version = protocol
    httpServerLib.start_http_endpoint(3333, AAIHandler)
    httpServerLib.start_https_endpoint(3334, AAIHandler, keyfile="certs/aai.key", certfile="certs/aai.crt", ca_certs="certs/root.crt")
    httpServerLib.start_http_endpoint(3335, AAISetup)
    while 1:
        time.sleep(10)


if __name__ == '__main__':
    _main_()