from osmclient.common.exceptions import NotFound
import yaml
import json
+import logging
class Ns(object):
def __init__(self, http=None, client=None):
self._http = http
self._client = client
+ self._logger = logging.getLogger('osmclient')
self._apiName = '/nslcm'
self._apiVersion = '/v1'
self._apiResource = '/ns_instances_content'
# NS '--wait' option
def _wait(self, id, deleteFlag=False):
+ self._logger.debug("")
# Endpoint to get operation status
apiUrlStatus = '{}{}{}'.format(self._apiName, self._apiVersion, '/ns_lcm_op_occs')
# Wait for status for NS instance creation/update/deletion
def list(self, filter=None):
"""Returns a list of NS
"""
+ self._logger.debug("")
self._client.get_token()
filter_string = ''
if filter:
def get(self, name):
"""Returns an NS based on name or id
"""
+ self._logger.debug("")
self._client.get_token()
if utils.validate_uuid4(name):
for ns in self.list():
raise NotFound("ns {} not found".format(name))
def get_individual(self, name):
+ self._logger.debug("")
self._client.get_token()
ns_id = name
if not utils.validate_uuid4(name):
raise NotFound("ns {} not found".format(name))
def delete(self, name, force=False, wait=False):
+ self._logger.debug("")
ns = self.get(name)
querystring = ''
if force:
def create(self, nsd_name, nsr_name, account, config=None,
ssh_keys=None, description='default description',
admin_status='ENABLED', wait=False):
+ self._logger.debug("")
self._client.get_token()
nsd = self._client.nsd.get(nsd_name)
wim_account_id = {}
def get_vim_account_id(vim_account):
+ self._logger.debug("")
if vim_account_id.get(vim_account):
return vim_account_id[vim_account]
return vim['_id']
def get_wim_account_id(wim_account):
+ self._logger.debug("")
if not isinstance(wim_account, str):
return wim_account
if wim_account_id.get(wim_account):
if not additional_param_vnf.get("member-vnf-index"):
raise ValueError("Error at --config 'additionalParamsForVnf' items must contain "
"'member-vnf-index'")
- if not additional_param_vnf.get("additionalParams"):
- raise ValueError("Error at --config 'additionalParamsForVnf' items must contain "
- "'additionalParams'")
if "wim_account" in ns_config:
wim_account = ns_config.pop("wim_account")
if wim_account is not None:
ns['wimAccountId'] = get_wim_account_id(wim_account)
+ if "timeout_ns_deploy" in ns_config:
+ ns["timeout_ns_deploy"] = ns_config.pop("timeout_ns_deploy")
# print(yaml.safe_dump(ns))
try:
def list_op(self, name, filter=None):
"""Returns the list of operations of a NS
"""
+ self._logger.debug("")
ns = self.get(name)
try:
self._apiResource = '/ns_lcm_op_occs'
def get_op(self, operationId):
"""Returns the status of an operation
"""
+ self._logger.debug("")
self._client.get_token()
try:
self._apiResource = '/ns_lcm_op_occs'
def exec_op(self, name, op_name, op_data=None, wait=False, ):
"""Executes an operation on a NS
"""
+ self._logger.debug("")
+ ns = self.get(name)
try:
ns = self.get(name)
self._apiResource = '/ns_instances'
def scale_vnf(self, ns_name, vnf_name, scaling_group, scale_in, scale_out, wait=False):
"""Scales a VNF by adding/removing VDUs
"""
+ self._logger.debug("")
self._client.get_token()
try:
op_data={}
raise ClientException(message)
def create_alarm(self, alarm):
+ self._logger.debug("")
self._client.get_token()
data = {}
data["create_alarm_request"] = {}
raise ClientException(message)
def delete_alarm(self, name):
+ self._logger.debug("")
self._client.get_token()
data = {}
data["delete_alarm_request"] = {}
raise ClientException(message)
def export_metric(self, metric):
+ self._logger.debug("")
self._client.get_token()
data = {}
data["read_metric_data_request"] = metric
raise ClientException(message)
def get_field(self, ns_name, field):
+ self._logger.debug("")
nsr = self.get(ns_name)
print(yaml.safe_dump(nsr))
if nsr is None:
return nsr[field]
raise NotFound("failed to find {} in ns {}".format(field, ns_name))
+