From 6ea29d2ac1c5c9d35ceebb233c25c05c40c168c7 Mon Sep 17 00:00:00 2001 From: Ling Zhu <lz0002@surrey.ac.uk> Date: Wed, 1 Dec 2021 14:05:38 +0000 Subject: [PATCH] Add 5Genesis usecase --- deployment/apex-2.2.0.yaml | 36 ++++++ deployment/{apex.yaml => apex-2.5.3.yaml} | 6 +- deployment/apex-5genesis-2.2.0.yaml | 36 ++++++ deployment/customisation/Dockerfile | 21 ++-- deployment/customisation/v253_Dockerfile | 33 ++++++ deployment/noc-apex.yaml | 77 ------------- deployment/onap-apex.yaml | 77 ------------- deployment/usecase-5genesis/Dockerfile | 32 ++++++ .../usecase-5genesis/config/config.json | 61 +++++++++++ .../events/Example_Event.json | 8 ++ .../events/trigger-event.json | 9 ++ .../usecase-5genesis/logic/Always_Serve_TL.js | 26 +++++ .../usecase-5genesis/logic/Example_TL.js | 20 ++++ deployment/usecase-5genesis/logs/logback.xml | 103 ++++++++++++++++++ .../usecase-5genesis/policy-apex/Policy.apex | 63 +++++++++++ deployment/usecase-5genesis/run.bat | 5 + .../usecase-5genesis/scripts/REST_Tester.py | 74 +++++++++++++ deployment/usecase-5genesis/scripts/start.sh | 2 + .../usecase-5genesis/scripts/startTest.sh | 2 + .../tosca-template/ToscaTemplate.json | 17 +++ 20 files changed, 541 insertions(+), 167 deletions(-) create mode 100644 deployment/apex-2.2.0.yaml rename deployment/{apex.yaml => apex-2.5.3.yaml} (93%) create mode 100644 deployment/apex-5genesis-2.2.0.yaml create mode 100644 deployment/customisation/v253_Dockerfile delete mode 100644 deployment/noc-apex.yaml delete mode 100644 deployment/onap-apex.yaml create mode 100644 deployment/usecase-5genesis/Dockerfile create mode 100644 deployment/usecase-5genesis/config/config.json create mode 100644 deployment/usecase-5genesis/events/Example_Event.json create mode 100644 deployment/usecase-5genesis/events/trigger-event.json create mode 100644 deployment/usecase-5genesis/logic/Always_Serve_TL.js create mode 100644 deployment/usecase-5genesis/logic/Example_TL.js create mode 100644 deployment/usecase-5genesis/logs/logback.xml create mode 100644 deployment/usecase-5genesis/policy-apex/Policy.apex create mode 100644 deployment/usecase-5genesis/run.bat create mode 100644 deployment/usecase-5genesis/scripts/REST_Tester.py create mode 100755 deployment/usecase-5genesis/scripts/start.sh create mode 100644 deployment/usecase-5genesis/scripts/startTest.sh create mode 100644 deployment/usecase-5genesis/tosca-template/ToscaTemplate.json diff --git a/deployment/apex-2.2.0.yaml b/deployment/apex-2.2.0.yaml new file mode 100644 index 0000000..fae5f82 --- /dev/null +++ b/deployment/apex-2.2.0.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: apex-220 + labels: + app: apex-220 +spec: + selector: + matchLabels: + app: apex-220 + replicas: 1 + template: + metadata: + labels: + app: apex-220 + spec: + hostNetwork: true + containers: + - name: apex-220 + #image: onap/policy-apex-pdp:2.2.0 + image: gitlab-registry.eps.surrey.ac.uk/noc/apex:2.2.0a + command: ["sh", "-c", "while true; do sleep 3600; done"] + #command: ["sh", "-c", "apexApps.sh engine -c examples/config/SampleDomain/Stdin2StdoutJsonEventJavascript.json"] + #command: ["sh", "-c", "apexApps.sh engine -c examples/config/MyFirstPolicy/1/MyFirstPolicyConfig"] + ports: + - name: http + containerPort: 8080 + - name: ui-deploy + containerPort: 12345 + - name: ui-web + containerPort: 18989 + - name: event-in + containerPort: 23324 + imagePullPolicy: IfNotPresent + restartPolicy: Always + diff --git a/deployment/apex.yaml b/deployment/apex-2.5.3.yaml similarity index 93% rename from deployment/apex.yaml rename to deployment/apex-2.5.3.yaml index c3f69aa..cffeac1 100644 --- a/deployment/apex.yaml +++ b/deployment/apex-2.5.3.yaml @@ -2,7 +2,7 @@ kind: Service apiVersion: v1 metadata: - name: apex-svc + name: apex-253-svc spec: selector: app: apex @@ -45,7 +45,7 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: - name: apex + name: apex-253 labels: app: apex spec: @@ -60,7 +60,7 @@ spec: spec: containers: - name: apex - image: gitlab-registry.eps.surrey.ac.uk/noc/apex:example + image: gitlab-registry.eps.surrey.ac.uk/noc/apex:2.5.3b-noc #command: ["sh", "-c", "while true; do sleep 3600; done"] command: ["sh", "-c", "/apex/start.sh"] ports: diff --git a/deployment/apex-5genesis-2.2.0.yaml b/deployment/apex-5genesis-2.2.0.yaml new file mode 100644 index 0000000..844cee3 --- /dev/null +++ b/deployment/apex-5genesis-2.2.0.yaml @@ -0,0 +1,36 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: apex-220 + labels: + app: apex-220 +spec: + selector: + matchLabels: + app: apex-220 + replicas: 1 + template: + metadata: + labels: + app: apex-220 + spec: + hostNetwork: true + containers: + - name: apex-220 + #image: onap/policy-apex-pdp:2.2.0 + image: gitlab-registry.eps.surrey.ac.uk/noc/apex:5genesis + command: ["sh", "-c", "while true; do sleep 3600; done"] + #command: ["sh", "-c", "apexApps.sh engine -c examples/config/SampleDomain/Stdin2StdoutJsonEventJavascript.json"] + #command: ["sh", "-c", "apexApps.sh engine -c examples/config/MyFirstPolicy/1/MyFirstPolicyConfig"] + ports: + - name: http + containerPort: 8080 + - name: ui-deploy + containerPort: 12345 + - name: ui-web + containerPort: 18989 + - name: event-in + containerPort: 23324 + imagePullPolicy: Always + restartPolicy: Always + diff --git a/deployment/customisation/Dockerfile b/deployment/customisation/Dockerfile index b1a8d64..ab8aebc 100644 --- a/deployment/customisation/Dockerfile +++ b/deployment/customisation/Dockerfile @@ -1,7 +1,7 @@ -FROM gitlab-registry.eps.surrey.ac.uk/noc/apex:2.5.3 -WORKDIR /apex +FROM onap/policy-apex-pdp:2.2.0 +WORKDIR /home/apexuser -USER root +USER apexuser COPY ./policy-apex/* ./policy-apex/ RUN mkdir -p policy-json #COPY ./policy-json/* ./policy-json/ @@ -10,9 +10,14 @@ COPY ./config/* ./config/ COPY ./logs/logback.xml /opt/app/policy/apex-pdp/etc/ COPY ./tosca-template/* ./tosca-template/ -COPY ./scripts/* ./ -RUN chmod +x ./start.sh +# Customise PS1 +RUN touch /home/apexuser/.bashrc +RUN echo "[ -z \"\$PS1\" ] && return">> /home/apexuser/.bashrc +RUN echo "PS1=\"\\[\\033[35m\\][\\u@\\h \\w]:\\[\\033[37m\\]\"">>/home/apexuser/.bashrc +#COPY ./scripts/* ./ +#RUN chmod +x ./start.sh # Add bash shell +USER root RUN apk update RUN apk upgrade RUN apk add bash @@ -20,14 +25,10 @@ RUN apk add bash-completion RUN apk add nano RUN apk add yajl-tools -# Customise PS1 -RUN touch /root/.bashrc -RUN echo "[ -z \"\$PS1\" ] && return">> /root/.bashrc -RUN echo "PS1=\"\\[\\033[35m\\][\\u@\\h \\w]:\\[\\033[37m\\]\"">>/root/.bashrc EXPOSE 12345 18989 23324 8080 -RUN apexCLIToscaEditor.sh -c policy-apex/Policy.apex -ot policy-json/Policy.json -l ./test.log -ac config/config.json -t ./tosca-template/ToscaTemplate.json +#RUN apexCLIToscaEditor.sh -c policy-apex/Policy.apex -ot policy-json/Policy.json -l ./test.log -ac config/config.json -t ./tosca-template/ToscaTemplate.json CMD ["./start.sh"] #CMD ["./startTest.sh"] diff --git a/deployment/customisation/v253_Dockerfile b/deployment/customisation/v253_Dockerfile new file mode 100644 index 0000000..b1a8d64 --- /dev/null +++ b/deployment/customisation/v253_Dockerfile @@ -0,0 +1,33 @@ +FROM gitlab-registry.eps.surrey.ac.uk/noc/apex:2.5.3 +WORKDIR /apex + +USER root +COPY ./policy-apex/* ./policy-apex/ +RUN mkdir -p policy-json +#COPY ./policy-json/* ./policy-json/ +COPY ./logic/* ./logic/ +COPY ./config/* ./config/ +COPY ./logs/logback.xml /opt/app/policy/apex-pdp/etc/ +COPY ./tosca-template/* ./tosca-template/ + +COPY ./scripts/* ./ +RUN chmod +x ./start.sh +# Add bash shell +RUN apk update +RUN apk upgrade +RUN apk add bash +RUN apk add bash-completion +RUN apk add nano +RUN apk add yajl-tools + +# Customise PS1 +RUN touch /root/.bashrc +RUN echo "[ -z \"\$PS1\" ] && return">> /root/.bashrc +RUN echo "PS1=\"\\[\\033[35m\\][\\u@\\h \\w]:\\[\\033[37m\\]\"">>/root/.bashrc + +EXPOSE 12345 18989 23324 8080 + +RUN apexCLIToscaEditor.sh -c policy-apex/Policy.apex -ot policy-json/Policy.json -l ./test.log -ac config/config.json -t ./tosca-template/ToscaTemplate.json +CMD ["./start.sh"] + +#CMD ["./startTest.sh"] diff --git a/deployment/noc-apex.yaml b/deployment/noc-apex.yaml deleted file mode 100644 index 3c3ea5d..0000000 --- a/deployment/noc-apex.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -kind: Service -apiVersion: v1 -metadata: - name: noc-apex-svc -spec: - selector: - app: noc-apex - ports: - - name: ui - protocol: "TCP" - # Port accessible inside cluster - port: 8080 - # Port to forward to inside the pod - targetPort: http - # Port accessible outside cluster - nodePort: 30080 - - name: tcp-1 - protocol: "TCP" - # Port accessible inside cluster - port: 12345 - # Port to forward to inside the pod - targetPort: tcp1 - # Port accessible outside cluster - nodePort: 32345 - - name: tcp-2 - protocol: "TCP" - # Port accessible inside cluster - port: 18989 - # Port to forward to inside the pod - targetPort: tcp2 - # Port accessible outside cluster - nodePort: 28989 - - name: tcp-3 - protocol: "TCP" - # Port accessible inside cluster - port: 23324 - # Port to forward to inside the pod - targetPort: tcp3 - # Port accessible outside cluster - nodePort: 23324 - type: NodePort #LoadBalancer ---- - -apiVersion: apps/v1 -kind: Deployment -metadata: - name: noc-apex - labels: - app: noc-apex -spec: - selector: - matchLabels: - app: noc-apex - replicas: 1 - template: - metadata: - labels: - app: noc-apex - spec: - containers: - - name: noc-apex - image: gitlab-registry.eps.surrey.ac.uk/noc/apex:2.5.3b-noc - #command: ["sh", "-c", "while true; do sleep 3600; done"] - command: ["sh", "-c", "/apex/start.sh"] - ports: - - name: http - containerPort: 8080 - - name: tcp1 - containerPort: 12345 - - name: tcp2 - containerPort: 18989 - - name: tcp3 - containerPort: 23324 - imagePullPolicy: IfNotPresent - restartPolicy: Always - diff --git a/deployment/onap-apex.yaml b/deployment/onap-apex.yaml deleted file mode 100644 index 0b78843..0000000 --- a/deployment/onap-apex.yaml +++ /dev/null @@ -1,77 +0,0 @@ ---- -kind: Service -apiVersion: v1 -metadata: - name: onap-apex-svc -spec: - selector: - app: onap-apex - ports: - - name: ui - protocol: "TCP" - # Port accessible inside cluster - port: 8080 - # Port to forward to inside the pod - targetPort: http - # Port accessible outside cluster - nodePort: 30080 - - name: tcp-1 - protocol: "TCP" - # Port accessible inside cluster - port: 12345 - # Port to forward to inside the pod - targetPort: tcp1 - # Port accessible outside cluster - nodePort: 32345 - - name: tcp-2 - protocol: "TCP" - # Port accessible inside cluster - port: 18989 - # Port to forward to inside the pod - targetPort: tcp2 - # Port accessible outside cluster - nodePort: 28989 - - name: tcp-3 - protocol: "TCP" - # Port accessible inside cluster - port: 23324 - # Port to forward to inside the pod - targetPort: tcp3 - # Port accessible outside cluster - nodePort: 23324 - type: NodePort #LoadBalancer ---- - -apiVersion: apps/v1 -kind: Deployment -metadata: - name: onap-apex - labels: - app: onap-apex -spec: - selector: - matchLabels: - app: onap-apex - replicas: 1 - template: - metadata: - labels: - app: onap-apex - spec: - containers: - - name: onap-apex - image: onap/policy-apex-pdp:2.2.0 - #command: ["sh", "-c", "while true; do sleep 3600; done"] - command: ["sh", "-c", "apexApps.sh engine -c examples/config/SampleDomain/Stdin2StdoutJsonEventJavascript.json"] - ports: - - name: http - containerPort: 8080 - - name: tcp1 - containerPort: 12345 - - name: tcp2 - containerPort: 18989 - - name: tcp3 - containerPort: 23324 - imagePullPolicy: IfNotPresent - restartPolicy: Always - diff --git a/deployment/usecase-5genesis/Dockerfile b/deployment/usecase-5genesis/Dockerfile new file mode 100644 index 0000000..bf40fb2 --- /dev/null +++ b/deployment/usecase-5genesis/Dockerfile @@ -0,0 +1,32 @@ +FROM onap/policy-apex-pdp:2.2.0 +WORKDIR /home/apexuser + +USER root +RUN apk update +RUN apk upgrade +RUN apk add bash +RUN apk add bash-completion +RUN apk add nano +RUN apk add yajl-tools + +USER apexuser +COPY --chown=apexuser:apexuser ./policy-apex/* ./policy-apex/ +RUN mkdir -p ./policy-json +#COPY ./policy-json/* ./policy-json/ +COPY --chown=apexuser:apexuser ./logic/* ./logic/ +COPY --chown=apexuser:apexuser ./config/* ./config/ +COPY --chown=apexuser:apexuser ./logs/logback.xml /opt/app/policy/apex-pdp/etc/ +COPY --chown=apexuser:apexuser ./tosca-template/* ./tosca-template/ + +COPY --chown=apexuser:apexuser ./scripts/* ./ + +RUN echo "[ -z \"\$PS1\" ] && return">> /home/apexuser/.bashrc +RUN echo "PS1=\"\\[\\033[35m\\][\\u@\\h \\w]:\\[\\033[37m\\]\"">>/home/apexuser/.bashrc + +EXPOSE 12345 18989 23324 8080 5000 + +RUN apexCLIEditor.sh -c policy-apex/Policy.apex -o policy-json/Policy.json +CMD ["./start.sh"] + +#CMD ["./startTest.sh"] +#CMD ["bash"] diff --git a/deployment/usecase-5genesis/config/config.json b/deployment/usecase-5genesis/config/config.json new file mode 100644 index 0000000..b15a84f --- /dev/null +++ b/deployment/usecase-5genesis/config/config.json @@ -0,0 +1,61 @@ +{ + "engineServiceParameters": { + "name": "MyApexEngine", + "version": "0.0.1", + "id": 45, + "instanceCount": 4, + "deploymentPort": 12345, + "policyModelFileName": "policy-json/Policy.json", + "engineParameters": { + "executorParameters": { + "JAVASCRIPT": { + "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters" + } + } + } + }, + "eventInputParameters": { + "FirstConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "RESTSERVER", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restserver.RestServerCarrierTechnologyParameters", + "parameters": { + "standalone": true, + "host": "0.0.0.0", + "port": 23324 + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + }, + "synchronousMode": true, + "synchronousPeer": "FirstProducer", + "synchronousTimeout": 2000 + } + }, + "eventOutputParameters": { + "FirstProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "RESTSERVER", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restserver.RestServerCarrierTechnologyParameters" + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + }, + "synchronousMode": true, + "synchronousPeer": "FirstConsumer", + "synchronousTimeout": 2000 + }, + "standardIOProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "FILE", + "parameters": { + "standardIo": true + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + } + } + } +} \ No newline at end of file diff --git a/deployment/usecase-5genesis/events/Example_Event.json b/deployment/usecase-5genesis/events/Example_Event.json new file mode 100644 index 0000000..ef38f0f --- /dev/null +++ b/deployment/usecase-5genesis/events/Example_Event.json @@ -0,0 +1,8 @@ +{ + "name": "Example_Event_Input", + "version": "0.0.1", + "nameSpace": "example.apex.event", + "source": "external", + "target": "apex", + "input": "Hello World" +} \ No newline at end of file diff --git a/deployment/usecase-5genesis/events/trigger-event.json b/deployment/usecase-5genesis/events/trigger-event.json new file mode 100644 index 0000000..7098b59 --- /dev/null +++ b/deployment/usecase-5genesis/events/trigger-event.json @@ -0,0 +1,9 @@ +{ + "name" : "Always_Serve", + "version" : "1.0", + "deployment_name" : "iperf_avr", + "replica" : 3, + "average_throughput" : 300, + "threshold": 100, + "time": 1638281567105 +} diff --git a/deployment/usecase-5genesis/logic/Always_Serve_TL.js b/deployment/usecase-5genesis/logic/Always_Serve_TL.js new file mode 100644 index 0000000..0449222 --- /dev/null +++ b/deployment/usecase-5genesis/logic/Always_Serve_TL.js @@ -0,0 +1,26 @@ +var logger = executor.logger; +var time = new Date(); + +logger.info("##START## Always_Serve_TL"); + +var deployment_name = executor.inFields.get("deployment_name"); +logger.info("~~deployment_name: " + deployment_name); +var replica = executor.inFields.get("replica"); +logger.info("~~replica: " + replica); +var average_throughput = executor.inFields.get("average_throughput"); +logger.info("~~average_throughput: " + average_throughput); +var threshold = executor.inFields.get("threshold"); +logger.info("~~threshold: " + threshold); +var time = executor.inFields.get("time"); +logger.info("~~time: " + time); + +// Do something here + +var result = "Increase the number of replica by 2"; + +executor.outFields.put("action", result); + +logger.info("##END## Always_Serve_TL"); + +var returnValue = true; +returnValue; diff --git a/deployment/usecase-5genesis/logic/Example_TL.js b/deployment/usecase-5genesis/logic/Example_TL.js new file mode 100644 index 0000000..201fdb0 --- /dev/null +++ b/deployment/usecase-5genesis/logic/Example_TL.js @@ -0,0 +1,20 @@ +var logger = executor.logger; +var time = new Date(); + +logger.info("##START## Example_TL"); + +var input = executor.inFields.get("input"); +logger.info("~~input: " + input); + +executor.getContextAlbum("Context_Album").put(input, time.toString()); +logger.info("~~Time of input stored: " + time + " in Context_Album"); + +var contextAlbumData = executor.getContextAlbum("Context_Album").get(input); +logger.info("~~Grab time from Context Album"); + +executor.outFields.put("output", contextAlbumData); + +logger.info("##END## Example_TL"); + +var returnValue = true; +returnValue; diff --git a/deployment/usecase-5genesis/logs/logback.xml b/deployment/usecase-5genesis/logs/logback.xml new file mode 100644 index 0000000..8326122 --- /dev/null +++ b/deployment/usecase-5genesis/logs/logback.xml @@ -0,0 +1,103 @@ +<!-- + ============LICENSE_START======================================================= + Copyright (C) 2020 Bell Canada. All rights reserved. + ================================================================================ + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + SPDX-License-Identifier: Apache-2.0 + ============LICENSE_END========================================================= +--> + +<configuration scan="true" scanPeriod="30 seconds" debug="false"> + + <appender name="ErrorOut" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>/var/log/onap/policy/apex-pdp/error.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> + <fileNamePattern>/var/log/onap/policy/apex-pdp/error.%d{yyyy-MM-dd}.%i.log.zip + </fileNamePattern> + <maxFileSize>50MB</maxFileSize> + <maxHistory>30</maxHistory> + <totalSizeCap>10GB</totalSizeCap> + </rollingPolicy> + <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> + <level>WARN</level> + </filter> + <encoder> + <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%level|%logger{0}|%thread] %msg%n</pattern> + </encoder> + </appender> + + <appender name="AsyncErrorOut" class="ch.qos.logback.classic.AsyncAppender"> + <appender-ref ref="ErrorOut" /> + </appender> + + <appender name="DebugOut" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>/var/log/onap/policy/apex-pdp/debug.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> + <fileNamePattern>/var/log/onap/policy/apex-pdp/debug.%d{yyyy-MM-dd}.%i.log.zip + </fileNamePattern> + <maxFileSize>50MB</maxFileSize> + <maxHistory>30</maxHistory> + <totalSizeCap>10GB</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%level|%logger{0}|%thread] %msg%n</pattern> + </encoder> + </appender> + + <appender name="AsyncDebugOut" class="ch.qos.logback.classic.AsyncAppender"> + <appender-ref ref="DebugOut" /> + </appender> + + <appender name="NetworkOut" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>/var/log/onap/policy/apex-pdp/network.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> + <fileNamePattern>/var/log/onap/policy/apex-pdp/network.%d{yyyy-MM-dd}.%i.log.zip + </fileNamePattern> + <maxFileSize>50MB</maxFileSize> + <maxHistory>30</maxHistory> + <totalSizeCap>10GB</totalSizeCap> + </rollingPolicy> + <encoder> + <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.SSS+00:00, UTC}|%t]%m%n</pattern> + </encoder> + </appender> + + <appender name="AsyncNetworkOut" class="ch.qos.logback.classic.AsyncAppender"> + <appender-ref ref="NetworkOut" /> + </appender> + + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern> + </encoder> + </appender> + + <appender name="AsyncStdOut" class="ch.qos.logback.classic.AsyncAppender"> + <appender-ref ref="STDOUT" /> + </appender> + + <logger name="network" level="INFO" additivity="false"> + <appender-ref ref="AsyncNetworkOut" /> + <appender-ref ref="AsyncStdOut" /> + </logger> + + <logger name="org.eclipse.jetty.server.RequestLog" level="info" additivity="false"> + <appender-ref ref="AsyncNetworkOut" /> + <appender-ref ref="AsyncStdOut" /> + </logger> + + <root level="INFO"> + <appender-ref ref="AsyncDebugOut" /> + <appender-ref ref="AsyncErrorOut" /> + <appender-ref ref="AsyncStdOut" /> + </root> + +</configuration> \ No newline at end of file diff --git a/deployment/usecase-5genesis/policy-apex/Policy.apex b/deployment/usecase-5genesis/policy-apex/Policy.apex new file mode 100644 index 0000000..4dcb5b3 --- /dev/null +++ b/deployment/usecase-5genesis/policy-apex/Policy.apex @@ -0,0 +1,63 @@ + +#---------------------------------------------------------------------------------------------------------------------------------------------------------------- + +model create name=5GENESIS_SURREY_POLICY_MODEL + +#---------------------------------------------------------------------------------------------------------------------------------------------------------------- + +##-- Primitive Types --## + +schema create name=String_Type flavour=Java schema=java.lang.String +schema create name=Integer_Type flavour=Java schema=java.lang.Integer +schema create name=Long_Type flavour=Java schema=java.lang.Long + +#---------------------------------------------------------------------------------------------------------------------------------------------------------------- + +##-- Events --## + +event create name=Always_Serve version="1.0" +event parameter create name=Always_Serve parName=deployment_name schemaName=String_Type +event parameter create name=Always_Serve parName=replica schemaName=Integer_Type +event parameter create name=Always_Serve parName=average_throughput schemaName=Integer_Type +event parameter create name=Always_Serve parName=threshold schemaName=Integer_Type +event parameter create name=Always_Serve parName=time schemaName=Long_Type + +event create name=Always_Serve_Output version="1.0" +event parameter create name=Always_Serve_Output parName=action schemaName=String_Type + +#---------------------------------------------------------------------------------------------------------------------------------------------------------------- + +##-- Albums --## + +album create name=Example_Album scope=GLOBAL writable=true schemaName=String_Type + +#---------------------------------------------------------------------------------------------------------------------------------------------------------------- + +##-- TASKS --## + +task create name=Always_Serve_Task +task inputfield create name=Always_Serve_Task fieldName=deployment_name schemaName=String_Type +task inputfield create name=Always_Serve_Task fieldName=replica schemaName=Integer_Type +task inputfield create name=Always_Serve_Task fieldName=average_throughput schemaName=Integer_Type +task inputfield create name=Always_Serve_Task fieldName=threshold schemaName=Integer_Type +task inputfield create name=Always_Serve_Task fieldName=time schemaName=Long_Type + +task outputfield create name=Always_Serve_Task fieldName=action schemaName=String_Type + +task contextref create name=Always_Serve_Task albumName=Example_Album + +task logic create name=Always_Serve_Task logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"logic/Always_Serve_TL.js" +LE + +#---------------------------------------------------------------------------------------------------------------------------------------------------------------- + +##-- POLICIES --## + +policy create name=Always_Serve_Policy template=FREEFORM firstState=Trigger_State + +policy state create name=Always_Serve_Policy stateName=Trigger_State triggerName=Always_Serve defaultTaskName=Always_Serve_Task +policy state output create name=Always_Serve_Policy stateName=Trigger_State outputName=action eventName=Always_Serve_Output +policy state taskref create name=Always_Serve_Policy stateName=Trigger_State taskName=Always_Serve_Task outputType=DIRECT outputName=action + +#------------------------------------------------------------------------------------------------------------------------------------------------- diff --git a/deployment/usecase-5genesis/run.bat b/deployment/usecase-5genesis/run.bat new file mode 100644 index 0000000..0da9293 --- /dev/null +++ b/deployment/usecase-5genesis/run.bat @@ -0,0 +1,5 @@ +docker build --no-cache -t 5genesis-surrey-apex . + +docker run -it -p 23324:23324 -p 5000:5000 --name apex-engine --rm 5genesis-surrey-apex + +pause diff --git a/deployment/usecase-5genesis/scripts/REST_Tester.py b/deployment/usecase-5genesis/scripts/REST_Tester.py new file mode 100644 index 0000000..ea5ce69 --- /dev/null +++ b/deployment/usecase-5genesis/scripts/REST_Tester.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# encoding: utf-8 +import json +import time +import requests + +from flask import Flask +from flask import request +from flask import jsonify + +app = Flask(__name__) +@app.route('/') +def index(): + time.sleep(5) + return json.dumps({ + "nameSpace": "apex.event.context", + "name": "Context_Trigger", + "version": "0.0.1", + "source": "External", + "target": "APEX", + "report": "This is a Context Event" + } +) + +@app.route('/api/slice/1234', methods=['PUT']) +def testStateOne(): + time.sleep(5) + print("State One has been Triggered") + return json.dumps({"response" : "State One success"}) + +@app.route('/api/slice/1234/restart', methods=['POST']) +def testStateTwo(): + time.sleep(5) + print("State Two has been Triggered") + return json.dumps({"response" : "State Two success"}) + +@app.route('/api/slice/1234', methods=['POST']) +def testStateThree(): + time.sleep(5) + print("State Three has been Triggered") + return json.dumps({"response" : "State Three success"}) + +@app.route('/RESTIssuer', methods=['GET', 'POST', 'PUT', 'DELETE']) +def RESTIssuer(): + message = request.get_json() + + path = "http://" + message["path"] + method = message["method"] + body = message["body"] + + print("Path = " , path) + print("Method = " , method) + print("Body = " , body) + headers = {'Content-Type': 'application/json'} + + if(method == "get"): + response = requests.get(path, data=json.dumps(body)) + print("GET Called") + if(method == "post"): + response = requests.post(path, data=json.dumps(body)) + print("POST Called") + if(method == "put"): + response = requests.put(path, body) + print("PUT Called") + if(method == "delete"): + response = requests.post(path) + print("DELETE Called") + + print("Response = " , response) + print("Response = " , response.text) + + return 'POST RECEIVED' + +app.run(debug=True,host="0.0.0.0") diff --git a/deployment/usecase-5genesis/scripts/start.sh b/deployment/usecase-5genesis/scripts/start.sh new file mode 100755 index 0000000..c8fa0e9 --- /dev/null +++ b/deployment/usecase-5genesis/scripts/start.sh @@ -0,0 +1,2 @@ +#!/bin/bash +apexApps.sh engine -c config/config.json \ No newline at end of file diff --git a/deployment/usecase-5genesis/scripts/startTest.sh b/deployment/usecase-5genesis/scripts/startTest.sh new file mode 100644 index 0000000..12a7347 --- /dev/null +++ b/deployment/usecase-5genesis/scripts/startTest.sh @@ -0,0 +1,2 @@ + #!/bin/bash +apexCLIEditor.sh -c policy-apex/Policy.apex -o policy-json/Policy.json \ No newline at end of file diff --git a/deployment/usecase-5genesis/tosca-template/ToscaTemplate.json b/deployment/usecase-5genesis/tosca-template/ToscaTemplate.json new file mode 100644 index 0000000..87f0047 --- /dev/null +++ b/deployment/usecase-5genesis/tosca-template/ToscaTemplate.json @@ -0,0 +1,17 @@ +{ + "tosca_definitions_version": "tosca_simple_yaml_1_1_0", + "topology_template": { + "policies": [ + { + "native.sampledomain": { + "type": "onap.policies.native.Apex", + "type_version": "1.0.0", + "name": "native.sampledomain", + "version": "1.0.0", + "properties": { + } + } + } + ] + } +} \ No newline at end of file -- GitLab