aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRuoyu Ying <ruoyu.ying@intel.com>2019-04-05 01:55:44 +0800
committerRuoyu Ying <ruoyu.ying@intel.com>2019-04-05 02:21:31 +0800
commit0e957e6ff4bae412ba909f9677d485d4abc0362b (patch)
tree12ae1fe6b3a2683db674e1508ee7325674a66e0b
parentff08e67156aa736081d8b8671882cf78d3b6f668 (diff)
Automate the process of policy model uploading
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>
-rwxr-xr-xconfig/osdf_config.yaml2
-rw-r--r--osdf/adapters/policy/interface.py30
-rwxr-xr-xosdfapp.py4
3 files changed, 36 insertions, 0 deletions
diff --git a/config/osdf_config.yaml b/config/osdf_config.yaml
index 8c6d9f1..eac9883 100755
--- a/config/osdf_config.yaml
+++ b/config/osdf_config.yaml
@@ -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
diff --git a/osdf/adapters/policy/interface.py b/osdf/adapters/policy/interface.py
index 95bfacc..7de5858 100644
--- a/osdf/adapters/policy/interface.py
+++ b/osdf/adapters/policy/interface.py
@@ -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!"
diff --git a/osdfapp.py b/osdfapp.py
index 9449bc9..cebedc2 100755
--- a/osdfapp.py
+++ b/osdfapp.py
@@ -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"