Automate the process of policy model uploading 14/84214/3
authorRuoyu Ying <ruoyu.ying@intel.com>
Thu, 4 Apr 2019 17:55:44 +0000 (01:55 +0800)
committerRuoyu Ying <ruoyu.ying@intel.com>
Thu, 4 Apr 2019 18:21:31 +0000 (02:21 +0800)
Add one more step after doing the healthcheck to
upload all the models under /osdf/models/policy/placement/tosca

Change-Id: I140efba27d603f43f6ae3f73b73b860dc8b10b42
Issue-ID: OPTFRA-415
Signed-off-by: Ruoyu Ying <ruoyu.ying@intel.com>
config/osdf_config.yaml
osdf/adapters/policy/interface.py
osdfapp.py

index 8c6d9f1..eac9883 100755 (executable)
@@ -20,6 +20,8 @@ conductorMinorVersion: 0
 # Policy Platform -- requires ClientAuth, Authorization, and Environment
 policyPlatformUrl: http://policy.api.simpledemo.onap.org:8081/pdp/api/getConfig # Policy Dev platform URL
 policyPlatformEnv: TEST  # Environment for policy platform
+# URL for policy model uploading
+policyPlatformUrlForModelUploading: http://policy.api.simpledemo.onap.org:8081/policy/api/v1/policytypes
 
 # Config for DMaaP
 messageReaderHosts: NA
index 95bfacc..7de5858 100644 (file)
@@ -19,6 +19,9 @@
 import base64
 import itertools
 import json
+import yaml
+import os
+import uuid
 
 
 from requests import RequestException
@@ -186,3 +189,30 @@ def get_policies(request_json, service_type):
         policies = remote_api(request_json, osdf_config, service_type)
 
     return policies
+
+def upload_policy_models():
+    """Upload all the policy models reside in the folder"""
+    model_path = "../../models/policy/placement/tosca"
+    requestId = uuid.uuid4()
+    config = osdf_config.deployment
+    uid, passwd = config['policyPlatformUsername'], config['policyPlatformPassword']
+    pcuid, pcpasswd = config['policyClientUsername'], config['policyClientPassword']
+    headers = {"ClientAuth": base64.b64encode(bytes("{}:{}".format(pcuid, pcpasswd), "ascii"))}
+    headers.update({'Environment': config['policyPlatformEnv']})
+    headers.update({'X-ONAP-RequestID': requestId})
+    url = config['policyPlatformUrlForModelUploading']
+    rc = RestClient(userid=uid, passwd=passwd, headers=headers, url=url, log_func=debug_log.debug)
+
+    for file in os.listdir(model_path):
+        if not file.endswith(".yml"):
+            continue
+        with open(file) as f:
+            file_converted = json.dumps(yaml.load(f))
+            response = rc.request(json=file_converted, ok_codes=(200))
+        if not response:
+            success = False
+            audit_log.warn("Policy model %s uploading failed!" % file)
+    if not success:
+        return "Policy model uploading success!"
+    else:
+        return "Policy model uploading not success!"
index 9449bc9..cebedc2 100755 (executable)
@@ -39,6 +39,7 @@ from schematics.exceptions import DataError
 from requests import RequestException
 from optparse import OptionParser
 from osdf.adapters.policy.interface import get_policies
+from osdf.adapters.policy.interface import upload_policy_models
 from osdf.config.base import osdf_config
 from osdf.optimizers.placementopt.conductor.remote_opt_processor import process_placement_opt
 from osdf.webapp.appcontroller import auth_basic
@@ -103,6 +104,9 @@ def handle_data_error(e):
 def do_osdf_health_check():
     """Simple health check"""
     audit_log.info("A health check request is processed!")
+    """Upload policy models"""
+    response = upload_policy_models()
+    audit_log.info(response)
     return "OK"