Exemplo n.º 1
0
def test_get_ns_instances_nsinstanceid(
        test_get_ns_instances_nsinstanceid_keys):
    """Tests API call to read an individual NS instance resource"""
    sonata_nslcm = SONATAClient.Nslcm(HOST_URL)
    sonata_auth = SONATAClient.Auth(HOST_URL)
    sonata_nsd = SONATAClient.Nsd(HOST_URL)
    _token = json.loads(sonata_auth.auth(username=USERNAME, password=PASSWORD))
    _token = json.loads(_token["data"])

    _nsd_list = json.loads(
        sonata_nsd.get_ns_descriptors(token=_token["token"]["access_token"]))
    _nsd_list = json.loads(_nsd_list["data"])

    _ns_list = json.loads(
        sonata_nslcm.get_ns_instances(token=_token["token"]["access_token"]))
    _ns_list = json.loads(_ns_list["data"])

    _ns = None
    for _n in _nsd_list:
        if "A dummy Example." == _n['nsd']['description']:
            for _n2 in _ns_list:
                if _n['uuid'] == _n2['descriptor_reference']:
                    _ns = _n2['uuid']

    response = json.loads(
        sonata_nslcm.get_ns_instances_nsinstanceid(
            token=_token["token"]["access_token"], nsInstanceId=_ns))

    print(response)
    assert response['error'] == False
    response = json.loads(response["data"])
    assert isinstance(response, dict)
    assert set(test_get_ns_instances_nsinstanceid_keys).issubset(
        response.keys()), "All keys should be in the response"
def sonata_cleanup():
    sonata_nsd = SONATAClient.Nsd(HOST_URL)
    sonata_pishahang = SONATAClient.Pishahang(HOST_URL)
    sonata_nslcm = SONATAClient.Nslcm(HOST_URL)
    sonata_auth = SONATAClient.Auth(HOST_URL)
    sonata_vnfpkgm = SONATAClient.VnfPkgm(HOST_URL)

    print("Sonata NSD/VNFD Cleanup")

    _token = json.loads(sonata_auth.auth(username=USERNAME, password=PASSWORD))
    _token = json.loads(_token["data"])

    _csd_list = json.loads(
        sonata_pishahang.get_csd_descriptors(
            token=_token,
            limit=1000,
        ))
    _csd_list = json.loads(_csd_list["data"])

    print(len(_csd_list))
    for _csd in _csd_list:
        sonata_pishahang.delete_csd_descriptors_csdpkgid(token=_token,
                                                         csdpkgid=_csd['uuid'])

    _cosd_list = json.loads(
        sonata_pishahang.get_cosd_descriptors(token=_token, limit=1000))
    _cosd_list = json.loads(_cosd_list["data"])

    print(len(_cosd_list))
    for _cosd in _cosd_list:
        sonata_pishahang.delete_cosd_descriptors_cosdpkgid(
            token=_token, cosdpkgid=_cosd['uuid'])
Exemplo n.º 3
0
def test_post_ns_instances_nsinstanceid_instantiate(
        post_ns_instances_nsinstanceid_instantiate_keys):
    """Tests API call to instantiate an NS"""
    sonata_nslcm = SONATAClient.Nslcm(HOST_URL)
    sonata_auth = SONATAClient.Auth(HOST_URL)
    sonata_nsd = SONATAClient.Nsd(HOST_URL)
    _token = json.loads(sonata_auth.auth(username=USERNAME, password=PASSWORD))
    _token = json.loads(_token["data"])

    _nsd_list = json.loads(
        sonata_nsd.get_ns_descriptors(token=_token["token"]["access_token"]))
    _nsd_list = json.loads(_nsd_list["data"])

    _ns = None
    for _n in _nsd_list:
        if "A dummy Example." == _n['nsd']['description']:
            _ns = _n['uuid']

    if _ns:
        response = json.loads(
            sonata_nslcm.post_ns_instances_nsinstanceid_instantiate(
                token=_token["token"]["access_token"], nsInstanceId=_ns))

        assert response['error'] == False
        response = json.loads(response["data"])
        assert isinstance(response, dict)
        assert set(post_ns_instances_nsinstanceid_instantiate_keys).issubset(
            response.keys()), "All keys should be in the response"
    else:
        return False
def get_individual_times(individual_init_times, folder_path, init_time, _ns_list):
    time.sleep(10)
    try:
        v1 = client.CoreV1Api(aApiClient)
        print("Listing pods with their IPs:")
        _servers = v1.list_namespaced_pod(namespace='default', watch=False)

        sonata_nslcm = SONATAClient.Nslcm(HOST_URL) 
        sonata_auth = SONATAClient.Auth(HOST_URL)

        _token = json.loads(sonata_auth.auth(
                        username=USERNAME,
                        password=PASSWORD))
        _token = json.loads(_token["data"])

        _individual_init_times = {}
        for _i, _v in individual_init_times.items():
            # service_instance_uuid
            request = json.loads(sonata_nslcm.get_ns_instances_request_status(
                                token=_token["token"]["access_token"], nsInstanceId=_i))
            request = json.loads(request["data"])

            print(request)
            _individual_init_times[request['service_instance_uuid']] = _v
            time.sleep(1)

        with open('./{nit}/individual-build-times.csv'.format(nit=nit), 'w') as _file:
            _file.write("id,mano_time,ns_mano_time,vim_time\n")
            _id = 0
            for _s in _servers.items:

                # ns_init_time = next((item for item in _ns_list if item["short-name"] == "{}-{}".format(_s.name.split("-")[0], _s.name.split("-")[1])), False)
                # if not ns_init_time:
                #     ns_init_time = 0
                # else:
                #     ns_init_time = ns_init_time['crete-time']
                # print(_s.status.container_statuses)

                server_created = _s.metadata.creation_timestamp
                launch_time = _s.status.container_statuses[0].state.running.started_at

                if int(server_created.strftime("%s")) >= int(init_time):
                    # print(server_created.strftime("%s"), nsname, individual_init_times[int(_s.name.split("-")[1])])
                    _mano_time = float(server_created.strftime("%s")) - float(_individual_init_times[_s.metadata.labels['service']])
                    ns_mano_time = float(server_created.strftime("%s")) - float(_individual_init_times[_s.metadata.labels['service']])
                    # ns_mano_time = float(server_created.strftime("%s")) - float(ns_init_time)
                    _vim_time = float(launch_time.strftime("%s")) - float(server_created.strftime("%s"))

                    print("{},{},{},{}\n".format(_id, _mano_time, ns_mano_time, _vim_time))
                    _file.write("{},{},{},{}\n".format(_id, _mano_time, ns_mano_time, _vim_time))
                    _id += 1
    
    except Exception as e:
        print(e)
        print("get_individual_times")    
Exemplo n.º 5
0
def test_get_vnf_instances(get_vnf_instances_keys):
    """Tests API call query multiple VNF instances"""
    sonata_nslcm = SONATAClient.Nslcm(HOST_URL)
    sonata_auth = SONATAClient.Auth(HOST_URL)
    _token = json.loads(sonata_auth.auth(username=USERNAME, password=PASSWORD))
    _token = json.loads(_token["data"])
    response = json.loads(sonata_nslcm.get_vnf_instances(
                            token=_token["token"]["access_token"], limit=1000))
    response = json.loads(response["data"])

    assert isinstance(response, list)
    if len(response) > 0:
         assert set(get_vnf_instances_keys).issubset(
                    response[0].keys()), "All keys should be in the response"
Exemplo n.º 6
0
def test_get_ns_instances_request_status(get_ns_instances_request_status_keys):
    """Tests API call query multiple NS instances"""
    sonata_nslcm = SONATAClient.Nslcm(HOST_URL)
    sonata_auth = SONATAClient.Auth(HOST_URL)
    _token = json.loads(sonata_auth.auth(username=USERNAME, password=PASSWORD))
    _token = json.loads(_token["data"])
    response = json.loads(sonata_nslcm.get_ns_instances_request_status(
                            token=_token["token"]["access_token"],
                            nsInstanceId="3f2a59c5-b1d2-4a56-a6ad-21f7a402bc77",
                            limit=1000))
    response = json.loads(response["data"])
    print(len(response))
    print(response)
    # print(response[0].keys())
    assert isinstance(response, list) or isinstance(response, dict)
Exemplo n.º 7
0
def test_get_vnf_instances_vnfinstanceid(get_vnf_instances_vnfinstanceid_keys):
    """Tests API call to read an individual VNF instance resource"""
    sonata_nslcm = SONATAClient.Nslcm(HOST_URL)
    sonata_auth = SONATAClient.Auth(HOST_URL)
    _token = json.loads(sonata_auth.auth(username=USERNAME, password=PASSWORD))
    _token = json.loads(_token["data"])

    _vnf_list = json.loads(sonata_nslcm.get_vnf_instances(
                            token=_token["token"]["access_token"]))
    _vnf_list = json.loads(_vnf_list["data"])

    response = json.loads(sonata_nslcm.get_vnf_instances_vnfinstanceid(
                            token=_token["token"]["access_token"], vnfInstanceId=_vnf_list[0]["uuid"]))

    assert response['error'] == False
    response = json.loads(response["data"])
    assert isinstance(response, dict)
    assert set(get_vnf_instances_vnfinstanceid_keys).issubset(
                response.keys()), "All keys should be in the response"
Exemplo n.º 8
0
def test_post_cs_instances_nsinstanceid_terminate(
        post_cs_instances_nsinstanceid_terminate_keys):
    """Tests API call to instantiate an NS"""
    sonata_nslcm = SONATAClient.Nslcm(HOST_URL)
    sonata_pishahang = SONATAClient.Pishahang(HOST_URL)
    sonata_auth = SONATAClient.Auth(HOST_URL)

    _token = json.loads(sonata_auth.auth(username=USERNAME, password=PASSWORD))
    _token = json.loads(_token["data"])

    _csd_list = json.loads(
        sonata_pishahang.get_csd_descriptors(
            token=_token["token"]["access_token"]))
    _csd_list = json.loads(_csd_list["data"])

    _ns_list = json.loads(
        sonata_nslcm.get_ns_instances(token=_token["token"]["access_token"]))
    _ns_list = json.loads(_ns_list["data"])

    _ns = None
    for _n in _csd_list:
        if "scramble-csd" == _n['csd']['name']:
            print(_n['uuid'])
            for _n2 in _ns_list:
                print(_n2)
                if _n['uuid'] == _n2['descriptor_reference']:
                    _ns = _n2['uuid']

    if _ns:
        response = json.loads(
            sonata_pishahang.post_cs_instances_nsinstanceid_terminate(
                token=_token["token"]["access_token"], nsInstanceId=_ns))
        assert response['error'] == False
        response = json.loads(response["data"])
        assert isinstance(response, dict)
        assert set(post_cs_instances_nsinstanceid_terminate_keys).issubset(
            response.keys()), "All keys should be in the response"
    else:
        return False
                        case=_case,
                        instances=_instances,
                        rpm=_rpm,
                        run=_run)

                    NSD_PATH = "/app/SONATA/Descriptors/CASE{case}/{image}_case{case}_nsd_sonata.yml".format(
                        image=_image, case=_case)
                    # VNFD_PATHS = ["/app/SONATA/Descriptors/CASE{case}/{image}_vnfd.1.yml".format(image=_image, case=_case), "/app/SONATA/Descriptors/CASE{case}/{image}_vnfd.2.yml".format(image=_image, case=_case), "/app/SONATA/Descriptors/CASE{case}/{image}_vnfd.3.yml".format(image=_image, case=_case), "/app/SONATA/Descriptors/CASE{case}/{image}_vnfd.4.yml".format(image=_image, case=_case), "/app/SONATA/Descriptors/CASE{case}/{image}_vnfd.5.yml".format(image=_image, case=_case)]
                    with open(NSD_PATH, 'r') as file:
                        nsd_data = file.read()

                    # with open(VNFD_PATH, 'r') as file:
                    #     vnfd_data = file.read()

                    sonata_nsd = SONATAClient.Nsd(HOST_URL)
                    sonata_nslcm = SONATAClient.Nslcm(HOST_URL)
                    sonata_auth = SONATAClient.Auth(HOST_URL)
                    sonata_vnfpkgm = SONATAClient.VnfPkgm(HOST_URL)

                    experiment_timestamps = {}

                    sonata_cleanup()

                    _token = json.loads(
                        sonata_auth.auth(username=USERNAME, password=PASSWORD))
                    _token = json.loads(_token["data"])

                    for _c in range(1, 6):
                        # for _vnfd in VNFD_PATHS:
                        VNFD_PATH = "/app/SONATA/Descriptors/CASE{case}/{image}_vnfd_{vnfid}.yml".format(
                            image=_image, case=_case, vnfid=_c)