Mass-pnf-sim URL handling improvements 14/83314/1
authorTamasBakai <tamas.bakai@est.tech>
Tue, 26 Mar 2019 09:20:16 +0000 (09:20 +0000)
committerTamasBakai <tamas.bakai@est.tech>
Tue, 26 Mar 2019 09:20:16 +0000 (09:20 +0000)
Change-Id: Ic10551cb0cd1f875ad6a1cec3d73e1cfcb35d00e
Issue-ID: DCAEGEN2-1225
Signed-off-by: TamasBakai <tamas.bakai@est.tech>
test/mocks/mass-pnf-sim/README.md
test/mocks/mass-pnf-sim/clean.sh [new file with mode: 0755]
test/mocks/mass-pnf-sim/diagnostic.sh [new file with mode: 0755]
test/mocks/mass-pnf-sim/mass-pnf-sim.py
test/mocks/mass-pnf-sim/pnf-sim-lightweight/config/config.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/ConfigurationProvider.java
test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/PnfSimConfig.java
test/mocks/mass-pnf-sim/pnf-sim-lightweight/src/main/java/org/onap/pnfsimulator/simulator/SimulatorFactory.java

index ffa82c1..507a692 100644 (file)
@@ -15,7 +15,10 @@ 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:
-./mass-pnf-sim.py  --bootstrap 2 --ipves http://10.148.95.??:10000 --ipfileserver 10.148.95.??? --ipstart 10.11.0.16
+./mass-pnf-sim.py  --bootstrap 2 --urlves http://10.148.95.??:10000/eventListener/v7 --ipfileserver 10.148.95.??? --ipstart 10.11.0.16
+
+Note that the file creator is started at a time of the bootstrapping.
+Stop/start will not re-launch it.
 
 ###Replacing VES for test purposes
 `sudo nc -vv -l -k -p 10000`
@@ -24,7 +27,7 @@ Example:
 Define the amount of simulators to be launched
 ./mass-pnf-sim.py  --start 2
 
-###Trigger 
+###Trigger
 ./mass-pnf-sim.py  --trigger 2
 
 ###Stop and clean
diff --git a/test/mocks/mass-pnf-sim/clean.sh b/test/mocks/mass-pnf-sim/clean.sh
new file mode 100755 (executable)
index 0000000..28df0ef
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+killall ROP_file_creator.sh
+
+docker stop $(docker ps -aq); docker rm $(docker ps -aq)
+
+./mass-pnf-sim.py --clean
+
diff --git a/test/mocks/mass-pnf-sim/diagnostic.sh b/test/mocks/mass-pnf-sim/diagnostic.sh
new file mode 100755 (executable)
index 0000000..99e35cd
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+echo "======= docker ps"
+docker ps
+
+echo "======= Docker image cache"
+docker images nexus3.onap.org:10003/onap/masspnf-simulator
+
+export NUM_OF_SIMS=`find pnf-sim-lw* -maxdepth 0 | wc -l`
+echo $NUM_OF_SIMS
+
+if [ "$NUM_OF_SIMS" -gt 0 ];
+then
+       echo "======= docker-compose, first instance"
+       cat pnf-sim-lw-0/docker-compose.yml
+       
+       echo "======= Java config.yml, first instance"
+       cat pnf-sim-lw-0/config/config.yml
+fi
+
+if (("$NUM_OF_SIMS" > 2));
+then
+       echo "======= docker-compose, last instance"
+       cat pnf-sim-lw-$(($NUM_OF_SIMS-1))/docker-compose.yml
+       
+       echo "======= Java config.yml, last instance"
+       cat pnf-sim-lw-$(($NUM_OF_SIMS-1))/config/config.yml
+fi
+
+
index 898cd65..8a4f390 100755 (executable)
@@ -19,8 +19,8 @@ parser.add_argument(
 )
 
 parser.add_argument(
-    '--ipves',
-    help='IP of the VES collector',
+    '--urlves',
+    help='URL of the VES collector',
 )
 
 parser.add_argument(
@@ -56,7 +56,7 @@ parser.add_argument(
 
 args = parser.parse_args()
 
-if args.bootstrap and args.ipstart and args.ipves:
+if args.bootstrap and args.ipstart and args.urlves:
     print("Bootstrap:")
 
     start_port=2000
@@ -81,11 +81,11 @@ if args.bootstrap and args.ipstart and args.ipves:
         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))
+        UrlFtps = str(ipaddress.ip_address(args.ipstart) + int(3 + (i * 16)))
+        print("\tUrl Ftps: " + str(UrlFtps))
  
-        IpSftp = ipaddress.ip_address(args.ipstart) + int(4 + (i * 16))
-        print("\tIp Sftp:" + str(IpSftp))
+        UrlSftp = str(ipaddress.ip_address(args.ipstart) + int(4 + (i * 16)))
+        print("\tUrl Sftp: " + str(UrlSftp))
 
         foldername = "pnf-sim-lw-" + str(i)
         completed = subprocess.run('mkdir ' + foldername, shell=True)
@@ -96,17 +96,17 @@ if args.bootstrap and args.ipstart and args.ipves:
             shell=True)
         print('\tCloning folder:', completed.stdout)
 
-        composercmd = "./simulator.sh compose " +\
-            str(ip_gw) + " " +\
-            str(ip_subnet) + " " +\
-            str(i) + " " +\
-            str(args.ipves) + " " +\
-            str(IpPnfSim) + " " +\
-            str(IpFileServer) + " " +\
-            str(PortSftp) + " " +\
-            str(PortFtps) + " " +\
-            str(IpFtps) + " " +\
-            str(IpSftp)
+        composercmd = "./simulator.sh compose " + \
+            str(ip_gw) + " " + \
+            str(ip_subnet) + " " + \
+            str(i) + " " + \
+            str(args.urlves) + " " + \
+            str(IpPnfSim) + " " + \
+            str(IpFileServer) + " " + \
+            str(PortSftp) + " " + \
+            str(PortFtps) + " " + \
+            str(UrlFtps) + " " + \
+            str(UrlSftp)
 
         completed = subprocess.run(
             'set -x; cd ' +
@@ -116,6 +116,9 @@ if args.bootstrap and args.ipstart and args.ipves:
             shell=True)
         print('Cloning:', completed.stdout)
 
+    completed = subprocess.run('set -x; cd pnf-sim-lightweight; ./simulator.sh build ', shell=True)
+    print("Build docker image: ", completed.stdout)
+
     sys.exit()
 
 if args.clean:
index 206d918..06c8320 100644 (file)
@@ -1,7 +1,9 @@
 ---
-vesip: http://localhost:10000
-ipftps: 10.11.0.67
-ipsftp: 10.11.0.68
+urlves: http://localhost:10000/eventListener/v7
+urlftps: ftps://onap:pano@10.11.0.67
+urlsftp: sftp://onap:pano@10.11.0.68
 #when run in simulator, it does not have own IP
-ippnfsim: localhost  
+ippnfsim: localhost
+defaultfileserver: sftp
+#defaultfileserver: ftps
 ...
index 86f15a8..4c5d9f0 100755 (executable)
@@ -27,6 +27,11 @@ function main(){
         "start")
             start $COMPOSE_FILE_NAME;;
         "stop")
+            if [[ -z ${2+x} ]]
+            then
+               echo "Error: action 'stop' requires the instance identifier"
+               exit
+            fi
             stop $2;;
         "run-simulator")
             run_simulator;;
@@ -101,10 +106,11 @@ function set_vsftpd_file_owner() {
 
 function write_config(){
        #building a YML file for usage in Java
-       echo "vesip: $1" > config/config.yml
-       echo "ipsftp: $2:$3" >> config/config.yml
-       echo "ipftps: $2:$4" >> config/config.yml
+       echo "urlves: $1" > config/config.yml
+       echo "urlsftp: sftp://onap:pano@$2:$3" >> config/config.yml
+       echo "urlftps: ftps://onap:pano@$2:$4" >> config/config.yml
        echo "ippnfsim: $5" >> config/config.yml
+       echo "defaultfileserver: sftp" >> config/config.yml
 }
 
 function start(){
@@ -127,7 +133,7 @@ function running_containers(){
 
 function stop(){
        get_pnfsim_ip
-    kill $(ps -a | grep "[.]/ROP_file_creator.sh $1" | awk '{print $1}')
+    kill $(ps -ef | grep "[.]/ROP_file_creator.sh $1" | head -n 1 | awk '{print $2}')
 
     if [[ $(running_containers) ]]; then
         docker-compose -f $RUNNING_COMPOSE_CONFIG down
index 4b293e8..15c687e 100644 (file)
@@ -7,11 +7,6 @@ import java.io.File;
 public class ConfigurationProvider {
     static PnfSimConfig conf = null;
 
-    String IpVes = null;
-    String IpSftp = null;
-    String IpFtps = null;
-    String IpPnfsim = null;
-
     public static PnfSimConfig getConfigInstance() {
 
         ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
@@ -19,10 +14,10 @@ public class ConfigurationProvider {
             File file = new File("./config/config.yml");
 
             conf = mapper.readValue(file, PnfSimConfig.class);
-            System.out.println("Ves IP: " + conf.getVesip());
-            System.out.println("SFTP IP: " + conf.getIpsftp());
-            System.out.println("FTPS IP: " + conf.getIpftps());
-            System.out.println("FTPS IP: " + conf.getIppnfsim());
+            System.out.println("Ves URL: " + conf.getUrlves());
+            System.out.println("SFTP URL: " + conf.getUrlsftp());
+            System.out.println("FTPS URL: " + conf.getUrlftps());
+            System.out.println("PNF sim IP: " + conf.getIppnfsim());
 
         } catch (Exception e) {
             e.printStackTrace();
index 4931b57..89f59a3 100644 (file)
@@ -1,49 +1,59 @@
 package org.onap.pnfsimulator;
 
 public class PnfSimConfig {
-    private String vesip;
-    private String ipftps;
-    private String ipsftp;
+    private String urlves;
+    private String urlftps;
+    private String urlsftp;
     private String ippnfsim;
+    private String defaultfileserver;
 
-    public String getVesip() {
-        return vesip;
+    public String getDefaultfileserver() {
+        return defaultfileserver;
     }
 
-    public void setVesip(String vesip) {
-        this.vesip = vesip;
+    public void setDefaultfileserver(String defaultfileserver) {
+        this.defaultfileserver = defaultfileserver;
     }
 
-    public String getIpftps() {
-        return ipftps;
+
+    public String getUrlves() {
+        return urlves;
     }
 
-    public void setIpftps(String ipftps) {
-        this.ipftps = ipftps;
+    public void setUrlves(String urlves) {
+        this.urlves = urlves;
     }
 
-    public String getIpsftp() {
-        return ipsftp;
+    public String getUrlftps() {
+        return urlftps;
     }
 
-    public void setIpsftp(String ipsftp) {
-        this.ipsftp = ipsftp;
+    public void setUrlftps(String urlftps) {
+        this.urlftps = urlftps;
     }
 
-    public void setIppnfsim(String ippnfsim) {
-        this.ippnfsim = ippnfsim;
+    public String getUrlsftp() {
+        return urlsftp;
     }
 
-    @Override
-    public String toString() {
-        return "PnfSimConfig [vesip=" + vesip + ", ipftps=" + ipftps + ", ippnfsim=" + ippnfsim + ", ipsftp=" + ipsftp
-                + "]";
+    public void setUrlsftp(String urlsftp) {
+        this.urlsftp = urlsftp;
+    }
+
+    public void setIppnfsim(String ippnfsim) {
+        this.ippnfsim = ippnfsim;
     }
 
     public String getIppnfsim() {
         return ippnfsim;
     }
 
+    @Override
+    public String toString() {
+        return "PnfSimConfig [vesip=" + urlves + ", urlftps=" + urlftps + ", ippnfsim=" + ippnfsim + ", urlsftp="
+                + urlsftp + "]";
+    }
+
 
 
 }
index cb58e3c..54af2b9 100644 (file)
@@ -53,18 +53,26 @@ public class SimulatorFactory {
             Optional<JSONObject> pnfRegistrationParams, Optional<JSONObject> notificationParams)
             throws ProcessingException, IOException, ValidationException {
         PnfSimConfig configuration = ConfigurationProvider.getConfigInstance();
-        String xnfUrl = "sftp://onap:pano@" + configuration.getIpsftp() + "/";
-        String vesUrl = configuration.getVesip() + "/eventListener/v7";
+
+        String xnfUrl = null;
+
+        if (configuration.getDefaultfileserver().equals("sftp")) {
+            xnfUrl = configuration.getUrlsftp() + "/";
+        } else if (configuration.getDefaultfileserver().equals("ftps")) {
+            xnfUrl = configuration.getUrlftps() + "/";
+        }
+
+        String urlVes = configuration.getUrlves();
 
         Duration duration = Duration.ofSeconds(parseInt(simulatorParams.getString(TEST_DURATION)));
         Duration interval = Duration.ofSeconds(parseInt(simulatorParams.getString(MESSAGE_INTERVAL)));
 
         List<String> fileList = FileProvider.getFiles();
-        JSONObject messageBody = messageProvider
-                .createMessage(commonEventHeaderParams, pnfRegistrationParams, notificationParams, fileList, xnfUrl);
+        JSONObject messageBody = messageProvider.createMessage(commonEventHeaderParams, pnfRegistrationParams,
+                notificationParams, fileList, xnfUrl);
         validator.validate(messageBody.toString(), DEFAULT_OUTPUT_SCHEMA_PATH);
 
-        return Simulator.builder().withVesUrl(vesUrl).withDuration(duration).withInterval(interval)
+        return Simulator.builder().withVesUrl(urlVes).withDuration(duration).withInterval(interval)
                 .withMessageBody(messageBody).build();
 
     }