Mass-pnf-simulator publishing ports 21/83021/1
authorTamasBakai <tamas.bakai@est.tech>
Fri, 22 Mar 2019 09:52:03 +0000 (09:52 +0000)
committerTamasBakai <tamas.bakai@est.tech>
Fri, 22 Mar 2019 09:52:03 +0000 (09:52 +0000)
Change-Id: If43f505967bd542c88956e11aef4cd4e52626255
Issue-ID: DCAEGEN2-1225
Signed-off-by: TamasBakai <tamas.bakai@est.tech>
test/mocks/mass-pnf-sim/README.md
test/mocks/mass-pnf-sim/mass-pnf-sim.py
test/mocks/mass-pnf-sim/pnf-sim-lightweight/README.md
test/mocks/mass-pnf-sim/pnf-sim-lightweight/docker-compose-template.yml
test/mocks/mass-pnf-sim/pnf-sim-lightweight/simulator.sh
test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/message/MessageProvider.java
test/mocks/pnf-onboarding/unsecureAcmePnf.csar

index 1ed90b5..ffa82c1 100644 (file)
@@ -15,19 +15,21 @@ The ipstart should align to a /28 Ip address range start (e.g. 10.11.0.16, 10.11
 For debug purposes, you can use your own IP address as VES collector, use "ip" command to determine it.
 
 Example:
-python3 ./mass-pnf-sim.py  --bootstrap 2 --ipves http://10.148.95.??:10000 --ipstart 10.11.0.16
+./mass-pnf-sim.py  --bootstrap 2 --ipves http://10.148.95.??:10000 --ipfileserver 10.148.95.??? --ipstart 10.11.0.16
 
 ###Replacing VES for test purposes
-`nc -l 10000`
+`sudo nc -vv -l -k -p 10000`
 
 ###Start
 Define the amount of simulators to be launched
-python3 ./mass-pnf-sim.py  --start 2
+./mass-pnf-sim.py  --start 2
 
+###Trigger 
+./mass-pnf-sim.py  --trigger 2
 
 ###Stop and clean
-python3 ./mass-pnf-sim.py  --stop 2
-python3 ./mass-pnf-sim.py  --clean
+./mass-pnf-sim.py  --stop 2
+./mass-pnf-sim.py  --clean
 
 ###Cleaning and recovery after incorrect configuration
 docker stop $(docker ps -aq); docker rm $(docker ps -aq)
index ba05986..898cd65 100755 (executable)
@@ -13,11 +13,21 @@ parser.add_argument(
     help='Bootstrapping the system',
 )
 
+parser.add_argument(
+    '--trigger',
+    help='Trigger one single VES event from each simulator',
+)
+
 parser.add_argument(
     '--ipves',
     help='IP of the VES collector',
 )
 
+parser.add_argument(
+    '--ipfileserver',
+    help='Visible IP of the file server (SFTP/FTPS) to be included in the VES event',
+)
+
 parser.add_argument(
     '--ipstart',
     help='IP address range beginning',
@@ -49,6 +59,8 @@ args = parser.parse_args()
 if args.bootstrap and args.ipstart and args.ipves:
     print("Bootstrap:")
 
+    start_port=2000
+
     for i in range(int(args.bootstrap)):
         print("PNF simulator instance: " + str(i) + ".")
 
@@ -63,9 +75,15 @@ if args.bootstrap and args.ipstart and args.ipves:
         IpPnfSim = ipaddress.ip_address(args.ipstart) + int(2 + (i * 16))
         print("\tIp Pnf SIM:" + str(IpPnfSim))
 
+        IpFileServer = args.ipfileserver
+
+        
+        PortSftp=start_port +1
+        PortFtps=start_port +2 
+        start_port +=2
         IpFtps = ipaddress.ip_address(args.ipstart) + int(3 + (i * 16))
         print("\tIp Ftps: " + str(IpFtps))
-
         IpSftp = ipaddress.ip_address(args.ipstart) + int(4 + (i * 16))
         print("\tIp Sftp:" + str(IpSftp))
 
@@ -84,6 +102,9 @@ if args.bootstrap and args.ipstart and args.ipves:
             str(i) + " " +\
             str(args.ipves) + " " +\
             str(IpPnfSim) + " " +\
+            str(IpFileServer) + " " +\
+            str(PortSftp) + " " +\
+            str(PortFtps) + " " +\
             str(IpFtps) + " " +\
             str(IpSftp)
 
@@ -139,6 +160,20 @@ if args.stop:
             shell=True)
         print('Stopping:', completed.stdout)
 
+
+if args.trigger:
+    print("Triggering VES sending:")
+
+    for i in range(int(args.trigger)):
+        foldername = "pnf-sim-lw-" + str(i)
+
+        completed = subprocess.run(
+            'cd ' +
+            foldername +
+            "; ./simulator.sh trigger-simulator",
+            shell=True)
+        print('Status:', completed.stdout)
+
 else:
     print("No instruction was defined")
     sys.exit()
index 2b20d26..2940b65 100644 (file)
@@ -1,6 +1,6 @@
 ##Local development shortcuts:
 ####To start listening on port 10000 for test purposes
-`nc -l 10000`
+`nc -l -k -p 10000`
 ####Test the command above: 
 `echo "Hello World" | nc localhost  10000`
 
@@ -27,10 +27,12 @@ Accept-Encoding: gzip,deflate
 ```
 
 ```javascript
-{"commonEventHeader":{"startEpochMicrosec":"1551865758690","sourceId":"val13","eventId":"registration_51865758",
+{"event":{"commonEventHeader":{"startEpochMicrosec":"1551865758690","sourceId":"val13","eventId":"registration_51865758",
 "nfcNamingCode":"oam","internalHeaderFields":{},"priority":"Normal","version":"4.0.1","reportingEntityName":"NOK6061ZW3",
-"sequence":"0","domain":"notification","lastEpochMicrosec":"1551865758690","eventName":"pnfRegistration_Nokia_5gDu","vesEventListenerVersion":"7.0.1",
-"sourceName":"NOK6061ZW3","nfNamingCode":"gNB"},"notificationFields":{"notificationFieldsVersion":"2.0","changeType":"FileReady",
-"changeIdentifier":"PM_MEAS_FILES","arrayOfNamedHashMap":{"name":"10MB.tar.gz",
-"hashMap":{"location":"10.11.0.68/10MB.tar.gz","fileFormatType":"org.3GPP.32.435#measCollec","fileFormatVersion":"V10","compression":"gzip"}}}}
+"sequence":"0","domain":"notification","lastEpochMicrosec":"1551865758690","eventName":"pnfRegistration_Nokia_5gDu",
+"vesEventListenerVersion":"7.0.1","sourceName":"NOK6061ZW3","nfNamingCode":"gNB"},
+"notificationFields":{"notificationFieldsVersion":"2.0","changeType":"FileReady","changeIdentifier":"PM_MEAS_FILES",
+"arrayOfNamedHashMap":[{"name":"10MB.tar.gz","hashMap":{
+"location":"ftpes://10.11.0.68/10MB.tar.gz","fileFormatType":"org.3GPP.32.435#measCollec",
+"fileFormatVersion":"V10","compression":"gzip"}}]}}}
 ```
\ No newline at end of file
index f532268..aa0261c 100644 (file)
@@ -29,6 +29,8 @@ services:
     networks:
       front-${I}:
         ipv4_address: "${IPSFTP}"
+    ports:
+      - "${PORTSFTP}:22"
     volumes:
       - ./files/onap/:/home/onap/
     restart: on-failure
@@ -40,6 +42,8 @@ services:
     networks:
       front-${I}:
         ipv4_address: "${IPFTPS}"
+    ports:
+         - "${PORTFTPS}:21"
     environment:
       FTP_USER: onap
       FTP_PASSWORD: pano
index bed64b0..86f15a8 100755 (executable)
@@ -20,8 +20,8 @@ function main(){
 
     case $COMMAND in
        "compose")
-            compose $2 $3 $4 $5 $6 $7 $8;;
-             #IPGW, #IPSUBNET, #I, #IPVES, #IPPNFSIM, #IPFTP, #IPSFTP,
+            compose $2 $3 $4 $5 $6 $7 $8 $9 "${10}" "${11}" ;;
+             #IPGW, #IPSUBNET, #I, #IPVES, #IPPNFSIM, #IPFILESERVER, #PORTSFTP, #PORTFTPS, #IPFTPS, #IPSFTP
         "build")
             build_image;;
         "start")
@@ -64,8 +64,11 @@ function compose(){
        export I=$3
        export IPVES=$4
        export IPPNFSIM=$5
-       export IPFTPS=$6
-       export IPSFTP=$7
+       export IPFILESERVER=$6
+       export PORTSFTP=$7
+       export PORTFTPS=$8
+       export IPFTPS=$9
+       export IPSFTP=${10}
 
        #will insert $I to distinguish containers, networks properly
        #docker compose cannot substitute these, as they are keys, not values.
@@ -78,7 +81,7 @@ function compose(){
 
        set_vsftpd_file_owner
 
-       write_config $IPVES $IPFTPS $IPSFTP $IPPNFSIM
+       write_config $IPVES $IPFILESERVER $PORTSFTP $PORTFTPS $IPPNFSIM
 
 }
 
@@ -99,9 +102,9 @@ function set_vsftpd_file_owner() {
 function write_config(){
        #building a YML file for usage in Java
        echo "vesip: $1" > config/config.yml
-       echo "ipftps: $2" >> config/config.yml
-       echo "ipsftp: $3" >> config/config.yml
-       echo "ippnfsim: $4" >> config/config.yml
+       echo "ipsftp: $2:$3" >> config/config.yml
+       echo "ipftps: $2:$4" >> config/config.yml
+       echo "ippnfsim: $5" >> config/config.yml
 }
 
 function start(){
index d59e829..839d402 100644 (file)
@@ -114,24 +114,6 @@ public class MessageProvider {
         JSONArray jsonArrayOfNamedHashMap = new JSONArray();
         jsonArrayOfNamedHashMap.put(jsonHashMap);
 
-
-
-        // // notification.put("name", "NAME_DUMMY");
-        // JSONObject notification = new JSONObject();
-        //
-        // notificationParams.ifPresent(jsonObject -> {
-        // copyParametersToFields(notification, notificationFields);
-        // commonEventHeader.put(DOMAIN, DOMAIN_NOTIFICATION);
-        // event.put(NOTIFICATION_FIELDS, notificationFields);
-        // });
-
-
-        // notificationParams.ifPresent(jsonObject -> {
-        // copyParametersToFields(jsonObject.toMap(), notificationFields);
-        // commonEventHeader.put(DOMAIN, DOMAIN_NOTIFICATION);
-        // event.put(NOTIFICATION_FIELDS, notificationFields);
-        // });
-
         event.put(COMMON_EVENT_HEADER, commonEventHeader);
         JSONObject root = new JSONObject();
         root.put(EVENT, event);
@@ -141,7 +123,6 @@ public class MessageProvider {
 
     public JSONObject createOneVesEvent(String xnfUrl, String fileName) {
 
-        String notificationFields;
         JSONObject nof = new JSONObject();
 
         nof.put("notificationFieldsVersion", "2.0");
@@ -150,20 +131,20 @@ public class MessageProvider {
         nof.put("changeIdentifier", "PM_MEAS_FILES");
 
         JSONObject hm = new JSONObject();
-        hm.put("location", xnfUrl.concat(fileName));
+        hm.put("location", "ftpes://".concat(xnfUrl).concat(fileName));
         hm.put("fileFormatType", "org.3GPP.32.435#measCollec");
         hm.put("fileFormatVersion", "V10");
         hm.put("compression", "gzip");
 
-        JSONObject aonh = new JSONObject();
-        aonh.put("name", fileName);
+        JSONObject aonhElement = new JSONObject();
+        aonhElement.put("name", fileName);
+        aonhElement.put("hashMap", hm);
 
-        aonh.put("hashMap", hm);
+        JSONArray aonh = new JSONArray();
+        aonh.put(aonhElement);
 
         nof.put("arrayOfNamedHashMap", aonh);
 
-        String nofString = nof.toString();
-
         JSONObject ceh = new JSONObject(); // commonEventHandler
         ceh.put("startEpochMicrosec", "1551865758690");
         ceh.put("sourceId", "val13");
@@ -183,18 +164,23 @@ public class MessageProvider {
         JSONObject ihf = new JSONObject(); // internalHeaderFields
         ceh.put("internalHeaderFields", ihf);
 
+        JSONObject eventContent = new JSONObject();
+        eventContent.put("commonEventHeader", ceh);
+        eventContent.put("notificationFields", nof);
+
+
         JSONObject event = new JSONObject();
-        event.put("commonEventHeader", ceh);
-        event.put("notificationFields", nof);
+        event.put("event", eventContent);
 
-        System.out.println("event: ");
+        System.out.println("VES messages to be sent: ");
         System.out.println(event.toString());
 
         return event;
 
      // @formatter:off
         /*
-        {
+    {
+        "event": {
             "commonEventHeader": {                          <== "ceh"
                 "startEpochMicrosec": "1551865758690",
                 "sourceId": "val13",
@@ -217,21 +203,21 @@ public class MessageProvider {
                 "notificationFieldsVersion": "2.0",
                 "changeType": "FileReady",
                 "changeIdentifier": "PM_MEAS_FILES",
-                "arrayOfNamedHashMap": {                    <== "aonh"
-                    "name": "A20161224.1030-1045.bin.gz",
-                    "hashMap": {                            <== "hm"
-                        "location": "ftpes://192.169.0.1:22/ftp/rop/A20161224.1030-1045.bin.gz",
-                        "fileFormatType": "org.3GPP.32.435#measCollec",
-                        "fileFormatVersion": "V10",
-                        "compression": "gzip"
+                "arrayOfNamedHashMap": [                    <== "aonh"
+                    {                                       <== "aonhElement"
+                        "name": "A20161224.1030-1045.bin.gz",
+                        "hashMap": {                            <== "hm"
+                            "location": "ftpes://192.169.0.1:22/ftp/rop/A20161224.1030-1045.bin.gz",
+                            "fileFormatType": "org.3GPP.32.435#measCollec",
+                            "fileFormatVersion": "V10",
+                            "compression": "gzip"
+                         }
                     }
-                }
+                ]
             }
         }
-
-        */
+    }
+    */
      // @formatter:on
-
     }
-
 }
index 92ff8fc..37e4733 100644 (file)
Binary files a/test/mocks/pnf-onboarding/unsecureAcmePnf.csar and b/test/mocks/pnf-onboarding/unsecureAcmePnf.csar differ