Modified hpa automation script

Issue-ID: INT-905 INT-904 INT-794
Signed-off-by: Itohan Ukponmwan <itohan.ukponmwan@intel.com>
Change-Id: I931289fffa5b9821259eff6f015adf3dd414aef8
diff --git a/test/hpa_automation/heat/README.md b/test/hpa_automation/heat/README.md
index 93c6b5b..4dd2abf 100644
--- a/test/hpa_automation/heat/README.md
+++ b/test/hpa_automation/heat/README.md
@@ -4,13 +4,26 @@
 
 ## Prerequisites
 
- 1. Install ONAP CLI. See [link](https://onap.readthedocs.io/en/dublin/submodules/cli.git/docs/installation_guide.html)
- 2. Install python mysql.connector (pip install mysql-connector-python)
- 3. Must have connectivity to the ONAP, a k8s vm already running is recommended as connectivity to the ONAP k8s network is required for the SDC onboarding section.
- 4. Create policies for homing using the temp_resource_module_name specified in hpa_automation_config.json. Sample policies can be seen in the sample_vfw_policies directory. Be sure to specify the right path to the directory in hpa_automation_config.json
- 5. Create Nodeport for Policy pdp using the pdp_service_expose.yaml file (copy pdp_service_expose.yaml in hpa_automation/heat to rancher and run kubectl apply -f pdp_expose.yaml)
- 6. Put in the CSAR file to be used to create service models and specify its path in hpa_automation_config.json
- 7. Modify the SO bpmn configmap to change the SO vnf adapter endpoint to v2. See step 4 [here](https://onap.readthedocs.io/en/casablanca/submodules/integration.git/docs/docs_vfwHPA.html#docs-vfw-hpa)
- 8. Prepare sdnc_preload file and put in the right path to its location in hpa_automation_config.json 
- 9. Put in the right parameters for automation in hpa_automation_config.json
- 10. Ensure the insert_policy_models_heat.py script is in the same location as the hpa_automation.py script as the automation scripts calls the insert_policy_models_heat.py script.
+ - Install ONAP CLI. See [link](https://onap.readthedocs.io/en/dublin/submodules/cli.git/docs/installation_guide.html)
+ - Install python mysql.connector (pip install mysql-connector-python)
+ - Must have connectivity to the ONAP, a k8s vm already running is recommended as connectivity to the ONAP k8s network is required for the SDC onboarding section.
+ - Create policies for homing using the temp_resource_module_name specified in hpa_automation_config.json. Sample policies can be seen in the sample_vfw_policies directory. Be sure to specify the right path to the directory in hpa_automation_config.json
+ - Create Nodeport for Policy pdp using the pdp_service_expose.yaml file (copy pdp_service_expose.yaml in hpa_automation/heat to rancher and run kubectl apply -f pdp_expose.yaml)
+ - Put in the CSAR file to be used to create service models and specify its path in hpa_automation_config.json
+ - Modify the SO bpmn configmap to change the SO vnf adapter endpoint to v2. See step 4 [here](https://onap.readthedocs.io/en/casablanca/submodules/integration.git/docs/docs_vfwHPA.html#docs-vfw-hpa)
+ - Prepare sdnc_preload file and put in the right path to its location in hpa_automation_config.json 
+ - Put in the right parameters for automation in hpa_automation_config.json
+ - Ensure the insert_policy_models_heat.py script is in the same location as the hpa_automation.py script as the automation scripts calls the insert_policy_models_heat.py script.
+
+**Points to Note:**
+ - The hpa_automation.py runs end to end. It does the following;
+          - Create cloud complex
+          - Register cloud regions
+          - Create service type
+          - Create customer and adds customer subscription
+          - SDC Onboarding (Create VLM, VSP, VF Model, and service model)
+          - Upload policy models and adds policies
+          - Create Service Instance and VNF Instance
+          - SDNC Preload and Creates VF module
+          
+ - There are well named functions that do the above items every time the script is run. If you do not wish to run any part of that, you can go into the script and comment out the section at the bottom that handles that portion.
diff --git a/test/hpa_automation/heat/hpa_automation.py b/test/hpa_automation/heat/hpa_automation.py
index cc6dc68..5ac65b4 100755
--- a/test/hpa_automation/heat/hpa_automation.py
+++ b/test/hpa_automation/heat/hpa_automation.py
@@ -228,6 +228,9 @@
 
 
 #VNF Deployment Section
+def upload_policy_models(parameters):
+    os.system("python insert_policy_models.py {} {} {}".format(parameters["policy_db_ip"], \
+            parameters["policy_db_user"], parameters["policy_db_password"]))
 
 def add_policies(parameters):
     resource_string = (os.popen("oclip get-resource-module-name  -u {} -p {} -m {} |grep {}".format(\
@@ -239,10 +242,6 @@
     os.system("find {}/ -type f -exec sed -i 's/{}/{}/g' {{}} \;".format(
       parameters["policy_directory"], parameters["temp_resource_module_name"], resource_module_name))
 
-   #Upload policy models
-    os.system("python insert_policy_models.py {} {} {}".format(parameters["policy_db_ip"], parameters["policy_db_user"], \
-            parameters["policy_db_password"]))
-
     #Loop through policy, put in resource_model_name and create policies
     for policy in os.listdir(parameters["policy_directory"]):
       policy_name = "{}.{}".format(parameters["policy_scope"], os.path.splitext(policy)[0])
@@ -441,23 +440,57 @@
 
 config_file_path = "/root/automation_stuff/hpa_automation_config.json"
 config_file = open(config_file_path)
+
+#Get required parameters from hpa config file
 parameters = get_parameters(config_file)
+
+#Set CLI env variables
 set_open_cli_env(parameters)
+
 create_complex(parameters)
 register_all_clouds(parameters)
 create_service_type(parameters)
 create_customer(parameters)
 add_customer_subscription(parameters)
-output = create_vlm(parameters)
-vsp_id = create_vsp(parameters, output)
+
+vlm_output = create_vlm(parameters)
+print "vlm parameters={}".format(vlm_output)
+
+vsp_id = create_vsp(parameters, vlm_output)
+print "vsp id={}".format(vsp_id)
+
 vf_model_dict = create_vf_model(parameters, vsp_id)
+print "vf model parameters={}".format(vf_model_dict)
 vf_id = vf_model_dict["vf_id"]
 vf_unique_id = vf_model_dict["vf_unique_id"]
+
 service_model_list = create_service_model(parameters, vf_unique_id)
+print "service model parameters={}".format(service_model_list)
+
+upload_policy_models(parameters)
 add_policies(parameters)
+
 service_dict = create_service_instance(parameters, service_model_list)
+print "service instance parameters={}".format(service_dict)
 service_model_uuid = service_dict["service_uuid"]
+
 db_dict = query_db(parameters, service_model_uuid, vf_id)
-vnf_dict = create_vnf(parameters, service_dict, db_dict, vf_model_dict)
+
+#Wait for Service instance to be created then create VNF Instance
+while True:
+    #Check if service instance has been created"
+    check_service_instance = os.popen("oclip service-instance-list -u {} -p {} -m {} |grep {}".format(parameters["aai_username"], \
+            parameters["aai_password"], parameters["aai_url"], parameters["instance-name"])).read()
+    if check_service_instance:
+        print "service instance created successfully"
+        #Create VNF Instance
+        vnf_dict = create_vnf(parameters, service_dict, db_dict, vf_model_dict)
+        time.sleep(10)
+        print "vnf instance parameters={}".format(vnf_dict)
+        break
+    print "service instance create in progress"
+    time.sleep(30)
+
+#Preload VF module and create VF module
 sdnc_preload(parameters, db_dict, service_dict)
 create_vf_module(parameters, service_dict, vnf_dict, db_dict)