Add ``openstack vnflcm op list`` to python-tackerclient. This command can execute getting the list of VNF LCM Operation Occurrences. User can specify filters for more specific results. Note: - Filtering for the following attributes: operationParams, error, resourceChanges and changedInfo is only limited to the parent attribute. Currently, child attributes/nested attributes are not searchable. Implements: blueprint support-fundamental-lcm Spec: https://specs.openstack.org/openstack/tacker-specs/specs/wallaby/support-fundamental-vnf-lcm-based-on-ETSI-NFV.html Change-Id: Ie0b3399946d2a705011269025102d9380102ca92
		
			
				
	
	
		
			108 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# Licensed under the Apache License, Version 2.0 (the "License"); you may
 | 
						|
# not use this file except in compliance with the License. You may obtain
 | 
						|
# a copy of the License at
 | 
						|
#
 | 
						|
#      http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
#
 | 
						|
# Unless required by applicable law or agreed to in writing, software
 | 
						|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
						|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
						|
# License for the specific language governing permissions and limitations
 | 
						|
# under the License.
 | 
						|
 | 
						|
from oslo_utils.fixture import uuidsentinel
 | 
						|
from oslo_utils import uuidutils
 | 
						|
 | 
						|
from tackerclient.osc import utils as tacker_osc_utils
 | 
						|
 | 
						|
 | 
						|
def vnflcm_op_occ_response(attrs=None, action=''):
 | 
						|
    """Create a fake vnflcm op occurrence.
 | 
						|
 | 
						|
    :param Dictionary attrs:
 | 
						|
        A dictionary with all attributes
 | 
						|
    :return:
 | 
						|
        A vnf lcm op occs dict
 | 
						|
    """
 | 
						|
    attrs = attrs or {}
 | 
						|
 | 
						|
    # Set default attributes.
 | 
						|
    dummy_vnf_lcm_op_occ = {
 | 
						|
        "id": uuidsentinel.vnflcm_op_occ_id,
 | 
						|
        "operationState": "STARTING",
 | 
						|
        "stateEnteredTime": "2018-12-22T16:59:45.187Z",
 | 
						|
        "startTime": "2018-12-22T16:59:45.187Z",
 | 
						|
        "vnfInstanceId": "376f37f3-d4e9-4d41-8e6a-9b0ec98695cc",
 | 
						|
        "grantId": "",
 | 
						|
        "operation": "INSTANTIATE",
 | 
						|
        "isAutomaticInvocation": "true",
 | 
						|
        "operationParams": {
 | 
						|
            "flavourId": "default",
 | 
						|
            "instantiationLevelId": "n-mme-min"
 | 
						|
        },
 | 
						|
        "isCancelPending": "true",
 | 
						|
        "cancelMode": "",
 | 
						|
        "error": {
 | 
						|
            "status": "500",
 | 
						|
            "detail": "internal server error"
 | 
						|
        },
 | 
						|
        "resourceChanges": [],
 | 
						|
        "changedInfo": [],
 | 
						|
        "changedExtConnectivity": [],
 | 
						|
        "_links": {
 | 
						|
            "self": ""
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    if action == 'fail':
 | 
						|
        fail_not_needed_columns = [
 | 
						|
            'grantId', 'operationParams',
 | 
						|
            'cancelMode', 'resourceChanges', 'changedInfo',
 | 
						|
            'changedExtConnectivity']
 | 
						|
 | 
						|
        for key in fail_not_needed_columns:
 | 
						|
            del dummy_vnf_lcm_op_occ[key]
 | 
						|
 | 
						|
    # Overwrite default attributes.
 | 
						|
    dummy_vnf_lcm_op_occ.update(attrs)
 | 
						|
 | 
						|
    return dummy_vnf_lcm_op_occ
 | 
						|
 | 
						|
 | 
						|
def get_vnflcm_op_occ_data(vnf_lcm_op_occ, columns=None):
 | 
						|
    """Get the vnflcm op occurrence.
 | 
						|
 | 
						|
    :return:
 | 
						|
        A tuple object sorted based on the name of the columns.
 | 
						|
    """
 | 
						|
    complex_attributes = [
 | 
						|
        'operationParams', 'error', 'resourceChanges',
 | 
						|
        'changedInfo', 'changedExtConnectivity', 'links']
 | 
						|
 | 
						|
    for attribute in complex_attributes:
 | 
						|
        if vnf_lcm_op_occ.get(attribute):
 | 
						|
            vnf_lcm_op_occ.update(
 | 
						|
                {attribute: tacker_osc_utils.FormatComplexDataColumn(
 | 
						|
                    vnf_lcm_op_occ[attribute])})
 | 
						|
 | 
						|
    # return the list of data as per column order
 | 
						|
    if columns:
 | 
						|
        return tuple([vnf_lcm_op_occ[key] for key in columns])
 | 
						|
 | 
						|
    return tuple([vnf_lcm_op_occ[key] for key in sorted(
 | 
						|
        vnf_lcm_op_occ.keys())])
 | 
						|
 | 
						|
 | 
						|
def create_vnflcm_op_occs(count=2):
 | 
						|
    """Create multiple fake vnflcm op occs.
 | 
						|
 | 
						|
    :param count: The number of vnflcm op occs to fake
 | 
						|
    :return:
 | 
						|
        A list of fake vnflcm op occs dictionary
 | 
						|
    """
 | 
						|
    vnflcm_op_occs = []
 | 
						|
    for i in range(0, count):
 | 
						|
        unique_id = uuidutils.generate_uuid()
 | 
						|
        vnflcm_op_occs.append(vnflcm_op_occ_response(attrs={'id': unique_id}))
 | 
						|
    return vnflcm_op_occs
 |