'''
import os
-import ssl
import json
import sys
import uuid
import time
import copy
-import netifaces as ni
import warnings
import contextlib
import requests
import simplejson
import http.server
import threading
-import urllib3
from datetime import datetime
from datetime import timedelta
from simple_rest_client.api import API
from simple_rest_client.resource import Resource
from basicauth import encode
-from pprint import pprint
-from random import randint
from urllib3.exceptions import InsecureRequestWarning
m_value = None
rel_dict = data.get(rel_lst)
if rel_dict: # check if data has relationship lists
- for key, rel_list in rel_dict.items():
+ for key, rel_list in rel_dict.items(): # pylint: disable=W0612
for rel in rel_list:
if rel.get("related-to") == related_to:
dval = None
response.append(
{"link": link, "d_value": dval}
)
- if len(response) == 0:
+ if response:
response.append(
{"link": None, "d_value": None}
)
actions = {
'generic_vnf': {'method': 'GET', 'url': 'network/generic-vnfs/generic-vnf/{}'},
'vnfc': {'method': 'GET', 'url': 'network/vnfcs/vnfc/{}'},
+ 'vnfc_patch': {'method': 'PATCH', 'url': 'network/vnfcs/vnfc/{}'},
'link': {'method': 'GET', 'url': '{}'},
'service_instance': {'method': 'GET',
'url': 'business/customers/customer/{}/service-subscriptions/service-subscription/{}/service-instances/service-instance/{}'}
}
-def _init_python_aai_api(onap_ip):
+def _init_python_aai_api(onap_ip, content_type='application/json'):
api = API(
api_root_url="https://{}:30233/aai/v14/".format(onap_ip),
params={},
'Authorization': encode("AAI", "AAI"),
'X-FromAppId': 'SCRIPT',
'Accept': 'application/json',
- 'Content-Type': 'application/json',
+ 'Content-Type': content_type,
'X-TransactionId': str(uuid.uuid4()),
},
timeout=30,
#print(json.dumps(template, indent=4))
with _no_ssl_verification():
- response = api.osdf.placement(body=template, params={}, headers={})
+ response = api.osdf.placement(body=template, params={}, headers={}) # pylint: disable=W0612
#if response.body.get('error_message') is not None:
# raise Exception(response.body['error_message']['explanation'])
node['chosen_customer_id'] = aai_data['service-info']['global-customer-id']
node['service_id'] = aai_data['service-info']['service-instance-id']
node = template['template']['demands']['vFW-SINK'][0]
- node['attributes']['model-invariant-id'] = aai_data['vfw-model-info']['model-invariant-id']
- node['attributes']['model-version-id'] = aai_data['vfw-model-info']['model-version-id']
+ node['filtering_attributes']['model-invariant-id'] = aai_data['vfw-model-info']['model-invariant-id']
+ node['filtering_attributes']['model-version-id'] = aai_data['vfw-model-info']['model-version-id']
if exclude:
node['excluded_candidates'][0]['candidate_id'][0] = aai_data['vf-module-id']
del node['required_candidates']
node['required_candidates'][0]['candidate_id'][0] = aai_data['vf-module-id']
del node['excluded_candidates']
node = template['template']['demands']['vPGN'][0]
- node['attributes']['model-invariant-id'] = aai_data['vpgn-model-info']['model-invariant-id']
- node['attributes']['model-version-id'] = aai_data['vpgn-model-info']['model-version-id']
+ node['filtering_attributes']['model-invariant-id'] = aai_data['vpgn-model-info']['model-invariant-id']
+ node['filtering_attributes']['model-version-id'] = aai_data['vpgn-model-info']['model-version-id']
#print(json.dumps(template, indent=4))
v_server['vserver-name'] = v_server['vserver-name'].replace("01", "02")
hostname_cache.append(v_server['vserver-name'])
- api = _init_python_aai_api(onap_ip)
+ api = _init_python_aai_api(onap_ip) # pylint: disable=W0612
vnfc_type = demand.lower()
# with _no_ssl_verification():
# response = api.aai.vnfc(v_server['vserver-name'], body=None, params={}, headers={})
if demand.lower() not in ansible_inventory:
ansible_inventory[demand.lower()] = {}
ansible_inventory[demand.lower()][config['vserver-name']] = ansible_inventory_entry
+
+ _verify_vnfc_data(api, onap_ip, config['vserver-name'], config['ip'])
return config
+def _verify_vnfc_data(aai_api, onap_ip, vnfc_name, oam_ip):
+ with _no_ssl_verification():
+ response = aai_api.aai.vnfc(vnfc_name, body=None, params=None, headers={})
+ #print(json.dumps(response.body))
+ if "ipaddress-v4-oam-vip" not in response.body:
+ print("VNFC information update for {}".format(vnfc_name))
+ api = _init_python_aai_api(onap_ip, 'application/merge-patch+json')
+ response = api.aai.vnfc_patch(vnfc_name, body={"ipaddress-v4-oam-vip": oam_ip, "vnfc-name": vnfc_name}, params=None, headers={})
+
+
def _extract_osdf_appc_identifiers(has_result, demand, onap_ip):
if demand == 'vPGN':
v_server = has_result[demand]['vservers'][0]
if demand.lower() not in ansible_inventory:
ansible_inventory[demand.lower()] = {}
ansible_inventory[demand.lower()][config['vserver-name']] = ansible_inventory_entry
+
+ _verify_vnfc_data(api, onap_ip, config['vserver-name'], config['ip'])
+
return config
@timing("Load OOF Data and Build APPC REQ")
def build_appc_lcms_requests_body(rancher_ip, onap_ip, aai_data, use_oof_cache, if_close_loop_vfw, new_version=None):
- if_has = True
+ if_has = False
if if_has:
migrate_from = _has_request(onap_ip, aai_data, False, use_oof_cache)
#print(json.dumps(migrate_to, indent=4))
req_id = str(uuid.uuid4())
result = list()
- old_version = 2.0
+ old_version = "2.0"
if_dt_only = new_version is None
if new_version is not None and new_version != "1.0":
- old_version = 1.0
+ old_version = "1.0"
requests = list()
include_lock = True
@timing("> Execute APPC REQ")
def appc_lcm_request(onap_ip, req):
- print(req)
+ #print(req)
api = _init_python_appc_lcm_api(onap_ip)
with _no_ssl_verification():
#print(json.dumps(req, indent=4))
api = _init_python_appc_lcm_api(onap_ip)
status_body = _build_appc_lcm_status_body(req)
_set_appc_lcm_timestamp(status_body)
- print("CHECK STATUS")
+ #print("CHECK STATUS")
with _no_ssl_verification():
result = api.lcm.action_status(body=status_body, params={}, headers={})
lcm_requests = workflow["requests"]
print("WORKFLOW << {} >>".format(workflow["description"]))
for i in range(len(lcm_requests)):
- req = lcm_requests[i]["payload"]
- #print(json.dumps(req, indent=4))
- print("APPC LCM << {} >> [{}]".format(req['input']['action'], lcm_requests[i]["description"]))
- _set_appc_lcm_timestamp(req)
- conf_result = False
- result = appc_lcm_request(onap_ip, req)
- print("Result {}".format(result))
-
- if result == 100:
- conf_result = confirm_appc_lcm_action(onap_ip, req, check_result)
- #time.sleep(30)
- elif result == 400:
- conf_result = True
-
- if not conf_result:
- if lcm_requests[i]["breakOnFailure"]:
- raise Exception("APPC LCM << {} >> FAILED".format(req['input']['action']))
- elif "workflow" in lcm_requests[i]:
- print("WORKFLOW << {} >> SKIP".format(lcm_requests[i]["workflow"]["description"]))
- elif "workflow" in lcm_requests[i]:
- _execute_lcm_requests(lcm_requests[i]["workflow"], onap_ip, check_result)
+ req = lcm_requests[i]["payload"]
+ #print(json.dumps(req, indent=4))
+ print("APPC LCM << {} >> [{}]".format(req['input']['action'], lcm_requests[i]["description"]))
+ _set_appc_lcm_timestamp(req)
+ conf_result = False
+ result = appc_lcm_request(onap_ip, req)
+ #print("Result {}".format(result))
+
+ if result == 100:
+ conf_result = confirm_appc_lcm_action(onap_ip, req, check_result)
+ #time.sleep(30)
+ elif result == 400:
+ conf_result = True
+
+ if not conf_result:
+ if lcm_requests[i]["breakOnFailure"]:
+ raise Exception("APPC LCM << {} >> FAILED".format(req['input']['action']))
+ elif "workflow" in lcm_requests[i]:
+ print("WORKFLOW << {} >> SKIP".format(lcm_requests[i]["workflow"]["description"]))
+ elif "workflow" in lcm_requests[i]:
+ _execute_lcm_requests(lcm_requests[i]["workflow"], onap_ip, check_result)
def _generate_cdt_artifact_request(req_id, artifact, action, vnfc_type):
template_file = template_file.format(vnfc_type, 'upgrade.json')
else:
template_file = template_file.format(vnfc_type, 'traffic.json')
-
- artifact_contents = json.dumps(json.loads(open(template_file).read()))
+ #print("Template for action {} in {}".format(action, template_file))
+ #print(json.dumps(json.loads(open(template_file).read()), indent=4))
+ artifact_contents = json.dumps(json.loads(open(template_file).read()), indent=4).replace("\n", "\r\n")
elif artifact['type'] == 'parameter_definitions':
file = 'templates/cdt-templates/templates/{}'
if sw_upgrade:
payload['action'] = action
if artifact['type'] == 'config_template':
- artifact['artifact-contents'] = artifact_contents
+ payload['artifact-contents'] = artifact_contents
artifact['payload'] = payload
for action_artifact in artifacts[action]:
artifact_list.append({'artifact-name': action_artifact['name'], 'artifact-type': action_artifact['type']})
if action != 'AllAction':
- req = _generate_cdt_artifact_request(req_id, action_artifact, action, vnfc_type)
+ req = _generate_cdt_artifact_request(req_id, action_artifact, action, vnfc_type) # pylint: disable=W0612
#print(json.dumps(req, indent=4))
#print(json.dumps(action_info, indent=4))