diff options
Diffstat (limited to 'functest/opnfv_tests')
92 files changed, 4433 insertions, 25503 deletions
diff --git a/functest/opnfv_tests/openstack/refstack_client/__init__.py b/functest/opnfv_tests/openstack/api/__init__.py index e69de29bb..e69de29bb 100644 --- a/functest/opnfv_tests/openstack/refstack_client/__init__.py +++ b/functest/opnfv_tests/openstack/api/__init__.py diff --git a/functest/opnfv_tests/openstack/api/connection_check.py b/functest/opnfv_tests/openstack/api/connection_check.py new file mode 100644 index 000000000..eaf9767c0 --- /dev/null +++ b/functest/opnfv_tests/openstack/api/connection_check.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python + +# Copyright (c) 2018 Orange and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +"""Verify the connection to OpenStack Services""" + +import logging +import time + +import os_client_config +import shade +from xtesting.core import testcase + +from functest.utils import env +from functest.utils import functest_utils + + +class ConnectionCheck(testcase.TestCase): + """Perform simplest queries""" + __logger = logging.getLogger(__name__) + + func_list = [ + "get_network_extensions", "list_aggregates", "list_domains", + "list_endpoints", "list_floating_ip_pools", "list_floating_ips", + "list_hypervisors", "list_keypairs", "list_networks", "list_ports", + "list_role_assignments", "list_roles", "list_routers", "list_servers", + "list_subnets"] + + def __init__(self, **kwargs): + if "case_name" not in kwargs: + kwargs["case_name"] = 'connection_check' + super().__init__(**kwargs) + self.output_log_name = 'functest.log' + self.output_debug_log_name = 'functest.debug.log' + try: + cloud_config = os_client_config.get_config() + self.cloud = shade.OpenStackCloud(cloud_config=cloud_config) + except Exception: # pylint: disable=broad-except + self.cloud = None + + def run(self, **kwargs): + # pylint: disable=protected-access + """Run all read operations to check connections""" + status = testcase.TestCase.EX_RUN_ERROR + try: + assert self.cloud + self.start_time = time.time() + self.__logger.debug( + "list_services: %s", functest_utils.list_services(self.cloud)) + if env.get('NO_TENANT_NETWORK').lower() == 'true': + self.func_list.remove("list_floating_ip_pools") + self.func_list.remove("list_floating_ips") + self.func_list.remove("list_routers") + for func in self.func_list: + self.__logger.debug( + "%s: %s", func, getattr(self.cloud, func)()) + data = self.cloud._network_client.get("/service-providers.json") + self.__logger.debug( + "list_service_providers: %s", + self.cloud._get_and_munchify('service_providers', data)) + functest_utils.get_openstack_version(self.cloud) + self.result = 100 + status = testcase.TestCase.EX_OK + except Exception: # pylint: disable=broad-except + self.__logger.exception('Cannot run %s', self.case_name) + finally: + self.stop_time = time.time() + return status diff --git a/functest/opnfv_tests/openstack/snaps/__init__.py b/functest/opnfv_tests/openstack/barbican/__init__.py index e69de29bb..e69de29bb 100644 --- a/functest/opnfv_tests/openstack/snaps/__init__.py +++ b/functest/opnfv_tests/openstack/barbican/__init__.py diff --git a/functest/opnfv_tests/openstack/barbican/barbican.py b/functest/opnfv_tests/openstack/barbican/barbican.py new file mode 100644 index 000000000..706304bbf --- /dev/null +++ b/functest/opnfv_tests/openstack/barbican/barbican.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python + +# Copyright (c) 2018 Orange and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +# pylint: disable=missing-docstring + +from six.moves import configparser + +from functest.opnfv_tests.openstack.tempest import tempest + + +class Barbican(tempest.TempestCommon): + + def configure(self, **kwargs): + super().configure(**kwargs) + rconfig = configparser.RawConfigParser() + rconfig.read(self.conf_file) + if not rconfig.has_section('auth'): + rconfig.add_section('auth') + rconfig.set('auth', 'tempest_roles', 'creator') + if not rconfig.has_section('glance'): + rconfig.add_section('glance') + rconfig.set('glance', 'verify_glance_signatures', True) + if not rconfig.has_section('ephemeral_storage_encryption'): + rconfig.add_section('ephemeral_storage_encryption') + rconfig.set('ephemeral_storage_encryption', 'enabled', True) + if not rconfig.has_section('image-feature-enabled'): + rconfig.add_section('image-feature-enabled') + rconfig.set('image-feature-enabled', 'api_v1', False) + with open(self.conf_file, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + self.backup_tempest_config(self.conf_file, self.res_dir) diff --git a/functest/opnfv_tests/vnf/ims/ixia/__init__.py b/functest/opnfv_tests/openstack/cinder/__init__.py index e69de29bb..e69de29bb 100644 --- a/functest/opnfv_tests/vnf/ims/ixia/__init__.py +++ b/functest/opnfv_tests/openstack/cinder/__init__.py diff --git a/functest/opnfv_tests/openstack/cinder/cinder_test.py b/functest/opnfv_tests/openstack/cinder/cinder_test.py new file mode 100644 index 000000000..7d8c0a0bd --- /dev/null +++ b/functest/opnfv_tests/openstack/cinder/cinder_test.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python + +# Copyright (c) 2018 Enea AB and others + +# This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# +# http://www.apache.org/licenses/LICENSE-2.0 + +"""CinderCheck testcase.""" + +import logging + +import pkg_resources +from scp import SCPClient +from xtesting.core import testcase + +from functest.core import singlevm +from functest.utils import config +from functest.utils import env + + +class CinderCheck(singlevm.SingleVm2): + """ + CinderCheck testcase implementation. + + Class to execute the CinderCheck test using 2 Floating IPs + to connect to the VMs and one data volume + """ + # pylint: disable=too-many-instance-attributes + volume_timeout = 60 + + def __init__(self, **kwargs): + """Initialize testcase.""" + if "case_name" not in kwargs: + kwargs["case_name"] = "cinder_test" + super().__init__(**kwargs) + self.logger = logging.getLogger(__name__) + self.vm2 = None + self.fip2 = None + self.ssh2 = None + self.volume = None + + def execute(self): + """Execute CinderCheck testcase. + + Sets up the OpenStack keypair, router, security group, and VM instance + objects then validates cinder. + :return: the exit code from the super.execute() method + """ + return self._write_data() or self._read_data() + + def prepare(self): + super().prepare() + self.vm2 = self.boot_vm( + f'{self.case_name}-vm2_{self.guid}', + key_name=self.keypair.id, + security_groups=[self.sec.id]) + (self.fip2, self.ssh2) = self.connect(self.vm2) + self.volume = self.cloud.create_volume( + name=f'{self.case_name}-volume_{self.guid}', size='2', + timeout=self.volume_timeout, wait=True) + + def _write_data(self): + assert self.cloud + self.cloud.attach_volume(self.sshvm, self.volume, + timeout=self.volume_timeout) + write_data_script = pkg_resources.resource_filename( + 'functest.opnfv_tests.openstack.cinder', 'write_data.sh') + try: + scp = SCPClient(self.ssh.get_transport()) + scp.put(write_data_script, remote_path="~/") + except Exception: # pylint: disable=broad-except + self.logger.error("File not transfered!") + return testcase.TestCase.EX_RUN_ERROR + self.logger.debug("ssh: %s", self.ssh) + (_, stdout, stderr) = self.ssh.exec_command( + f"sh ~/write_data.sh {env.get('VOLUME_DEVICE_NAME')}") + self.logger.debug( + "volume_write stdout: %s", stdout.read().decode("utf-8")) + self.logger.debug( + "volume_write stderr: %s", stderr.read().decode("utf-8")) + # Detach volume from VM 1 + self.logger.info("Detach volume from VM 1") + self.cloud.detach_volume( + self.sshvm, self.volume, timeout=self.volume_timeout) + return stdout.channel.recv_exit_status() + + def _read_data(self): + assert self.cloud + # Attach volume to VM 2 + self.logger.info("Attach volume to VM 2") + self.cloud.attach_volume(self.vm2, self.volume, + timeout=self.volume_timeout) + # Check volume data + read_data_script = pkg_resources.resource_filename( + 'functest.opnfv_tests.openstack.cinder', 'read_data.sh') + try: + scp = SCPClient(self.ssh2.get_transport()) + scp.put(read_data_script, remote_path="~/") + except Exception: # pylint: disable=broad-except + self.logger.error("File not transfered!") + return testcase.TestCase.EX_RUN_ERROR + self.logger.debug("ssh: %s", self.ssh2) + (_, stdout, stderr) = self.ssh2.exec_command( + f"sh ~/read_data.sh {env.get('VOLUME_DEVICE_NAME')}") + self.logger.debug( + "read volume stdout: %s", stdout.read().decode("utf-8")) + self.logger.debug( + "read volume stderr: %s", stderr.read().decode("utf-8")) + self.logger.info("Detach volume from VM 2") + self.cloud.detach_volume( + self.vm2, self.volume, timeout=self.volume_timeout) + return stdout.channel.recv_exit_status() + + def clean(self): + assert self.cloud + if self.vm2: + self.cloud.delete_server( + self.vm2, wait=True, + timeout=getattr(config.CONF, 'vping_vm_delete_timeout')) + if self.fip2: + self.cloud.delete_floating_ip(self.fip2.id) + if self.volume: + self.cloud.delete_volume(self.volume.id) + super().clean() diff --git a/functest/opnfv_tests/openstack/cinder/read_data.sh b/functest/opnfv_tests/openstack/cinder/read_data.sh new file mode 100644 index 000000000..2c5fdd4c0 --- /dev/null +++ b/functest/opnfv_tests/openstack/cinder/read_data.sh @@ -0,0 +1,26 @@ +#!/bin/sh -e + +# Copyright (c) 2018 Enea AB and others + +# This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# +# http://www.apache.org/licenses/LICENSE-2.0 + +DEST=$(mktemp -d) +VOL_DEV_NAME=${1:-vdb} +echo "VOL_DEV_NAME: $VOL_DEV_NAME" + +echo "$(lsblk -l -o NAME)" +if [ ! -z $(lsblk -l -o NAME | grep $VOL_DEV_NAME) ]; then + sudo mount /dev/$VOL_DEV_NAME $DEST + if [ -f $DEST/new_data ]; then + echo "Found new data!" + else + echo "Failed to find data!" + exit 1 + fi +fi + +exit 0 diff --git a/functest/opnfv_tests/openstack/cinder/write_data.sh b/functest/opnfv_tests/openstack/cinder/write_data.sh new file mode 100644 index 000000000..16845ba31 --- /dev/null +++ b/functest/opnfv_tests/openstack/cinder/write_data.sh @@ -0,0 +1,30 @@ +#!/bin/sh -e + +# Copyright (c) 2018 Enea AB and others + +# This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# +# http://www.apache.org/licenses/LICENSE-2.0 + +DEST=$(mktemp -d) +VOL_DEV_NAME=${1:-vdb} +echo "VOL_DEV_NAME: $VOL_DEV_NAME" + +echo "$(lsblk -l -o NAME)" + +if [ ! -z $(lsblk -l -o NAME | grep $VOL_DEV_NAME) ]; then + sudo mkfs.ext4 -F /dev/$VOL_DEV_NAME + sudo mount /dev/$VOL_DEV_NAME $DEST + sudo touch $DEST/new_data + if [ -f $DEST/new_data ]; then + echo "New data added to the volume!" + sudo umount $DEST + fi +else + echo "Failed to write data!" + exit 1 +fi + +exit 0 diff --git a/functest/opnfv_tests/vnf/ims/ixia/utils/__init__.py b/functest/opnfv_tests/openstack/patrole/__init__.py index e69de29bb..e69de29bb 100644 --- a/functest/opnfv_tests/vnf/ims/ixia/utils/__init__.py +++ b/functest/opnfv_tests/openstack/patrole/__init__.py diff --git a/functest/opnfv_tests/openstack/patrole/patrole.py b/functest/opnfv_tests/openstack/patrole/patrole.py new file mode 100644 index 000000000..88c42f269 --- /dev/null +++ b/functest/opnfv_tests/openstack/patrole/patrole.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python + +# Copyright (c) 2018 Orange and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +# pylint: disable=missing-docstring + +from six.moves import configparser + +from functest.opnfv_tests.openstack.tempest import tempest + + +class Patrole(tempest.TempestCommon): + + def configure(self, **kwargs): + super().configure(**kwargs) + rconfig = configparser.RawConfigParser() + rconfig.read(self.conf_file) + if not rconfig.has_section('rbac'): + rconfig.add_section('rbac') + rconfig.set('rbac', 'rbac_test_roles', kwargs.get('roles', 'admin')) + with open(self.conf_file, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + self.backup_tempest_config(self.conf_file, self.res_dir) diff --git a/functest/opnfv_tests/openstack/rally/blacklist.txt b/functest/opnfv_tests/openstack/rally/blacklist.txt deleted file mode 100644 index 4b42c312a..000000000 --- a/functest/opnfv_tests/openstack/rally/blacklist.txt +++ /dev/null @@ -1,71 +0,0 @@ -scenario: - - - scenarios: - - '^os-nosdn-lxd-(no)?ha$' - installers: - - joid - tests: - - NovaServers.boot_server_from_volume_and_delete - - - scenarios: - - '^os-' # all scenarios - installers: - - '.+' # all installers - tests: - # Following tests currently fail due to required Gnocchi API: - # HTTP 410: "This telemetry installation is configured to use - # Gnocchi. Please use the Gnocchi API available on the - # metric endpoint to retrieve data." - # Issue: https://bugs.launchpad.net/rally/+bug/1704322 - - CeilometerMeters.list_matched_meters - - CeilometerMeters.list_meters - - CeilometerQueries.create_and_query_samples - - CeilometerResource.get_tenant_resources - - CeilometerResource.list_matched_resources - - CeilometerResource.list_resources - - CeilometerSamples.list_matched_samples - - CeilometerSamples.list_samples - - CeilometerStats.create_meter_and_get_stats - - CeilometerStats.get_stats - - - scenarios: - - '^os-' # all scenarios - installers: - - '.+' # all installers - tests: - # Following test currently fails due to but in - # python-ceilometerclient during fetching of event_types - # Bug: https://bugs.launchpad.net/ubuntu/+bug/1704138 - # Fix: https://review.openstack.org/#/c/483402/ - - CeilometerEvents.create_user_and_list_event_types - - - scenarios: - - '^os-' # all scenarios - installers: - - '.+' # all installers - tests: - # Starting from ocata, following tests require the presence of - # panko in the deployment. This is not currently fulfilled - # Ref: https://docs.openstack.org/releasenotes/ceilometer/ocata.html - - 'CeilometerEvents..*' - - 'CeilometerTraits..*' - - - scenarios: - - '^os-' # all scenarios - installers: - - '.+' # all installers - tests: - # Rally is still utilizing Ceilometer API which is deprecated - # in Pike. - # Ref: https://docs.openstack.org/releasenotes/ceilometer/pike.html - - 'Ceilometer..*' - -functionality: - - - functions: - - no_migration - tests: - - NovaServers.boot_and_live_migrate_server - - NovaServers.boot_server_attach_created_volume_and_live_migrate - - NovaServers.boot_server_from_volume_and_live_migrate - - NovaServers.boot_and_migrate_server diff --git a/functest/opnfv_tests/openstack/rally/blacklist.yaml b/functest/opnfv_tests/openstack/rally/blacklist.yaml new file mode 100644 index 000000000..e16b83ba6 --- /dev/null +++ b/functest/opnfv_tests/openstack/rally/blacklist.yaml @@ -0,0 +1,40 @@ +--- +scenario: + +functionality: + - + functions: + - block_migration + tests: + - NovaServers.boot_server_from_volume_and_live_migrate + - + functions: + - no_migration + tests: + - NovaServers.boot_and_live_migrate_server + - NovaServers.boot_server_attach_created_volume_and_live_migrate + - NovaServers.boot_server_from_volume_and_live_migrate + - NovaServers.boot_and_migrate_server + - + functions: + - no_net_trunk_service + tests: + - '^NeutronTrunk' + - + functions: + - no_floating_ip + tests: + - HeatStacks.create_and_delete_stack + - NovaServers.boot_and_associate_floating_ip + - NovaServers.boot_server_and_list_interfaces + - NovaServers.boot_server_associate_and_dissociate_floating_ip + - NeutronNetworks.create_and_delete_floating_ips + - NeutronNetworks.create_and_list_floating_ips + - NeutronNetworks.associate_and_dissociate_floating_ips + - VMTasks.dd_load_test + - NeutronNetworks.create_and_delete_routers + - NeutronNetworks.create_and_list_routers + - NeutronNetworks.create_and_show_routers + - NeutronNetworks.create_and_update_routers + - NeutronNetworks.set_and_clear_router_gateway + - Quotas.neutron_update diff --git a/functest/opnfv_tests/openstack/rally/macro/macro.yaml b/functest/opnfv_tests/openstack/rally/macro/macro.yaml index 48c0333e9..2536c92f0 100644 --- a/functest/opnfv_tests/openstack/rally/macro/macro.yaml +++ b/functest/opnfv_tests/openstack/rally/macro/macro.yaml @@ -95,3 +95,9 @@ disk_format: {{ type }} image_location: {{ location }} {%- endmacro %} + +{%- macro volume_service(version, service_type) %} + cinder: + version: {{ version }} + service_type: {{ service_type }} +{%- endmacro %} diff --git a/functest/opnfv_tests/openstack/rally/rally.py b/functest/opnfv_tests/openstack/rally/rally.py index eefd3eb46..3d897e25d 100644 --- a/functest/opnfv_tests/openstack/rally/rally.py +++ b/functest/opnfv_tests/openstack/rally/rally.py @@ -11,149 +11,142 @@ """Rally testcases implementation.""" from __future__ import division +from __future__ import print_function +import fileinput import json import logging import os import re +import shutil import subprocess import time -import uuid import pkg_resources +import prettytable +from ruamel.yaml import YAML +import six +from six.moves import configparser +from xtesting.core import testcase import yaml -from functest.core import testcase -from functest.energy import energy -from functest.opnfv_tests.openstack.snaps import snaps_utils -from functest.opnfv_tests.openstack.tempest import conf_utils -from functest.utils.constants import CONST - -from snaps.config.flavor import FlavorConfig -from snaps.config.image import ImageConfig -from snaps.config.network import NetworkConfig, SubnetConfig -from snaps.config.router import RouterConfig - -from snaps.openstack.create_flavor import OpenStackFlavor -from snaps.openstack.tests import openstack_tests -from snaps.openstack.utils import deploy_utils +from functest.core import singlevm +from functest.utils import config +from functest.utils import env +from functest.utils import functest_utils LOGGER = logging.getLogger(__name__) -class RallyBase(testcase.TestCase): +class RallyBase(singlevm.VmReady2): """Base class form Rally testcases implementation.""" - TESTS = ['authenticate', 'glance', 'ceilometer', 'cinder', 'heat', - 'keystone', 'neutron', 'nova', 'quotas', 'vm', 'all'] - GLANCE_IMAGE_NAME = CONST.__getattribute__('openstack_image_name') - GLANCE_IMAGE_FILENAME = CONST.__getattribute__('openstack_image_file_name') - GLANCE_IMAGE_PATH = os.path.join( - CONST.__getattribute__('dir_functest_images'), - GLANCE_IMAGE_FILENAME) - GLANCE_IMAGE_FORMAT = CONST.__getattribute__('openstack_image_disk_format') - GLANCE_IMAGE_USERNAME = CONST.__getattribute__('openstack_image_username') - GLANCE_IMAGE_EXTRA_PROPERTIES = {} - if hasattr(CONST, 'openstack_extra_properties'): - GLANCE_IMAGE_EXTRA_PROPERTIES = CONST.__getattribute__( - 'openstack_extra_properties') - FLAVOR_NAME = CONST.__getattribute__('rally_flavor_name') - FLAVOR_ALT_NAME = CONST.__getattribute__('rally_flavor_alt_name') - FLAVOR_EXTRA_SPECS = None - FLAVOR_RAM = 512 - FLAVOR_RAM_ALT = 1024 - if hasattr(CONST, 'flavor_extra_specs'): - FLAVOR_EXTRA_SPECS = CONST.__getattribute__('flavor_extra_specs') - FLAVOR_RAM = 1024 - FLAVOR_RAM_ALT = 2048 - - RALLY_DIR = pkg_resources.resource_filename( + # pylint: disable=too-many-instance-attributes, too-many-public-methods + stests = ['authenticate', 'glance', 'cinder', 'gnocchi', 'heat', + 'keystone', 'neutron', 'nova', 'quotas', 'swift', 'barbican', + 'vm'] + + rally_conf_path = "/etc/rally/rally.conf" + rally_aar4_patch_path = pkg_resources.resource_filename( + 'functest', 'ci/rally_aarch64_patch.conf') + rally_dir = pkg_resources.resource_filename( 'functest', 'opnfv_tests/openstack/rally') - RALLY_SCENARIO_DIR = pkg_resources.resource_filename( + rally_scenario_dir = pkg_resources.resource_filename( 'functest', 'opnfv_tests/openstack/rally/scenario') - TEMPLATE_DIR = pkg_resources.resource_filename( + template_dir = pkg_resources.resource_filename( 'functest', 'opnfv_tests/openstack/rally/scenario/templates') - SUPPORT_DIR = pkg_resources.resource_filename( + support_dir = pkg_resources.resource_filename( 'functest', 'opnfv_tests/openstack/rally/scenario/support') - USERS_AMOUNT = 2 - TENANTS_AMOUNT = 3 - ITERATIONS_AMOUNT = 10 - CONCURRENCY = 4 - RESULTS_DIR = os.path.join(CONST.__getattribute__('dir_results'), 'rally') - BLACKLIST_FILE = os.path.join(RALLY_DIR, "blacklist.txt") - TEMP_DIR = os.path.join(RALLY_DIR, "var") - - RALLY_PRIVATE_NET_NAME = CONST.__getattribute__('rally_network_name') - RALLY_PRIVATE_SUBNET_NAME = CONST.__getattribute__('rally_subnet_name') - RALLY_PRIVATE_SUBNET_CIDR = CONST.__getattribute__('rally_subnet_cidr') - RALLY_ROUTER_NAME = CONST.__getattribute__('rally_router_name') + users_amount = 2 + tenants_amount = 3 + iterations_amount = 10 + concurrency = 4 + volume_version = 3 + volume_service_type = "volumev3" + blacklist_file = os.path.join(rally_dir, "blacklist.yaml") + task_dir = os.path.join(getattr(config.CONF, 'dir_rally_data'), 'task') + temp_dir = os.path.join(task_dir, 'var') + + visibility = 'public' + shared_network = True + task_timeout = 3600 + username = 'cirros' def __init__(self, **kwargs): """Initialize RallyBase object.""" - super(RallyBase, self).__init__(**kwargs) - if 'os_creds' in kwargs: - self.os_creds = kwargs['os_creds'] + super().__init__(**kwargs) + assert self.orig_cloud + assert self.project + if self.orig_cloud.get_role("admin"): + role_name = "admin" + elif self.orig_cloud.get_role("Admin"): + role_name = "Admin" else: - creds_override = None - if hasattr(CONST, 'snaps_os_creds_override'): - creds_override = CONST.__getattribute__( - 'snaps_os_creds_override') - - self.os_creds = openstack_tests.get_credentials( - os_env_file=CONST.__getattribute__('openstack_creds'), - overrides=creds_override) - - self.guid = '-' + str(uuid.uuid4()) - + raise Exception("Cannot detect neither admin nor Admin") + self.orig_cloud.grant_role( + role_name, user=self.project.user.id, + project=self.project.project.id, + domain=self.project.domain.id) + self.results_dir = os.path.join( + getattr(config.CONF, 'dir_results'), self.case_name) + self.task_file = '' self.creators = [] - self.mode = '' self.summary = [] self.scenario_dir = '' - self.image_name = None - self.ext_net_name = None - self.priv_net_id = None - self.flavor_name = None - self.flavor_alt_name = None self.smoke = None - self.test_name = None self.start_time = None self.result = None - self.details = None self.compute_cnt = 0 - - def _build_task_args(self, test_file_name): - task_args = {'service_list': [test_file_name]} - task_args['image_name'] = self.image_name - task_args['flavor_name'] = self.flavor_name - task_args['flavor_alt_name'] = self.flavor_alt_name - task_args['glance_image_location'] = self.GLANCE_IMAGE_PATH - task_args['glance_image_format'] = self.GLANCE_IMAGE_FORMAT - task_args['tmpl_dir'] = self.TEMPLATE_DIR - task_args['sup_dir'] = self.SUPPORT_DIR - task_args['users_amount'] = self.USERS_AMOUNT - task_args['tenants_amount'] = self.TENANTS_AMOUNT + self.flavor_alt = None + self.tests = [] + self.run_cmd = '' + self.network_extensions = [] + self.services = [] + + def build_task_args(self, test_name): + """Build arguments for the Rally task.""" + task_args = {'service_list': [test_name]} + task_args['image_name'] = str(self.image.name) + task_args['flavor_name'] = str(self.flavor.name) + task_args['flavor_alt_name'] = str(self.flavor_alt.name) + task_args['glance_image_location'] = str(self.filename) + task_args['glance_image_format'] = str(self.image_format) + task_args['tmpl_dir'] = str(self.template_dir) + task_args['sup_dir'] = str(self.support_dir) + task_args['users_amount'] = self.users_amount + task_args['tenants_amount'] = self.tenants_amount task_args['use_existing_users'] = False - task_args['iterations'] = self.ITERATIONS_AMOUNT - task_args['concurrency'] = self.CONCURRENCY + task_args['iterations'] = self.iterations_amount + task_args['concurrency'] = self.concurrency task_args['smoke'] = self.smoke + task_args['volume_version'] = self.volume_version + task_args['volume_service_type'] = self.volume_service_type + task_args['block_migration'] = env.get("BLOCK_MIGRATION").lower() + task_args['username'] = self.username - ext_net = self.ext_net_name - if ext_net: - task_args['floating_network'] = str(ext_net) + if self.ext_net: + task_args['floating_network'] = str(self.ext_net.name) else: task_args['floating_network'] = '' - net_id = self.priv_net_id - if net_id: - task_args['netid'] = str(net_id) + if self.network: + task_args['netid'] = str(self.network.id) else: - task_args['netid'] = '' + LOGGER.warning( + 'No tenant network created. ' + 'Trying EXTERNAL_NETWORK as a fallback') + if env.get("EXTERNAL_NETWORK"): + network = self.cloud.get_network(env.get("EXTERNAL_NETWORK")) + task_args['netid'] = str(network.id) if network else '' + else: + task_args['netid'] = '' return task_args def _prepare_test_list(self, test_name): - test_yaml_file_name = 'opnfv-{}.yaml'.format(test_name) - scenario_file_name = os.path.join(self.RALLY_SCENARIO_DIR, + """Build the list of test cases to be executed.""" + test_yaml_file_name = f'opnfv-{test_name}.yaml' + scenario_file_name = os.path.join(self.rally_scenario_dir, test_yaml_file_name) if not os.path.exists(scenario_file_name): @@ -161,33 +154,108 @@ class RallyBase(testcase.TestCase): test_yaml_file_name) if not os.path.exists(scenario_file_name): - raise Exception("The scenario '%s' does not exist." - % scenario_file_name) + raise Exception( + f"The scenario '{scenario_file_name}' does not exist.") LOGGER.debug('Scenario fetched from : %s', scenario_file_name) - test_file_name = os.path.join(self.TEMP_DIR, test_yaml_file_name) + test_file_name = os.path.join(self.temp_dir, test_yaml_file_name) - if not os.path.exists(self.TEMP_DIR): - os.makedirs(self.TEMP_DIR) + if not os.path.exists(self.temp_dir): + os.makedirs(self.temp_dir) - self._apply_blacklist(scenario_file_name, test_file_name) + self.apply_blacklist(scenario_file_name, test_file_name) return test_file_name @staticmethod - def get_task_id(cmd_raw): + def get_verifier_deployment_id(): + """ + Returns deployment id for active Rally deployment + """ + cmd = ("rally deployment list | awk '/" + + getattr(config.CONF, 'rally_deployment_name') + + "/ {print $2}'") + with subprocess.Popen( + cmd, shell=True, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) as proc: + deployment_uuid = proc.stdout.readline().rstrip() + return deployment_uuid.decode("utf-8") + + @staticmethod + def create_rally_deployment(environ=None): + # pylint: disable=unexpected-keyword-arg + """Create new rally deployment""" + # set the architecture to default + pod_arch = env.get("POD_ARCH") + arch_filter = ['aarch64'] + + if pod_arch and pod_arch in arch_filter: + LOGGER.info("Apply aarch64 specific to rally config...") + with open( + RallyBase.rally_aar4_patch_path, "r", + encoding='utf-8') as pfile: + rally_patch_conf = pfile.read() + + for line in fileinput.input(RallyBase.rally_conf_path): + print(line, end=' ') + if "cirros|testvm" in line: + print(rally_patch_conf) + + LOGGER.info("Creating Rally environment...") + try: + cmd = ['rally', 'deployment', 'destroy', + '--deployment', + str(getattr(config.CONF, 'rally_deployment_name'))] + output = subprocess.check_output(cmd) + LOGGER.info("%s\n%s", " ".join(cmd), output.decode("utf-8")) + except subprocess.CalledProcessError: + pass + + cmd = ['rally', 'deployment', 'create', '--fromenv', + '--name', str(getattr(config.CONF, 'rally_deployment_name'))] + output = subprocess.check_output(cmd, env=environ) + LOGGER.info("%s\n%s", " ".join(cmd), output.decode("utf-8")) + + cmd = ['rally', 'deployment', 'check'] + output = subprocess.check_output(cmd) + LOGGER.info("%s\n%s", " ".join(cmd), output.decode("utf-8")) + return RallyBase.get_verifier_deployment_id() + + @staticmethod + def update_keystone_default_role(rally_conf='/etc/rally/rally.conf'): + """Set keystone_default_role in rally.conf""" + if env.get("NEW_USER_ROLE").lower() != "member": + rconfig = configparser.RawConfigParser() + rconfig.read(rally_conf) + if not rconfig.has_section('openstack'): + rconfig.add_section('openstack') + rconfig.set( + 'openstack', 'keystone_default_role', env.get("NEW_USER_ROLE")) + with open(rally_conf, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + + @staticmethod + def clean_rally_conf(rally_conf='/etc/rally/rally.conf'): + """Clean Rally config""" + if env.get("NEW_USER_ROLE").lower() != "member": + rconfig = configparser.RawConfigParser() + rconfig.read(rally_conf) + if rconfig.has_option('openstack', 'keystone_default_role'): + rconfig.remove_option('openstack', 'keystone_default_role') + with open(rally_conf, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + + @staticmethod + def get_task_id(tag): """ Get task id from command rally result. - :param cmd_raw: + :param tag: :return: task_id as string """ - taskid_re = re.compile('^Task +(.*): started$') - for line in cmd_raw.splitlines(True): - line = line.strip() - match = taskid_re.match(line) - if match: - return match.group(1) - return None + cmd = ["rally", "task", "list", "--tag", tag, "--uuids-only"] + output = subprocess.check_output(cmd).decode("utf-8").rstrip() + LOGGER.info("%s: %s", " ".join(cmd), output) + return output @staticmethod def task_succeed(json_raw): @@ -198,53 +266,48 @@ class RallyBase(testcase.TestCase): :return: Bool """ rally_report = json.loads(json_raw) - for report in rally_report: - if report is None or report.get('result') is None: - return False - - for result in report.get('result'): - if result is None or len(result.get('error')) > 0: + tasks = rally_report.get('tasks') + if tasks: + for task in tasks: + if task.get('status') != 'finished' or \ + task.get('pass_sla') is not True: return False - + else: + return False return True def _migration_supported(self): """Determine if migration is supported.""" if self.compute_cnt > 1: return True - return False - @staticmethod - def get_cmd_output(proc): - """Get command stdout.""" - result = "" - while proc.poll() is None: - line = proc.stdout.readline() - result += line - return result + def _network_trunk_supported(self): + """Determine if network trunk service is available""" + if 'trunk' in self.network_extensions: + return True + return False @staticmethod def excl_scenario(): """Exclude scenario.""" black_tests = [] try: - with open(RallyBase.BLACKLIST_FILE, 'r') as black_list_file: + with open( + RallyBase.blacklist_file, 'r', + encoding='utf-8') as black_list_file: black_list_yaml = yaml.safe_load(black_list_file) - installer_type = CONST.__getattribute__('INSTALLER_TYPE') - deploy_scenario = CONST.__getattribute__('DEPLOY_SCENARIO') - if (bool(installer_type) and bool(deploy_scenario) and + deploy_scenario = env.get('DEPLOY_SCENARIO') + if (bool(deploy_scenario) and 'scenario' in black_list_yaml.keys()): for item in black_list_yaml['scenario']: scenarios = item['scenarios'] - installers = item['installers'] in_it = RallyBase.in_iterable_re - if (in_it(deploy_scenario, scenarios) and - in_it(installer_type, installers)): + if in_it(deploy_scenario, scenarios): tests = item['tests'] black_tests.extend(tests) - except Exception: + except Exception: # pylint: disable=broad-except LOGGER.debug("Scenario exclusion not applied.") return black_tests @@ -267,8 +330,8 @@ class RallyBase(testcase.TestCase): # match if regex pattern is set and found in the needle if pattern and re.search(pattern, needle) is not None: return True - else: - return False + + return False def excl_func(self): """Exclude functionalities.""" @@ -276,11 +339,19 @@ class RallyBase(testcase.TestCase): func_list = [] try: - with open(RallyBase.BLACKLIST_FILE, 'r') as black_list_file: + with open( + RallyBase.blacklist_file, 'r', + encoding='utf-8') as black_list_file: black_list_yaml = yaml.safe_load(black_list_file) + if env.get('BLOCK_MIGRATION').lower() == 'true': + func_list.append("block_migration") if not self._migration_supported(): func_list.append("no_migration") + if not self._network_trunk_supported(): + func_list.append("no_net_trunk_service") + if not self.ext_net: + func_list.append("no_floating_ip") if 'functionality' in black_list_yaml.keys(): for item in black_list_yaml['functionality']: @@ -294,34 +365,28 @@ class RallyBase(testcase.TestCase): return black_tests - def _apply_blacklist(self, case_file_name, result_file_name): + def apply_blacklist(self, case_file_name, result_file_name): """Apply blacklist.""" LOGGER.debug("Applying blacklist...") - cases_file = open(case_file_name, 'r') - result_file = open(result_file_name, 'w') - - black_tests = list(set(self.excl_func() + - self.excl_scenario())) - - if black_tests: - LOGGER.debug("Blacklisted tests: " + str(black_tests)) - - include = True - for cases_line in cases_file: - if include: - for black_tests_line in black_tests: - if re.search(black_tests_line, - cases_line.strip().rstrip(':')): - include = False - break + with open(case_file_name, 'r', encoding='utf-8') as cases_file, open( + result_file_name, 'w', encoding='utf-8') as result_file: + black_tests = list(set(self.excl_func() + self.excl_scenario())) + if black_tests: + LOGGER.debug("Blacklisted tests: %s", str(black_tests)) + + include = True + for cases_line in cases_file: + if include: + for black_tests_line in black_tests: + if re.search(black_tests_line, + cases_line.strip().rstrip(':')): + include = False + break + else: + result_file.write(str(cases_line)) else: - result_file.write(str(cases_line)) - else: - if cases_line.isspace(): - include = True - - cases_file.close() - result_file.close() + if cases_line.isspace(): + include = True @staticmethod def file_is_empty(file_name): @@ -334,325 +399,315 @@ class RallyBase(testcase.TestCase): return True - def _run_task(self, test_name): - """Run a task.""" - LOGGER.info('Starting test scenario "%s" ...', test_name) - - task_file = os.path.join(self.RALLY_DIR, 'task.yaml') - if not os.path.exists(task_file): - LOGGER.error("Task file '%s' does not exist.", task_file) - raise Exception("Task file '%s' does not exist.", task_file) - - file_name = self._prepare_test_list(test_name) - if self.file_is_empty(file_name): - LOGGER.info('No tests for scenario "%s"', test_name) - return - - cmd = (["rally", "task", "start", "--abort-on-sla-failure", "--task", - task_file, "--task-args", - str(self._build_task_args(test_name))]) - LOGGER.debug('running command: %s', cmd) - - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - output = self._get_output(proc, test_name) - task_id = self.get_task_id(output) - LOGGER.debug('task_id : %s', task_id) - - if task_id is None: - LOGGER.error('Failed to retrieve task_id, validating task...') - cmd = (["rally", "task", "validate", "--task", task_file, - "--task-args", str(self._build_task_args(test_name))]) - LOGGER.debug('running command: %s', cmd) - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - output = self.get_cmd_output(proc) - LOGGER.error("Task validation result:" + "\n" + output) - return - + def _save_results(self, test_name, task_id): + """ Generate and save task execution results""" # check for result directory and create it otherwise - if not os.path.exists(self.RESULTS_DIR): + if not os.path.exists(self.results_dir): LOGGER.debug('%s does not exist, we create it.', - self.RESULTS_DIR) - os.makedirs(self.RESULTS_DIR) - - # write html report file - report_html_name = 'opnfv-{}.html'.format(test_name) - report_html_dir = os.path.join(self.RESULTS_DIR, report_html_name) - cmd = (["rally", "task", "report", task_id, "--out", report_html_dir]) + self.results_dir) + os.makedirs(self.results_dir) + # put detailed result to log + cmd = (["rally", "task", "detailed", "--uuid", task_id]) LOGGER.debug('running command: %s', cmd) - subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - - # get and save rally operation JSON result - cmd = (["rally", "task", "results", task_id]) + output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) + LOGGER.info("%s\n%s", " ".join(cmd), output.decode("utf-8")) + + # save report as JSON + report_json_name = f'{test_name}.json' + report_json_dir = os.path.join(self.results_dir, report_json_name) + cmd = (["rally", "task", "report", "--json", "--uuid", task_id, + "--out", report_json_dir]) LOGGER.debug('running command: %s', cmd) - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - json_results = self.get_cmd_output(proc) - report_json_name = 'opnfv-{}.json'.format(test_name) - report_json_dir = os.path.join(self.RESULTS_DIR, report_json_name) - with open(report_json_dir, 'w') as r_file: - LOGGER.debug('saving json file') - r_file.write(json_results) + output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) + LOGGER.info("%s\n%s", " ".join(cmd), output.decode("utf-8")) + + with open(report_json_dir, encoding='utf-8') as json_file: + json_results = json_file.read() + self._append_summary(json_results, test_name) # parse JSON operation result if self.task_succeed(json_results): - LOGGER.info('Test scenario: "{}" OK.'.format(test_name) + "\n") + LOGGER.info('Test scenario: "%s" OK.', test_name) else: - LOGGER.info('Test scenario: "{}" Failed.'.format(test_name) + "\n") + LOGGER.info('Test scenario: "%s" Failed.', test_name) - def _get_output(self, proc, test_name): - result = "" + def run_task(self, test_name): + """Run a task.""" + LOGGER.info('Starting test scenario "%s" ...', test_name) + LOGGER.debug('running command: %s', self.run_cmd) + if six.PY3: + subprocess.call( + self.run_cmd, timeout=self.task_timeout, + stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + else: + with open(os.devnull, 'wb') as devnull: + subprocess.call(self.run_cmd, stdout=devnull, stderr=devnull) + task_id = self.get_task_id(test_name) + LOGGER.debug('task_id : %s', task_id) + if not task_id: + LOGGER.error("Failed to retrieve task_id") + raise Exception("Failed to retrieve task id") + self._save_results(test_name, task_id) + + def _append_summary(self, json_raw, test_name): + # pylint: disable=too-many-locals + """Update statistics summary info.""" nb_tests = 0 + nb_success = 0 overall_duration = 0.0 - success = 0.0 - nb_totals = 0 - - while proc.poll() is None: - line = proc.stdout.readline() - if ("Load duration" in line or - "started" in line or - "finished" in line or - " Preparing" in line or - "+-" in line or - "|" in line): - result += line - elif "test scenario" in line: - result += "\n" + line - elif "Full duration" in line: - result += line + "\n\n" - - # parse output for summary report - if ("| " in line and - "| action" not in line and - "| Starting" not in line and - "| Completed" not in line and - "| ITER" not in line and - "| " not in line and - "| total" not in line): - nb_tests += 1 - elif "| total" in line: - percentage = ((line.split('|')[8]).strip(' ')).strip('%') - try: - success += float(percentage) - except ValueError: - LOGGER.info('Percentage error: %s, %s', - percentage, line) - nb_totals += 1 - elif "Full duration" in line: - duration = line.split(': ')[1] - try: - overall_duration += float(duration) - except ValueError: - LOGGER.info('Duration error: %s, %s', duration, line) - - overall_duration = "{:10.2f}".format(overall_duration) - if nb_totals == 0: - success_avg = 0 - else: - success_avg = "{:0.2f}".format(success / nb_totals) + success = [] + failures = [] + + rally_report = json.loads(json_raw) + for task in rally_report.get('tasks'): + for subtask in task.get('subtasks'): + has_errors = False + for workload in subtask.get('workloads'): + if workload.get('full_duration'): + overall_duration += workload.get('full_duration') + + if workload.get('data'): + nb_tests += len(workload.get('data')) + + for result in workload.get('data'): + if not result.get('error'): + nb_success += 1 + else: + has_errors = True + + if has_errors: + failures.append(subtask['title']) + else: + success.append(subtask['title']) scenario_summary = {'test_name': test_name, 'overall_duration': overall_duration, 'nb_tests': nb_tests, - 'success': success_avg} + 'nb_success': nb_success, + 'success': success, + 'failures': failures, + 'task_status': self.task_succeed(json_raw)} self.summary.append(scenario_summary) - LOGGER.debug("\n" + result) - - return result - - def _prepare_env(self): - LOGGER.debug('Validating the test name...') - if self.test_name not in self.TESTS: - raise Exception("Test name '%s' is invalid" % self.test_name) - - network_name = self.RALLY_PRIVATE_NET_NAME + self.guid - subnet_name = self.RALLY_PRIVATE_SUBNET_NAME + self.guid - router_name = self.RALLY_ROUTER_NAME + self.guid - self.image_name = self.GLANCE_IMAGE_NAME + self.guid - self.flavor_name = self.FLAVOR_NAME + self.guid - self.flavor_alt_name = self.FLAVOR_ALT_NAME + self.guid - self.ext_net_name = snaps_utils.get_ext_net_name(self.os_creds) - self.compute_cnt = snaps_utils.get_active_compute_cnt(self.os_creds) - - LOGGER.debug("Creating image '%s'...", self.image_name) - image_creator = deploy_utils.create_image( - self.os_creds, ImageConfig( - name=self.image_name, - image_file=self.GLANCE_IMAGE_PATH, - img_format=self.GLANCE_IMAGE_FORMAT, - image_user=self.GLANCE_IMAGE_USERNAME, - public=True, - extra_properties=self.GLANCE_IMAGE_EXTRA_PROPERTIES)) - if image_creator is None: - raise Exception("Failed to create image") - self.creators.append(image_creator) - - LOGGER.debug("Creating network '%s'...", network_name) - - rally_network_type = None - rally_physical_network = None - rally_segmentation_id = None - - if hasattr(CONST, 'rally_network_type'): - rally_network_type = CONST.__getattribute__( - 'rally_network_type') - if hasattr(CONST, 'rally_physical_network'): - rally_physical_network = CONST.__getattribute__( - 'rally_physical_network') - if hasattr(CONST, 'rally_segmentation_id'): - rally_segmentation_id = CONST.__getattribute__( - 'rally_segmentation_id') - - network_creator = deploy_utils.create_network( - self.os_creds, NetworkConfig( - name=network_name, - shared=True, - network_type=rally_network_type, - physical_network=rally_physical_network, - segmentation_id=rally_segmentation_id, - subnet_settings=[SubnetConfig( - name=subnet_name, - cidr=self.RALLY_PRIVATE_SUBNET_CIDR) - ])) - if network_creator is None: - raise Exception("Failed to create private network") - self.priv_net_id = network_creator.get_network().id - self.creators.append(network_creator) - - LOGGER.debug("Creating router '%s'...", router_name) - router_creator = deploy_utils.create_router( - self.os_creds, RouterConfig( - name=router_name, - external_gateway=self.ext_net_name, - internal_subnets=[subnet_name])) - if router_creator is None: - raise Exception("Failed to create router") - self.creators.append(router_creator) - - LOGGER.debug("Creating flavor '%s'...", self.flavor_name) - flavor_creator = OpenStackFlavor( - self.os_creds, FlavorConfig( - name=self.flavor_name, ram=self.FLAVOR_RAM, disk=1, vcpus=1, - metadata=self.FLAVOR_EXTRA_SPECS)) - if flavor_creator is None or flavor_creator.create() is None: - raise Exception("Failed to create flavor") - self.creators.append(flavor_creator) - - LOGGER.debug("Creating flavor '%s'...", self.flavor_alt_name) - flavor_alt_creator = OpenStackFlavor( - self.os_creds, FlavorConfig( - name=self.flavor_alt_name, ram=self.FLAVOR_RAM_ALT, disk=1, - vcpus=1, metadata=self.FLAVOR_EXTRA_SPECS)) - if flavor_alt_creator is None or flavor_alt_creator.create() is None: - raise Exception("Failed to create flavor") - self.creators.append(flavor_alt_creator) - - def _run_tests(self): - if self.test_name == 'all': - for test in self.TESTS: - if test == 'all' or test == 'vm': - continue - self._run_task(test) - else: - self._run_task(self.test_name) + def prepare_run(self, **kwargs): + """Prepare resources needed by test scenarios.""" + assert self.cloud + LOGGER.debug('Validating run tests...') + for test in kwargs.get('tests', self.stests): + if test in self.stests: + self.tests.append(test) + else: + raise Exception(f"Test name '{test}' is invalid") + + if not os.path.exists(self.task_dir): + os.makedirs(self.task_dir) + + task = os.path.join(self.rally_dir, 'task.yaml') + if not os.path.exists(task): + LOGGER.error("Task file '%s' does not exist.", task) + raise Exception(f"Task file '{task}' does not exist.") + self.task_file = os.path.join(self.task_dir, 'task.yaml') + shutil.copyfile(task, self.task_file) + + task_macro = os.path.join(self.rally_dir, 'macro') + if not os.path.exists(task_macro): + LOGGER.error("Task macro dir '%s' does not exist.", task_macro) + raise Exception(f"Task macro dir '{task_macro}' does not exist.") + macro_dir = os.path.join(self.task_dir, 'macro') + if os.path.exists(macro_dir): + shutil.rmtree(macro_dir) + shutil.copytree(task_macro, macro_dir) + + self.update_keystone_default_role() + self.compute_cnt = self.count_hypervisors() + self.network_extensions = self.cloud.get_network_extensions() + self.flavor_alt = self.create_flavor_alt() + self.services = [service.name for service in + functest_utils.list_services(self.cloud)] + + LOGGER.debug("flavor: %s", self.flavor_alt) + + def prepare_task(self, test_name): + """Prepare resources for test run.""" + file_name = self._prepare_test_list(test_name) + if self.file_is_empty(file_name): + LOGGER.info('No tests for scenario "%s"', test_name) + return False + self.run_cmd = (["rally", "task", "start", "--tag", test_name, + "--abort-on-sla-failure", + "--task", self.task_file, "--task-args", + str(self.build_task_args(test_name))]) + return True + + def run_tests(self, **kwargs): + """Execute tests.""" + optional = kwargs.get('optional', []) + for test in self.tests: + if test in self.services or test not in optional: + if self.prepare_task(test): + self.run_task(test) def _generate_report(self): - report = ( - "\n" - " " - "\n" - " Rally Summary Report\n" - "\n" - "+===================+============+===============+===========+" - "\n" - "| Module | Duration | nb. Test Run | Success |" - "\n" - "+===================+============+===============+===========+" - "\n") + """Generate test execution summary report.""" + total_duration = 0.0 + total_nb_tests = 0 + total_nb_success = 0 + nb_modules = 0 payload = [] + res_table = prettytable.PrettyTable( + padding_width=2, + field_names=['Module', 'Duration', 'nb. Test Run', 'Success']) + res_table.align['Module'] = "l" + res_table.align['Duration'] = "r" + res_table.align['Success'] = "r" + # for each scenario we draw a row for the table - total_duration = 0.0 - total_nb_tests = 0 - total_success = 0.0 for item in self.summary: - name = "{0:<17}".format(item['test_name']) - duration = float(item['overall_duration']) - total_duration += duration - duration = time.strftime("%M:%S", time.gmtime(duration)) - duration = "{0:<10}".format(duration) - nb_tests = "{0:<13}".format(item['nb_tests']) - total_nb_tests += int(item['nb_tests']) - success = "{0:<10}".format(str(item['success']) + '%') - total_success += float(item['success']) - report += ("" + - "| " + name + " | " + duration + " | " + - nb_tests + " | " + success + "|\n" + - "+-------------------+------------" - "+---------------+-----------+\n") - payload.append({'module': name, + if item['task_status'] is True: + nb_modules += 1 + total_duration += item['overall_duration'] + total_nb_tests += item['nb_tests'] + total_nb_success += item['nb_success'] + try: + success_avg = 100 * item['nb_success'] / item['nb_tests'] + except ZeroDivisionError: + success_avg = 0 + success_str = f"{success_avg:0.2f}%" + duration_str = time.strftime("%H:%M:%S", + time.gmtime(item['overall_duration'])) + res_table.add_row([item['test_name'], duration_str, + item['nb_tests'], success_str]) + payload.append({'module': item['test_name'], 'details': {'duration': item['overall_duration'], 'nb tests': item['nb_tests'], - 'success': item['success']}}) + 'success rate': success_str, + 'success': item['success'], + 'failures': item['failures']}}) total_duration_str = time.strftime("%H:%M:%S", time.gmtime(total_duration)) - total_duration_str2 = "{0:<10}".format(total_duration_str) - total_nb_tests_str = "{0:<13}".format(total_nb_tests) - try: - self.result = total_success / len(self.summary) + self.result = 100 * total_nb_success / total_nb_tests except ZeroDivisionError: self.result = 100 + success_rate = f"{self.result:0.2f}" + success_rate_str = str(success_rate) + '%' + res_table.add_row(["", "", "", ""]) + res_table.add_row(["TOTAL:", total_duration_str, total_nb_tests, + success_rate_str]) + + LOGGER.info("Rally Summary Report:\n\n%s\n", res_table.get_string()) + LOGGER.info("Rally '%s' success_rate is %s%% in %s/%s modules", + self.case_name, success_rate, nb_modules, + len(self.summary)) + self.details['summary'] = {'duration': total_duration, + 'nb tests': total_nb_tests, + 'nb success': success_rate} + self.details["modules"] = payload - success_rate = "{:0.2f}".format(self.result) - success_rate_str = "{0:<10}".format(str(success_rate) + '%') - report += ("+===================+============" - "+===============+===========+") - report += "\n" - report += ("| TOTAL: | " + total_duration_str2 + " | " + - total_nb_tests_str + " | " + success_rate_str + "|\n") - report += ("+===================+============" - "+===============+===========+") - report += "\n" - - LOGGER.info("\n" + report) - payload.append({'summary': {'duration': total_duration, - 'nb tests': total_nb_tests, - 'nb success': success_rate}}) - - self.details = payload - - LOGGER.info("Rally '%s' success_rate is %s%%", - self.case_name, success_rate) - - def _clean_up(self): - for creator in reversed(self.creators): - try: - creator.clean() - except Exception as e: - LOGGER.error('Unexpected error cleaning - %s', e) + @staticmethod + def export_task(file_name, export_type="html"): + """Export all task results (e.g. html or xunit report) + + Raises: + subprocess.CalledProcessError: if Rally doesn't return 0 + + Returns: + None + """ + cmd = ["rally", "task", "export", "--type", export_type, + "--deployment", + str(getattr(config.CONF, 'rally_deployment_name')), + "--to", file_name] + LOGGER.debug('running command: %s', cmd) + output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) + LOGGER.info("%s\n%s", " ".join(cmd), output.decode("utf-8")) + + @staticmethod + def verify_report(file_name, uuid, export_type="html"): + """Generate the verifier report (e.g. html or xunit report) + + Raises: + subprocess.CalledProcessError: if Rally doesn't return 0 + + Returns: + None + """ + cmd = ["rally", "verify", "report", "--type", export_type, + "--uuid", uuid, "--to", file_name] + LOGGER.debug('running command: %s', cmd) + output = subprocess.check_output(cmd, stderr=subprocess.STDOUT) + LOGGER.info("%s\n%s", " ".join(cmd), output.decode("utf-8")) + + def clean(self): + """Cleanup of OpenStack resources. Should be called on completion.""" + self.clean_rally_conf() + self.clean_rally_logs() + if self.flavor_alt: + self.orig_cloud.delete_flavor(self.flavor_alt.id) + super().clean() + + def is_successful(self): + """The overall result of the test.""" + for item in self.summary: + if item['task_status'] is False: + return testcase.TestCase.EX_TESTCASE_FAILED + + return super().is_successful() + + @staticmethod + def update_rally_logs(res_dir, rally_conf='/etc/rally/rally.conf'): + """Print rally logs in res dir""" + if not os.path.exists(res_dir): + os.makedirs(res_dir) + rconfig = configparser.RawConfigParser() + rconfig.read(rally_conf) + rconfig.set('DEFAULT', 'debug', True) + rconfig.set('DEFAULT', 'use_stderr', False) + rconfig.set('DEFAULT', 'log-file', 'rally.log') + rconfig.set('DEFAULT', 'log_dir', res_dir) + with open(rally_conf, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + + @staticmethod + def clean_rally_logs(rally_conf='/etc/rally/rally.conf'): + """Clean Rally config""" + rconfig = configparser.RawConfigParser() + rconfig.read(rally_conf) + if rconfig.has_option('DEFAULT', 'use_stderr'): + rconfig.remove_option('DEFAULT', 'use_stderr') + if rconfig.has_option('DEFAULT', 'debug'): + rconfig.remove_option('DEFAULT', 'debug') + if rconfig.has_option('DEFAULT', 'log-file'): + rconfig.remove_option('DEFAULT', 'log-file') + if rconfig.has_option('DEFAULT', 'log_dir'): + rconfig.remove_option('DEFAULT', 'log_dir') + with open(rally_conf, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) - @energy.enable_recording def run(self, **kwargs): """Run testcase.""" self.start_time = time.time() try: - conf_utils.create_rally_deployment() - self._prepare_env() - self._run_tests() + assert super().run( + **kwargs) == testcase.TestCase.EX_OK + self.update_rally_logs(self.res_dir) + self.create_rally_deployment(environ=self.project.get_environ()) + self.prepare_run(**kwargs) + self.run_tests(**kwargs) self._generate_report() + self.export_task( + f"{self.results_dir}/{self.case_name}.html") + self.export_task( + f"{self.results_dir}/{self.case_name}.xml", + export_type="junit-xml") res = testcase.TestCase.EX_OK - except Exception as exc: # pylint: disable=broad-except - LOGGER.error('Error with run: %s', exc) + except Exception: # pylint: disable=broad-except + LOGGER.exception('Error with run:') + self.result = 0 res = testcase.TestCase.EX_RUN_ERROR - finally: - self._clean_up() - self.stop_time = time.time() return res @@ -664,22 +719,120 @@ class RallySanity(RallyBase): """Initialize RallySanity object.""" if "case_name" not in kwargs: kwargs["case_name"] = "rally_sanity" - super(RallySanity, self).__init__(**kwargs) - self.mode = 'sanity' - self.test_name = 'all' + super().__init__(**kwargs) self.smoke = True - self.scenario_dir = os.path.join(self.RALLY_SCENARIO_DIR, 'sanity') + self.scenario_dir = os.path.join(self.rally_scenario_dir, 'sanity') class RallyFull(RallyBase): """Rally full testcase implementation.""" + task_timeout = 7200 + def __init__(self, **kwargs): """Initialize RallyFull object.""" if "case_name" not in kwargs: kwargs["case_name"] = "rally_full" - super(RallyFull, self).__init__(**kwargs) - self.mode = 'full' - self.test_name = 'all' + super().__init__(**kwargs) self.smoke = False - self.scenario_dir = os.path.join(self.RALLY_SCENARIO_DIR, 'full') + self.scenario_dir = os.path.join(self.rally_scenario_dir, 'full') + + +class RallyJobs(RallyBase): + """Rally OpenStack CI testcase implementation.""" + + stests = ["neutron"] + task_timeout = 7200 + + def __init__(self, **kwargs): + """Initialize RallyJobs object.""" + if "case_name" not in kwargs: + kwargs["case_name"] = "rally_jobs" + super().__init__(**kwargs) + self.task_file = os.path.join(self.rally_dir, 'rally_jobs.yaml') + self.task_yaml = None + + def prepare_run(self, **kwargs): + """Create resources needed by test scenarios.""" + super().prepare_run(**kwargs) + with open( + os.path.join(self.rally_dir, 'rally_jobs.yaml'), + 'r', encoding='utf-8') as task_file: + self.task_yaml = yaml.safe_load(task_file) + + for task in self.task_yaml: + if task not in self.tests: + raise Exception(f"Test '{task}' not in '{self.tests}'") + + def apply_blacklist(self, case_file_name, result_file_name): + # pylint: disable=too-many-branches + """Apply blacklist.""" + LOGGER.debug("Applying blacklist...") + black_tests = list(set(self.excl_func() + + self.excl_scenario())) + if black_tests: + LOGGER.debug("Blacklisted tests: %s", str(black_tests)) + + template = YAML(typ='jinja2') + with open(case_file_name, 'r', encoding='utf-8') as fname: + cases = template.load(fname) + if cases.get("version", 1) == 1: + # scenarios in dictionary + for name in cases.keys(): + if self.in_iterable_re(name, black_tests): + cases.pop(name) + else: + # workloads in subtasks + for sind, subtask in reversed(list( + enumerate(cases.get('subtasks', [])))): + for wind, workload in reversed(list( + enumerate(subtask.get('workloads', [])))): + scenario = workload.get('scenario', {}) + for name in scenario.keys(): + if self.in_iterable_re(name, black_tests): + cases['subtasks'][sind]['workloads'].pop(wind) + break + if 'workloads' in cases['subtasks'][sind]: + if not cases['subtasks'][sind]['workloads']: + cases['subtasks'].pop(sind) + # scenarios in subtasks + for sind, subtask in reversed(list( + enumerate(cases.get('subtasks', [])))): + scenario = subtask.get('scenario', {}) + for name in scenario.keys(): + if self.in_iterable_re(name, black_tests): + cases['subtasks'].pop(sind) + break + + with open(result_file_name, 'w', encoding='utf-8') as fname: + template.dump(cases, fname) + + def build_task_args(self, test_name): + """Build arguments for the Rally task.""" + task_args = {} + if self.ext_net: + task_args['floating_network'] = str(self.ext_net.name) + else: + task_args['floating_network'] = '' + task_args['image_name'] = str(self.image.name) + task_args['flavor_name'] = str(self.flavor.name) + return task_args + + def prepare_task(self, test_name): + """Prepare resources for test run.""" + jobs_dir = os.path.join( + getattr(config.CONF, 'dir_rally_data'), test_name, 'rally-jobs') + task_name = self.task_yaml.get(test_name).get("task") + task = os.path.join(jobs_dir, task_name) + if not os.path.exists(task): + raise Exception(f"The scenario '{task}' does not exist.") + LOGGER.debug('Scenario fetched from : %s', task) + + if not os.path.exists(self.temp_dir): + os.makedirs(self.temp_dir) + task_file_name = os.path.join(self.temp_dir, task_name) + self.apply_blacklist(task, task_file_name) + self.run_cmd = (["rally", "task", "start", "--tag", test_name, + "--task", task_file_name, + "--task-args", str(self.build_task_args(test_name))]) + return True diff --git a/functest/opnfv_tests/openstack/rally/rally_jobs.yaml b/functest/opnfv_tests/openstack/rally/rally_jobs.yaml new file mode 100644 index 000000000..2092fb4cf --- /dev/null +++ b/functest/opnfv_tests/openstack/rally/rally_jobs.yaml @@ -0,0 +1,3 @@ +--- +neutron: + task: task-neutron.yaml diff --git a/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-ceilometer.yaml b/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-ceilometer.yaml deleted file mode 100644 index 7efb5a83b..000000000 --- a/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-ceilometer.yaml +++ /dev/null @@ -1,458 +0,0 @@ - CeilometerMeters.list_meters: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {% call user_context(tenants_amount, users_amount, use_existing_users) %} - ceilometer: - counter_name: "benchmark_meter" - counter_type: "gauge" - counter_unit: "%" - counter_volume: 100 - resources_per_tenant: 100 - samples_per_resource: 100 - timestamp_interval: 10 - metadata_list: - - - status: "active" - name: "rally benchmark on" - deleted: "false" - - - status: "terminated" - name: "rally benchmark off" - deleted: "true" - {% endcall %} - args: - limit: 50 - metadata_query: - status: "terminated" - sla: - {{ no_failures_sla() }} - - CeilometerResource.list_resources: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {% call user_context(tenants_amount, users_amount, use_existing_users) %} - ceilometer: - counter_name: "benchmark_meter" - counter_type: "gauge" - counter_unit: "%" - counter_volume: 100 - resources_per_tenant: 100 - samples_per_resource: 100 - timestamp_interval: 10 - metadata_list: - - - status: "active" - name: "rally benchmark on" - deleted: "false" - - - status: "terminated" - name: "rally benchmark off" - deleted: "true" - {% endcall %} - args: - limit: 50 - metadata_query: - status: "terminated" - sla: - {{ no_failures_sla() }} - - CeilometerAlarms.create_alarm_and_get_history: - - - args: - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - state: "ok" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerAlarms.create_and_delete_alarm: - - - args: - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerAlarms.create_and_get_alarm: - - - args: - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerAlarms.create_and_list_alarm: - - - args: - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerQueries.create_and_query_alarm_history: - - - args: - orderby: !!null - limit: !!null - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerQueries.create_and_query_alarms: - - - args: - filter: {"and": [{"!=": {"state": "dummy_state"}},{"=": {"type": "threshold"}}]} - orderby: !!null - limit: 10 - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerQueries.create_and_query_samples: - - - args: - filter: {"=": {"counter_unit": "instance"}} - orderby: !!null - limit: 10 - counter_name: "cpu_util" - counter_type: "gauge" - counter_unit: "instance" - counter_volume: 1.0 - resource_id: "resource_id" - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerAlarms.create_and_update_alarm: - - - args: - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerStats.create_meter_and_get_stats: - - - args: - user_id: "user-id" - resource_id: "resource-id" - counter_volume: 1.0 - counter_unit: "" - counter_type: "cumulative" - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerEvents.create_user_and_get_event: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerEvents.create_user_and_list_events: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerEvents.create_user_and_list_event_types: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerTraits.create_user_and_list_trait_descriptions: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerTraits.create_user_and_list_traits: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerStats.get_stats: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {% call user_context(tenants_amount, users_amount, use_existing_users) %} - ceilometer: - counter_name: "benchmark_meter" - counter_type: "gauge" - counter_unit: "%" - counter_volume: 100 - resources_per_tenant: 100 - samples_per_resource: 100 - timestamp_interval: 10 - metadata_list: - - - status: "active" - name: "rally benchmark on" - deleted: "false" - - - status: "terminated" - name: "rally benchmark off" - deleted: "true" - {% endcall %} - args: - meter_name: "benchmark_meter" - filter_by_user_id: true - filter_by_project_id: true - filter_by_resource_id: true - metadata_query: - status: "terminated" - period: 300 - groupby: "resource_id" - sla: - {{ no_failures_sla() }} - - CeilometerResource.get_tenant_resources: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {% call user_context(tenants_amount, users_amount, use_existing_users) %} - ceilometer: - counter_name: "cpu_util" - counter_type: "gauge" - counter_volume: 1.0 - counter_unit: "instance" - {% endcall %} - sla: - {{ no_failures_sla() }} - - CeilometerAlarms.list_alarms: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerSamples.list_matched_samples: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {% call user_context(tenants_amount, users_amount, use_existing_users) %} - ceilometer: - counter_name: "cpu_util" - counter_type: "gauge" - counter_unit: "instance" - counter_volume: 1.0 - resources_per_tenant: 100 - samples_per_resource: 100 - timestamp_interval: 60 - metadata_list: - - status: "active" - name: "fake_resource" - deleted: "False" - created_at: "2015-09-04T12:34:19.000000" - - status: "not_active" - name: "fake_resource_1" - deleted: "False" - created_at: "2015-09-10T06:55:12.000000" - {% endcall %} - args: - limit: 50 - filter_by_user_id: true - filter_by_project_id: true - filter_by_resource_id: true - metadata_query: - status: "not_active" - sla: - {{ no_failures_sla() }} - - CeilometerMeters.list_matched_meters: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {% call user_context(tenants_amount, users_amount, use_existing_users) %} - ceilometer: - counter_name: "benchmark_meter" - counter_type: "gauge" - counter_unit: "%" - counter_volume: 100 - resources_per_tenant: 100 - samples_per_resource: 100 - timestamp_interval: 10 - metadata_list: - - - status: "active" - name: "rally benchmark on" - deleted: "false" - - - status: "terminated" - name: "rally benchmark off" - deleted: "true" - {% endcall %} - args: - limit: 50 - filter_by_user_id: true - filter_by_project_id: true - filter_by_resource_id: true - metadata_query: - status: "terminated" - sla: - {{ no_failures_sla() }} - - CeilometerResource.list_matched_resources: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {% call user_context(tenants_amount, users_amount, use_existing_users) %} - ceilometer: - counter_name: "benchmark_meter" - counter_type: "gauge" - counter_unit: "%" - counter_volume: 100 - resources_per_tenant: 100 - samples_per_resource: 100 - timestamp_interval: 10 - metadata_list: - - - status: "active" - name: "rally benchmark on" - deleted: "false" - - - status: "terminated" - name: "rally benchmark off" - deleted: "true" - {% endcall %} - args: - limit: 50 - filter_by_user_id: true - filter_by_project_id: true - metadata_query: - status: "terminated" - sla: - {{ no_failures_sla() }} - - CeilometerSamples.list_samples: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {% call user_context(tenants_amount, users_amount, use_existing_users) %} - ceilometer: - counter_name: "cpu_util" - counter_type: "gauge" - counter_unit: "instance" - counter_volume: 1.0 - resources_per_tenant: 100 - samples_per_resource: 100 - timestamp_interval: 60 - metadata_list: - - status: "active" - name: "fake_resource" - deleted: "False" - created_at: "2015-09-04T12:34:19.000000" - - status: "not_active" - name: "fake_resource_1" - deleted: "False" - created_at: "2015-09-10T06:55:12.000000" - batch_size: 5 - {% endcall %} - args: - limit: 50 - metadata_query: - status: "not_active" - sla: - {{ no_failures_sla() }} - diff --git a/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-cinder.yaml b/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-cinder.yaml index 87fae11a3..7abeeac68 100644 --- a/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-cinder.yaml +++ b/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-cinder.yaml @@ -8,6 +8,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -23,6 +25,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {{ volumes() }} {% endcall %} runner: @@ -39,6 +43,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -52,6 +58,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -70,6 +78,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -84,10 +94,15 @@ size: max: 1 min: 1 + create_vm_params: + nics: + - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -100,11 +115,16 @@ {{ vm_params(image_name,flavor_name) }} size: min: 1 - max: 5 + max: 1 + create_vm_params: + nics: + - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -117,17 +137,21 @@ size: 1 context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - args: size: min: 1 - max: 5 + max: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -142,6 +166,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} volumes: size: 1 volumes_per_tenant: 4 @@ -159,6 +185,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {{ volumes() }} {% endcall %} runner: @@ -176,6 +204,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -188,6 +218,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -200,6 +232,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -215,6 +249,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -229,6 +265,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {{ volumes() }} {% endcall %} runner: @@ -244,6 +282,8 @@ read_iops_sec: "1000" context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -257,6 +297,8 @@ read_iops_sec: "1000" context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -273,6 +315,8 @@ set_read_iops_sec: "1001" context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -284,6 +328,8 @@ description: "rally tests creating types" context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -295,18 +341,8 @@ description: "rally tests creating types" context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - sla: - {{ no_failures_sla() }} - - CinderVolumeTypes.create_and_update_volume_type: - - - args: - description: "test" - update_description: "test update" - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -322,17 +358,8 @@ control_location: "front-end" context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - sla: - {{ no_failures_sla() }} - - CinderVolumeTypes.create_volume_type_add_and_list_type_access: - - - args: - description: "rally tests creating types" - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: diff --git a/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-glance.yaml b/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-glance.yaml index dfc1fc156..993b83ff7 100644 --- a/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-glance.yaml +++ b/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-glance.yaml @@ -36,8 +36,9 @@ flavor: name: {{ flavor_name }} number_instances: 2 - nics: - - net-id: {{ netid }} + boot_server_kwargs: + nics: + - net-id: {{ netid }} context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} quotas: diff --git a/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-gnocchi.yaml b/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-gnocchi.yaml new file mode 100644 index 000000000..b4487daa0 --- /dev/null +++ b/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-gnocchi.yaml @@ -0,0 +1,181 @@ + Gnocchi.list_capabilities: + - + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + Gnocchi.get_status: + - + args: + detailed: false + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiArchivePolicyRule.list_archive_policy_rule: + - + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiArchivePolicyRule.create_archive_policy_rule: + - + args: + metric_pattern: "cpu_*" + archive_policy_name: "low" + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiArchivePolicyRule.create_delete_archive_policy_rule: + - + args: + metric_pattern: "cpu_*" + archive_policy_name: "low" + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiArchivePolicy.list_archive_policy: + - + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiArchivePolicy.create_archive_policy: + - + args: + definition: + - granularity: "0:00:01" + timespan: "1:00:00" + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiArchivePolicy.create_delete_archive_policy: + - + args: + definition: + - granularity: "0:00:01" + timespan: "1:00:00" + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiResourceType.list_resource_type: + - + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiResourceType.create_resource_type: + - + args: + attributes: + foo: + required: false + type: "string" + bar: + required: true + type: "number" + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiResourceType.create_delete_resource_type: + - + args: + attributes: + foo: + required: false + type: "string" + bar: + required: true + type: "number" + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiMetric.list_metric: + - + args: + limit: 10000 + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiMetric.create_metric: + - + args: + archive_policy_name: "low" + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiMetric.create_delete_metric: + - + args: + archive_policy_name: "low" + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiResource.create_resource: + - + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiResource.create_delete_resource: + - + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} diff --git a/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-neutron.yaml b/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-neutron.yaml index 2951e953a..b2248d499 100644 --- a/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-neutron.yaml +++ b/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-neutron.yaml @@ -27,7 +27,8 @@ ports_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} + network: + router: {} quotas: neutron: network: -1 @@ -50,7 +51,6 @@ subnets_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} quotas: neutron: network: -1 @@ -74,7 +74,6 @@ subnets_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} quotas: neutron: network: -1 @@ -108,7 +107,8 @@ ports_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} + network: + router: {} quotas: neutron: network: -1 @@ -129,7 +129,6 @@ subnets_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} quotas: neutron: network: -1 @@ -151,7 +150,6 @@ subnets_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} quotas: neutron: network: -1 @@ -185,7 +183,8 @@ ports_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} + network: + router: {} quotas: neutron: network: -1 @@ -206,7 +205,6 @@ subnets_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} quotas: neutron: network: -1 @@ -227,7 +225,6 @@ subnets_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} quotas: neutron: network: -1 @@ -315,7 +312,8 @@ ports_per_network: 2 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} + network: + router: {} quotas: neutron: network: -1 @@ -332,7 +330,6 @@ subnets_per_network: 2 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} quotas: neutron: network: -1 @@ -350,7 +347,8 @@ subnets_per_network: 2 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} + network: + router: {} quotas: neutron: network: -1 diff --git a/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-nova.yaml b/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-nova.yaml index 512448fd4..210591f9b 100644 --- a/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-nova.yaml +++ b/functest/opnfv_tests/openstack/rally/scenario/full/opnfv-nova.yaml @@ -39,9 +39,6 @@ - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: - networks_per_tenant: 1 - start_cidr: "100.1.0.0/25" quotas: {{ unlimited_neutron() }} {{ unlimited_nova() }} @@ -59,9 +56,6 @@ - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: - networks_per_tenant: 1 - start_cidr: "100.1.0.0/25" quotas: {{ unlimited_neutron() }} {{ unlimited_nova() }} @@ -80,9 +74,6 @@ - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: - networks_per_tenant: 1 - start_cidr: "100.1.0.0/25" quotas: {{ unlimited_neutron() }} {{ unlimited_nova() }} @@ -104,9 +95,6 @@ - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: - networks_per_tenant: 1 - start_cidr: "100.1.0.0/25" quotas: {{ unlimited_neutron() }} {{ unlimited_nova() }} @@ -124,9 +112,6 @@ - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: - networks_per_tenant: 1 - start_cidr: "100.1.0.0/25" quotas: {{ unlimited_neutron() }} {{ unlimited_nova() }} @@ -140,11 +125,13 @@ - args: {{ vm_params(image_name, flavor_name) }} - volume_size: 10 + volume_size: 1 nics: - net-id: {{ netid }} context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -200,7 +187,7 @@ NovaServers.boot_and_live_migrate_server: - args: {{ vm_params(image_name, flavor_name) }} - block_migration: false + block_migration: {{ block_migration }} nics: - net-id: {{ netid }} context: @@ -214,13 +201,15 @@ - args: {{ vm_params(image_name, flavor_name) }} - size: 10 - block_migration: false + size: 1 + block_migration: {{ block_migration }} boot_server_kwargs: nics: - net-id: {{ netid }} context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -229,13 +218,15 @@ NovaServers.boot_server_from_volume_and_live_migrate: - args: {{ vm_params(image_name, flavor_name) }} - block_migration: false - volume_size: 10 + block_migration: {{ block_migration }} + volume_size: 1 force_delete: false nics: - net-id: {{ netid }} context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -245,14 +236,11 @@ - args: {{ vm_params(image_name, flavor_name) }} - server_kwargs: + boot_server_kwargs: nics: - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: - networks_per_tenant: 1 - start_cidr: "100.1.0.0/25" quotas: {{ unlimited_neutron() }} {{ unlimited_nova(keypairs=true) }} @@ -266,18 +254,17 @@ - args: {{ vm_params(image_name, flavor_name) }} - volume_size: 5 + volume_size: 1 nics: - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: - networks_per_tenant: 1 - start_cidr: "100.1.0.0/25" quotas: {{ unlimited_volumes() }} {{ unlimited_neutron() }} {{ unlimited_nova() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -293,9 +280,6 @@ - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: - networks_per_tenant: 1 - start_cidr: "100.1.0.0/25" quotas: {{ unlimited_neutron() }} {{ unlimited_nova() }} @@ -375,6 +359,40 @@ context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} network: {} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} + {% endcall %} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + NovaServers.boot_server_associate_and_dissociate_floating_ip: + - + args: + {{ vm_params(image_name, flavor_name) }} + floating_network: {{ floating_network }} + nics: + - net-id: {{ netid }} + context: + {% call user_context(tenants_amount, users_amount, use_existing_users) %} + network: {} + {% endcall %} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + NovaServers.boot_and_associate_floating_ip: + - + args: + {{ vm_params(image_name, flavor_name) }} + floating_network: {{ floating_network }} + nics: + - net-id: {{ netid }} + context: + {% call user_context(tenants_amount, users_amount, use_existing_users) %} + network: {} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} diff --git a/functest/opnfv_tests/openstack/rally/scenario/opnfv-barbican.yaml b/functest/opnfv_tests/openstack/rally/scenario/opnfv-barbican.yaml new file mode 100644 index 000000000..9dd9ca271 --- /dev/null +++ b/functest/opnfv_tests/openstack/rally/scenario/opnfv-barbican.yaml @@ -0,0 +1,98 @@ + BarbicanContainers.create_and_add: + - + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + sla: + {{ no_failures_sla() }} + + BarbicanContainers.create_certificate_and_delete: + - + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + sla: + {{ no_failures_sla() }} + + BarbicanContainers.create_and_delete: + - + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + sla: + {{ no_failures_sla() }} + + BarbicanContainers.create_rsa_and_delete: + - + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + sla: + {{ no_failures_sla() }} + + BarbicanSecrets.create_and_delete: + - + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + sla: + {{ no_failures_sla() }} + + BarbicanSecrets.create_and_get: + - + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + sla: + {{ no_failures_sla() }} + + BarbicanSecrets.create_and_list: + - + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + sla: + {{ no_failures_sla() }} + + BarbicanSecrets.create: + - + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + sla: + {{ no_failures_sla() }} + + BarbicanSecrets.get: + - + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + sla: + {{ no_failures_sla() }} + + BarbicanContainers.list: + - + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + sla: + {{ no_failures_sla() }} + + BarbicanSecrets.list: + - + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + sla: + {{ no_failures_sla() }} diff --git a/functest/opnfv_tests/openstack/rally/scenario/opnfv-quotas.yaml b/functest/opnfv_tests/openstack/rally/scenario/opnfv-quotas.yaml index a0682acce..dcb007c50 100644 --- a/functest/opnfv_tests/openstack/rally/scenario/opnfv-quotas.yaml +++ b/functest/opnfv_tests/openstack/rally/scenario/opnfv-quotas.yaml @@ -4,6 +4,8 @@ max_quota: 1024 context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -15,6 +17,8 @@ max_quota: 1024 context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -31,17 +35,6 @@ sla: {{ no_failures_sla() }} - Quotas.nova_update_and_delete: - - - args: - max_quota: 1024 - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - sla: - {{ no_failures_sla() }} - Quotas.nova_update: - args: diff --git a/functest/opnfv_tests/openstack/rally/scenario/opnfv-swift.yaml b/functest/opnfv_tests/openstack/rally/scenario/opnfv-swift.yaml new file mode 100644 index 000000000..66d7cd24d --- /dev/null +++ b/functest/opnfv_tests/openstack/rally/scenario/opnfv-swift.yaml @@ -0,0 +1,71 @@ + SwiftObjects.create_container_and_object_then_list_objects: + - + args: + objects_per_container: 2 + object_size: 5120 + runner: + {{ constant_runner(concurrency=1, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + roles: + - "admin" + sla: + {{ no_failures_sla() }} + + SwiftObjects.list_objects_in_containers: + - + runner: + {{ constant_runner(concurrency=1, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + roles: + - "admin" + swift_objects: + containers_per_tenant: 1 + objects_per_container: 10 + object_size: 1024 + sla: + {{ no_failures_sla() }} + + SwiftObjects.create_container_and_object_then_download_object: + - + args: + objects_per_container: 5 + object_size: 1024 + runner: + {{ constant_runner(concurrency=1, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + roles: + - "admin" + sla: + {{ no_failures_sla() }} + + SwiftObjects.create_container_and_object_then_delete_all: + - + args: + objects_per_container: 5 + object_size: 102400 + runner: + {{ constant_runner(concurrency=1, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + roles: + - "admin" + sla: + {{ no_failures_sla() }} + + SwiftObjects.list_and_download_objects_in_containers: + - + runner: + {{ constant_runner(concurrency=1, times=iterations, is_smoke=smoke) }} + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + roles: + - "admin" + swift_objects: + containers_per_tenant: 1 + objects_per_container: 5 + object_size: 10240 + sla: + {{ no_failures_sla() }} diff --git a/functest/opnfv_tests/openstack/rally/scenario/opnfv-vm.yaml b/functest/opnfv_tests/openstack/rally/scenario/opnfv-vm.yaml index 74f509925..3aa8ac8e5 100644 --- a/functest/opnfv_tests/openstack/rally/scenario/opnfv-vm.yaml +++ b/functest/opnfv_tests/openstack/rally/scenario/opnfv-vm.yaml @@ -1,42 +1,19 @@ - VMTasks.boot_runcommand_delete: + VMTasks.dd_load_test: - args: - {{ vm_params(image_name, flavor_name) }} - floating_network: {{ floating_network }} - force_delete: false - command: - interpreter: /bin/sh - script_file: {{ sup_dir }}/instance_dd_test.sh - username: cirros + flavor: + name: {{ flavor_name }} + image: + name: {{ image_name }} nics: - net-id: {{ netid }} - context: - {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} - {% endcall %} - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - sla: - {{ no_failures_sla() }} - - - - args: - {{ vm_params(image_name, flavor_name) }} - fixed_network: private floating_network: {{ floating_network }} force_delete: false - command: - interpreter: /bin/sh - script_file: {{ sup_dir }}/instance_dd_test.sh - use_floatingip: true - username: cirros - nics: - - net-id: {{ netid }} - volume_args: - size: 2 + username: {{ username }} + runner: + {{ constant_runner(concurrency=1, times=iterations, is_smoke=smoke) }} context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + network: {} sla: {{ no_failures_sla() }} diff --git a/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-ceilometer.yaml b/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-ceilometer.yaml deleted file mode 100644 index bb070cd3a..000000000 --- a/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-ceilometer.yaml +++ /dev/null @@ -1,247 +0,0 @@ - CeilometerAlarms.create_alarm_and_get_history: - - - args: - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - state: "ok" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerAlarms.create_and_delete_alarm: - - - args: - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerAlarms.create_and_get_alarm: - - - args: - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerAlarms.create_and_list_alarm: - - - args: - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerQueries.create_and_query_alarm_history: - - - args: - orderby: !!null - limit: !!null - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerQueries.create_and_query_alarms: - - - args: - filter: {"and": [{"!=": {"state": "dummy_state"}},{"=": {"type": "threshold"}}]} - orderby: !!null - limit: 10 - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerQueries.create_and_query_samples: - - - args: - filter: {"=": {"counter_unit": "instance"}} - orderby: !!null - limit: 10 - counter_name: "cpu_util" - counter_type: "gauge" - counter_unit: "instance" - counter_volume: 1.0 - resource_id: "resource_id" - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerAlarms.create_and_update_alarm: - - - args: - meter_name: "ram_util" - threshold: 10.0 - type: "threshold" - statistic: "avg" - alarm_actions: ["http://localhost:8776/alarm"] - ok_actions: ["http://localhost:8776/ok"] - insufficient_data_actions: ["http://localhost:8776/notok"] - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerEvents.create_user_and_get_event: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerEvents.create_user_and_list_events: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerEvents.create_user_and_list_event_types: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerTraits.create_user_and_list_trait_descriptions: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerTraits.create_user_and_list_traits: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} - - CeilometerStats.get_stats: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {% call user_context(tenants_amount, users_amount, use_existing_users) %} - ceilometer: - counter_name: "benchmark_meter" - counter_type: "gauge" - counter_unit: "%" - counter_volume: 100 - resources_per_tenant: 100 - samples_per_resource: 100 - timestamp_interval: 10 - metadata_list: - - - status: "active" - name: "rally benchmark on" - deleted: "false" - - - status: "terminated" - name: "rally benchmark off" - deleted: "true" - {% endcall %} - args: - meter_name: "benchmark_meter" - filter_by_user_id: true - filter_by_project_id: true - filter_by_resource_id: true - metadata_query: - status: "terminated" - period: 300 - groupby: "resource_id" - sla: - {{ no_failures_sla() }} - - CeilometerResource.get_tenant_resources: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {% call user_context(tenants_amount, users_amount, use_existing_users) %} - ceilometer: - counter_name: "cpu_util" - counter_type: "gauge" - counter_volume: 1.0 - counter_unit: "instance" - {% endcall %} - sla: - {{ no_failures_sla() }} - - CeilometerAlarms.list_alarms: - - - runner: - {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} - context: - {{ user_context(tenants_amount, users_amount, use_existing_users) }} - sla: - {{ no_failures_sla() }} diff --git a/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-cinder.yaml b/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-cinder.yaml index 832358075..f94a5a1a4 100644 --- a/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-cinder.yaml +++ b/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-cinder.yaml @@ -6,6 +6,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {{ volumes() }} {% endcall %} runner: @@ -23,6 +25,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -35,6 +39,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -47,6 +53,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -62,6 +70,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -76,6 +86,8 @@ {% call user_context(tenants_amount, users_amount, use_existing_users) %} quotas: {{ unlimited_volumes() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {{ volumes() }} {% endcall %} runner: @@ -91,6 +103,8 @@ read_iops_sec: "1000" context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -107,6 +121,8 @@ set_read_iops_sec: "1001" context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -118,6 +134,8 @@ description: "rally tests creating types" context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -133,6 +151,8 @@ control_location: "front-end" context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: diff --git a/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-glance.yaml b/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-glance.yaml index 1b61762f9..279e81439 100644 --- a/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-glance.yaml +++ b/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-glance.yaml @@ -36,8 +36,9 @@ flavor: name: {{ flavor_name }} number_instances: 2 - nics: - - net-id: {{ netid }} + boot_server_kwargs: + nics: + - net-id: {{ netid }} context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} quotas: diff --git a/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-gnocchi.yaml b/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-gnocchi.yaml new file mode 100644 index 000000000..d99b15f81 --- /dev/null +++ b/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-gnocchi.yaml @@ -0,0 +1,119 @@ + Gnocchi.list_capabilities: + - + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + Gnocchi.get_status: + - + args: + detailed: false + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiArchivePolicyRule.list_archive_policy_rule: + - + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiArchivePolicyRule.create_delete_archive_policy_rule: + - + args: + metric_pattern: "cpu_*" + archive_policy_name: "low" + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiArchivePolicy.list_archive_policy: + - + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiArchivePolicy.create_delete_archive_policy: + - + args: + definition: + - granularity: "0:00:01" + timespan: "1:00:00" + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiResourceType.list_resource_type: + - + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiResourceType.create_delete_resource_type: + - + args: + attributes: + foo: + required: false + type: "string" + bar: + required: true + type: "number" + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiMetric.list_metric: + - + args: + limit: 10000 + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiMetric.create_delete_metric: + - + args: + archive_policy_name: "low" + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + GnocchiResource.create_delete_resource: + - + context: + {{ user_context(tenants_amount, users_amount, use_existing_users) }} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} diff --git a/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-neutron.yaml b/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-neutron.yaml index da99a48b5..3eb7652c0 100644 --- a/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-neutron.yaml +++ b/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-neutron.yaml @@ -21,7 +21,8 @@ ports_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} + network: + router: {} quotas: neutron: network: -1 @@ -42,7 +43,6 @@ subnets_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} quotas: neutron: network: -1 @@ -64,7 +64,8 @@ subnets_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} + network: + router: {} quotas: neutron: network: -1 @@ -98,7 +99,8 @@ ports_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} + network: + router: {} quotas: neutron: network: -1 @@ -119,7 +121,6 @@ subnets_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} quotas: neutron: network: -1 @@ -140,7 +141,6 @@ subnets_per_network: 1 context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: {} quotas: neutron: network: -1 diff --git a/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-nova.yaml b/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-nova.yaml index 801938c4e..1fbfccb5a 100644 --- a/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-nova.yaml +++ b/functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-nova.yaml @@ -1,7 +1,7 @@ NovaServers.boot_and_live_migrate_server: - args: {{ vm_params(image_name, flavor_name) }} - block_migration: false + block_migration: {{ block_migration }} nics: - net-id: {{ netid }} context: @@ -15,13 +15,15 @@ - args: {{ vm_params(image_name, flavor_name) }} - size: 10 - block_migration: false + size: 1 + block_migration: {{ block_migration }} boot_server_kwargs: nics: - net-id: {{ netid }} context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -30,13 +32,15 @@ NovaServers.boot_server_from_volume_and_live_migrate: - args: {{ vm_params(image_name, flavor_name) }} - block_migration: false - volume_size: 10 + block_migration: {{ block_migration }} + volume_size: 1 force_delete: false nics: - net-id: {{ netid }} context: {{ user_context(tenants_amount, users_amount, use_existing_users) }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} sla: @@ -46,14 +50,11 @@ - args: {{ vm_params(image_name, flavor_name) }} - server_kwargs: + boot_server_kwargs: nics: - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: - networks_per_tenant: 1 - start_cidr: "100.1.0.0/25" quotas: {{ unlimited_neutron() }} {{ unlimited_nova(keypairs=true) }} @@ -67,18 +68,17 @@ - args: {{ vm_params(image_name, flavor_name) }} - volume_size: 5 + volume_size: 1 nics: - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: - networks_per_tenant: 1 - start_cidr: "100.1.0.0/25" quotas: {{ unlimited_volumes() }} {{ unlimited_neutron() }} {{ unlimited_nova() }} + api_versions: + {{ volume_service(version=volume_version, service_type=volume_service_type) }} {% endcall %} runner: {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} @@ -94,9 +94,6 @@ - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} - network: - networks_per_tenant: 1 - start_cidr: "100.1.0.0/25" quotas: {{ unlimited_neutron() }} {{ unlimited_nova() }} @@ -122,7 +119,24 @@ - args: {{ vm_params(image_name, flavor_name) }} - auto_assign_nic: true + nics: + - net-id: {{ netid }} + context: + {% call user_context(tenants_amount, users_amount, use_existing_users) %} + network: {} + {% endcall %} + runner: + {{ constant_runner(concurrency=concurrency, times=iterations, is_smoke=smoke) }} + sla: + {{ no_failures_sla() }} + + NovaServers.boot_server_associate_and_dissociate_floating_ip: + - + args: + {{ vm_params(image_name, flavor_name) }} + floating_network: {{ floating_network }} + nics: + - net-id: {{ netid }} context: {% call user_context(tenants_amount, users_amount, use_existing_users) %} network: {} diff --git a/functest/opnfv_tests/openstack/rally/scenario/support/instance_dd_test.sh b/functest/opnfv_tests/openstack/rally/scenario/support/instance_dd_test.sh deleted file mode 100644 index e3bf23405..000000000 --- a/functest/opnfv_tests/openstack/rally/scenario/support/instance_dd_test.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -time_seconds(){ (time -p $1 ) 2>&1 |awk '/real/{print $2}'; } -file=/tmp/test.img -c=${1:-$SIZE} -c=${c:-1000} #default is 1GB -write_seq=$(time_seconds "dd if=/dev/zero of=$file bs=1M count=$c") -read_seq=$(time_seconds "dd if=$file of=/dev/null bs=1M count=$c") -[ -f $file ] && rm $file - -echo "{ - \"write_seq_${c}m\": $write_seq, - \"read_seq_${c}m\": $read_seq - }" diff --git a/functest/opnfv_tests/openstack/rally/scenario/templates/server_with_ports.yaml.template b/functest/opnfv_tests/openstack/rally/scenario/templates/server_with_ports.yaml.template index 35b107838..75afb2dbe 100644 --- a/functest/opnfv_tests/openstack/rally/scenario/templates/server_with_ports.yaml.template +++ b/functest/opnfv_tests/openstack/rally/scenario/templates/server_with_ports.yaml.template @@ -7,7 +7,7 @@ parameters: default: public image: type: string - default: cirros-0.4.0-x86_64-uec + default: cirros-0.6.1-x86_64-uec flavor: type: string default: m1.tiny diff --git a/functest/opnfv_tests/openstack/rally/scenario/templates/server_with_volume.yaml.template b/functest/opnfv_tests/openstack/rally/scenario/templates/server_with_volume.yaml.template index 5c9a86b79..9a0f1aa72 100644 --- a/functest/opnfv_tests/openstack/rally/scenario/templates/server_with_volume.yaml.template +++ b/functest/opnfv_tests/openstack/rally/scenario/templates/server_with_volume.yaml.template @@ -4,7 +4,7 @@ parameters: # set all correct defaults for parameters before launch test image: type: string - default: cirros-0.4.0-x86_64-uec + default: cirros-0.5.1-x86_64-uec flavor: type: string default: m1.tiny diff --git a/functest/opnfv_tests/openstack/rally/task.yaml b/functest/opnfv_tests/openstack/rally/task.yaml index 65f101fbe..649c04557 100644 --- a/functest/opnfv_tests/openstack/rally/task.yaml +++ b/functest/opnfv_tests/openstack/rally/task.yaml @@ -4,7 +4,7 @@ {%- endif %} {%- from "macro/macro.yaml" import user_context, vm_params, unlimited_volumes, constant_runner, rps_runner, no_failures_sla -%} -{%- from "macro/macro.yaml" import volumes, unlimited_nova, unlimited_neutron, glance_args -%} +{%- from "macro/macro.yaml" import volumes, unlimited_nova, unlimited_neutron, glance_args, volume_service -%} --- {% if "authenticate" in service_list %} @@ -15,6 +15,10 @@ {%- include "var/opnfv-cinder.yaml"-%} {% endif %} +{% if "gnocchi" in service_list %} +{%- include "var/opnfv-gnocchi.yaml"-%} +{% endif %} + {% if "keystone" in service_list %} {%- include "var/opnfv-keystone.yaml"-%} {% endif %} @@ -31,10 +35,6 @@ {%- include "var/opnfv-neutron.yaml"-%} {% endif %} -{% if "ceilometer" in service_list %} -{%- include "var/opnfv-ceilometer.yaml"-%} -{% endif %} - {% if "quotas" in service_list %} {%- include "var/opnfv-quotas.yaml"-%} {% endif %} @@ -43,6 +43,14 @@ {%- include "var/opnfv-heat.yaml"-%} {% endif %} +{% if "swift" in service_list %} +{%- include "var/opnfv-swift.yaml"-%} +{% endif %} + +{% if "barbican" in service_list %} +{%- include "var/opnfv-barbican.yaml"-%} +{% endif %} + {% if "vm" in service_list %} {%- include "var/opnfv-vm.yaml"-%} {% endif %} diff --git a/functest/opnfv_tests/openstack/refstack/__init__.py b/functest/opnfv_tests/openstack/refstack/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/functest/opnfv_tests/openstack/refstack/__init__.py diff --git a/functest/opnfv_tests/openstack/refstack/refstack.py b/functest/opnfv_tests/openstack/refstack/refstack.py new file mode 100644 index 000000000..87932020b --- /dev/null +++ b/functest/opnfv_tests/openstack/refstack/refstack.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python + +# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +"""Refstack testcase implementation.""" + +import logging +import os +import re +import subprocess +import yaml + +from functest.opnfv_tests.openstack.tempest import tempest +from functest.utils import config + + +class Refstack(tempest.TempestCommon): + """Refstack testcase implementation class.""" + + __logger = logging.getLogger(__name__) + + def _extract_refstack_data(self, refstack_list): + yaml_data = "" + with open(refstack_list, encoding='utf-8') as def_file: + for line in def_file: + try: + grp = re.search(r'^([^\[]*)(\[.*\])\n*$', line) + yaml_data = f"{yaml_data}\n{grp.group(1)}: {grp.group(2)}" + except Exception: # pylint: disable=broad-except + self.__logger.warning("Cannot parse %s", line) + return yaml.full_load(yaml_data) + + def _extract_tempest_data(self): + olddir = os.getcwd() + try: + os.chdir(self.verifier_repo_dir) + cmd = ['stestr', 'list', '^tempest.'] + output = subprocess.check_output(cmd) + except subprocess.CalledProcessError as cpe: + self.__logger.error( + "Exception when listing tempest tests: %s\n%s", + cpe.cmd, cpe.output.decode("utf-8")) + raise + finally: + os.chdir(olddir) + yaml_data2 = "" + for line in output.splitlines(): + try: + grp = re.search(r'^([^\[]*)(\[.*\])\n*$', line.decode("utf-8")) + yaml_data2 = f"{yaml_data2}\n{grp.group(1)}: {grp.group(2)}" + except Exception: # pylint: disable=broad-except + self.__logger.warning("Cannot parse %s. skipping it", line) + return yaml.full_load(yaml_data2) + + def generate_test_list(self, **kwargs): + refstack_list = os.path.join( + getattr(config.CONF, 'dir_refstack_data'), + f"{kwargs.get('target', 'compute')}.txt") + self.backup_tempest_config(self.conf_file, '/etc') + refstack_data = self._extract_refstack_data(refstack_list) + tempest_data = self._extract_tempest_data() + with open(self.list, 'w', encoding='utf-8') as ref_file: + for key in refstack_data.keys(): + try: + for data in tempest_data[key]: + if data == refstack_data[key][0]: + break + else: + self.__logger.info("%s: ids differ. skipping it", key) + continue + value = str(tempest_data[key]).replace( + "'", "").replace(", ", ",") + ref_file.write(f"{key}{value}\n") + except Exception: # pylint: disable=broad-except + self.__logger.info("%s: not found. skipping it", key) + continue diff --git a/functest/opnfv_tests/openstack/refstack_client/defcore.txt b/functest/opnfv_tests/openstack/refstack_client/defcore.txt deleted file mode 100644 index e958b47cd..000000000 --- a/functest/opnfv_tests/openstack/refstack_client/defcore.txt +++ /dev/null @@ -1,313 +0,0 @@ -# Set of DefCore tempest test cases not flagged and required. -# According to https://github.com/openstack/interop/blob/master/doc/source/guidelines/2017.09.rst, -# some tests are still flagged due to outstanding bugs in the Tempest library, -# particularly tests that require SSH. Refstack developers -# are working on correcting these bugs upstream. Please note that although some tests -# are flagged because of bugs, there is still an expectation that the capabilities -# covered by the tests are available. -# It only contains Openstack core compute (no object storage) -# The approved guidelines (2017.09) are valid for Mitaka, Newton, Ocata, Pike releases of OpenStack -# The list can be generated using the Rest API from RefStack project: -# https://refstack.openstack.org/api/v1/guidelines/2017.09/tests?target=compute&type=required&alias=true&flag=false -tempest.api.compute.flavors.test_flavors.FlavorsV2TestJSON.test_list_flavors[id-e36c0eaa-dff5-4082-ad1f-3f9a80aa3f59] -tempest.api.compute.flavors.test_flavors.FlavorsV2TestJSON.test_list_flavors_with_detail[id-6e85fde4-b3cd-4137-ab72-ed5f418e8c24] -tempest.api.compute.images.test_images_oneserver.ImagesOneServerTestJSON.test_create_delete_image[id-3731d080-d4c5-4872-b41a-64d0d0021314] -tempest.api.compute.images.test_images_oneserver.ImagesOneServerTestJSON.test_create_image_specify_multibyte_character_image_name[id-3b7c6fe4-dfe7-477c-9243-b06359db51e6] -tempest.api.compute.servers.test_availability_zone.AZV2TestJSON.test_get_availability_zone_list_with_non_admin_user[id-a8333aa2-205c-449f-a828-d38c2489bf25] -tempest.api.compute.servers.test_create_server.ServersTestJSON.test_host_name_is_same_as_server_name[id-ac1ad47f-984b-4441-9274-c9079b7a0666] -tempest.api.compute.servers.test_create_server.ServersTestJSON.test_list_servers[id-9a438d88-10c6-4bcd-8b5b-5b6e25e1346f] -tempest.api.compute.servers.test_create_server.ServersTestJSON.test_list_servers_with_detail[id-585e934c-448e-43c4-acbf-d06a9b899997] -tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_created_server_vcpus[id-cbc0f52f-05aa-492b-bdc1-84b575ca294b] -tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_server_details[id-5de47127-9977-400a-936f-abcfbec1218f] -tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_host_name_is_same_as_server_name[id-ac1ad47f-984b-4441-9274-c9079b7a0666] -tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_list_servers[id-9a438d88-10c6-4bcd-8b5b-5b6e25e1346f] -tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_list_servers_with_detail[id-585e934c-448e-43c4-acbf-d06a9b899997] -tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_created_server_vcpus[id-cbc0f52f-05aa-492b-bdc1-84b575ca294b] -tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_server_details[id-5de47127-9977-400a-936f-abcfbec1218f] -tempest.api.compute.servers.test_delete_server.DeleteServersTestJSON.test_delete_active_server[id-925fdfb4-5b13-47ea-ac8a-c36ae6fddb05] -tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_get_instance_action[id-aacc71ca-1d70-4aa5-bbf6-0ff71470e43c] -tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_list_instance_actions[id-77ca5cc5-9990-45e0-ab98-1de8fead201a] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_flavor[id-80c574cc-0925-44ba-8602-299028357dd9] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_image[id-b3304c3b-97df-46d2-8cd3-e2b6659724e7] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_server_name[id-f9eb2b70-735f-416c-b260-9914ac6181e4] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_server_status[id-de2612ab-b7dd-4044-b0b1-d2539601911f] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_limit_results[id-67aec2d0-35fe-4503-9f92-f13272b867ed] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_active_status[id-ca78e20e-fddb-4ce6-b7f7-bcbf8605e66e] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_flavor[id-573637f5-7325-47bb-9144-3476d0416908] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_image[id-05e8a8e7-9659-459a-989d-92c2f501f4ba] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_limit[id-614cdfc1-d557-4bac-915b-3e67b48eee76] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_server_name[id-9b067a7b-7fee-4f6a-b29c-be43fe18fc5a] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_server_status[id-ca78e20e-fddb-4ce6-b7f7-bcbf8605e66e] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filtered_by_name_wildcard[id-e9f624ee-92af-4562-8bec-437945a18dcb] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_changes_since_future_date[id-74745ad8-b346-45b5-b9b8-509d7447fc1f] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_changes_since_invalid_date[id-87d12517-e20a-4c9c-97b6-dd1628d6d6c9] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits_greater_than_actual_count[id-d47c17fb-eebd-4287-8e95-f20a7e627b18] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits_pass_negative_value[id-62610dd9-4713-4ee0-8beb-fd2c1aa7f950] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits_pass_string[id-679bc053-5e70-4514-9800-3dfab1a380a6] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_non_existing_flavor[id-5913660b-223b-44d4-a651-a0fbfd44ca75] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_non_existing_image[id-ff01387d-c7ad-47b4-ae9e-64fa214638fe] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_non_existing_server_name[id-e2c77c4a-000a-4af3-a0bd-629a328bde7c] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_detail_server_is_deleted[id-93055106-2d34-46fe-af68-d9ddbf7ee570] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_status_non_existing[id-fcdf192d-0f74-4d89-911f-1ec002b822c4] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_with_a_deleted_server[id-24a26f1a-1ddc-4eea-b0d7-a90cc874ad8f] -tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_lock_unlock_server[id-80a8094c-211e-440a-ab88-9e59d556c7ee] -tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_reboot_server_hard[id-2cb1baf6-ac8d-4429-bf0d-ba8a0ba53e32] -tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_rebuild_server[id-aaa6cdf3-55a7-461a-add9-1c8596b9a07c] -tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_stop_start_server[id-af8eafd4-38a7-4a4b-bdbc-75145a580560] -tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_delete_server_metadata_item[id-127642d6-4c7b-4486-b7cd-07265a378658] -tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_get_server_metadata_item[id-3043c57d-7e0e-49a6-9a96-ad569c265e6a] -tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_list_server_metadata[id-479da087-92b3-4dcf-aeb3-fd293b2d14ce] -tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_set_server_metadata[id-211021f6-21de-4657-a68f-908878cfe251] -tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_set_server_metadata_item[id-58c02d4f-5c67-40be-8744-d3fa5982eb1c] -tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_update_server_metadata[id-344d981e-0c33-4997-8a5d-6c1d803e4134] -tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_server_with_admin_password[id-b92d5ec7-b1dd-44a2-87e4-45e888c46ef0] -tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_specify_keypair[id-f9e15296-d7f9-4e62-b53f-a04e89160833] -tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_with_existing_server_name[id-8fea6be7-065e-47cf-89b8-496e6f96c699] -tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_access_server_address[id-89b90870-bc13-4b73-96af-f9d4f2b70077] -tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_server_name[id-5e6ccff8-349d-4852-a8b3-055df7988dd2] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_numeric_server_name[id-fd57f159-68d6-4c2a-902b-03070828a87e] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_server_metadata_exceeds_length_limit[id-7fc74810-0bd2-4cd7-8244-4f33a9db865a] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_server_name_length_exceeds_256[id-c3e0fb12-07fc-4d76-a22e-37409887afe8] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_flavor[id-18f5227f-d155-4429-807c-ccb103887537] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_image[id-fcba1052-0a50-4cf3-b1ac-fae241edf02f] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_network_uuid[id-4e72dc2d-44c5-4336-9667-f7972e95c402] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_delete_server_pass_id_exceeding_length_limit[id-f4d7279b-5fd2-4bf2-9ba4-ae35df0d18c5] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_delete_server_pass_negative_id[id-75f79124-277c-45e6-a373-a1d6803f4cc4] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_get_non_existent_server[id-3436b02f-1b1e-4f03-881e-c6a602327439] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_invalid_ip_v6_address[id-5226dd80-1e9c-4d8a-b5f9-b26ca4763fd0] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_reboot_non_existent_server[id-d4c023a0-9c55-4747-9dd5-413b820143c7] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_deleted_server[id-98fa0458-1485-440f-873b-fe7f0d714930] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_non_existent_server[id-d86141a7-906e-4731-b187-d64a2ea61422] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_reboot_deleted_server[id-98fa0458-1485-440f-873b-fe7f0d714930] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_server_name_blank[id-dbbfd247-c40c-449e-8f6c-d2aa7c7da7cf] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_stop_non_existent_server[id-a31460a9-49e1-42aa-82ee-06e0bb7c2d03] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_name_of_non_existent_server[id-aa8eed43-e2cb-4ebf-930b-da14f6a21d81] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_server_name_length_exceeds_256[id-5c8e244c-dada-4590-9944-749c455b431f] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_server_set_empty_name[id-38204696-17c6-44da-9590-40f87fb5a899] -tempest.api.compute.test_quotas.QuotasTestJSON.test_get_default_quotas[id-9bfecac7-b966-4f47-913f-1a9e2c12134a] -tempest.api.compute.test_quotas.QuotasTestJSON.test_get_quotas[id-f1ef0a97-dbbb-4cca-adc5-c9fbc4f76107] -tempest.api.compute.test_versions.TestVersions.test_list_api_versions[id-6c0a0990-43b6-4529-9b61-5fd8daf7c55c] -# tempest.api.compute.volumes.test_attach_volume.AttachVolumeTestJSON.test_attach_detach_volume[id-52e9045a-e90d-4c0d-9087-79d657faffff] -tempest.api.compute.volumes.test_attach_volume.AttachVolumeTestJSON.test_list_get_volume_attachments[id-7fa563fe-f0f7-43eb-9e22-a1ece036b513] -tempest.api.identity.v3.TestApiDiscovery.test_api_media_types[id-657c1970-4722-4189-8831-7325f3bc4265] -tempest.api.identity.v3.TestApiDiscovery.test_api_version_resources[id-b9232f5e-d9e5-4d97-b96c-28d3db4de1bd] -tempest.api.identity.v3.TestApiDiscovery.test_api_version_statuses[id-8879a470-abfb-47bb-bb8d-5a7fd279ad1e] -tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_media_types[id-657c1970-4722-4189-8831-7325f3bc4265] -tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_version_resources[id-b9232f5e-d9e5-4d97-b96c-28d3db4de1bd] -tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_version_statuses[id-8879a470-abfb-47bb-bb8d-5a7fd279ad1e] -tempest.api.identity.v3.test_tokens.TokensV3Test.test_create_token[id-6f8e4436-fc96-4282-8122-e41df57197a9] -tempest.api.image.v2.test_images.BasicOperationsImagesTest.test_delete_image[id-f848bb94-1c6e-45a4-8726-39e3a5b23535] -tempest.api.image.v2.test_images.BasicOperationsImagesTest.test_update_image[id-f66891a7-a35c-41a8-b590-a065c2a1caa6] -tempest.api.image.v2.test_images.ListImagesTest.test_get_image_schema[id-622b925c-479f-4736-860d-adeaf13bc371] -tempest.api.image.v2.test_images.ListImagesTest.test_get_images_schema[id-25c8d7b2-df21-460f-87ac-93130bcdc684] -tempest.api.image.v2.test_images.ListImagesTest.test_index_no_params[id-1e341d7a-90a9-494c-b143-2cdf2aeb6aee] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_container_format[id-9959ca1d-1aa7-4b7a-a1ea-0fff0499b37e] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_disk_format[id-4a4735a7-f22f-49b6-b0d9-66e1ef7453eb] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_limit[id-e914a891-3cc8-4b40-ad32-e0a39ffbddbb] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_min_max_size[id-4ad8c157-971a-4ba8-aa84-ed61154b1e7f] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_size[id-cf1b9a48-8340-480e-af7b-fe7e17690876] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_status[id-7fc9e369-0f58-4d05-9aa5-0969e2d59d15] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_visibility[id-7a95bb92-d99e-4b12-9718-7bc6ab73e6d2] -tempest.api.image.v2.test_images.ListImagesTest.test_list_no_params[id-1e341d7a-90a9-494c-b143-2cdf2aeb6aee] -tempest.api.image.v2.test_images.ListUserImagesTest.test_get_image_schema[id-622b925c-479f-4736-860d-adeaf13bc371] -tempest.api.image.v2.test_images.ListUserImagesTest.test_get_images_schema[id-25c8d7b2-df21-460f-87ac-93130bcdc684] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_container_format[id-9959ca1d-1aa7-4b7a-a1ea-0fff0499b37e] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_disk_format[id-4a4735a7-f22f-49b6-b0d9-66e1ef7453eb] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_limit[id-e914a891-3cc8-4b40-ad32-e0a39ffbddbb] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_min_max_size[id-4ad8c157-971a-4ba8-aa84-ed61154b1e7f] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_size[id-cf1b9a48-8340-480e-af7b-fe7e17690876] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_status[id-7fc9e369-0f58-4d05-9aa5-0969e2d59d15] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_visibility[id-7a95bb92-d99e-4b12-9718-7bc6ab73e6d2] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_no_params[id-1e341d7a-90a9-494c-b143-2cdf2aeb6aee] -tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_delete_image_null_id[id-32248db1-ab88-4821-9604-c7c369f1f88c] -tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_delete_non_existing_image[id-6fe40f1c-57bd-4918-89cc-8500f850f3de] -tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_get_delete_deleted_image[id-e57fc127-7ba0-4693-92d7-1d8a05ebcba9] -tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_get_image_null_id[id-ef45000d-0a72-4781-866d-4cb7bf2562ad] -tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_get_non_existent_image[id-668743d5-08ad-4480-b2b8-15da34f81d9f] -tempest.api.image.v2.test_images_tags.ImagesTagsTest.test_update_delete_tags_for_image[id-10407036-6059-4f95-a2cd-cbbbee7ed329] -tempest.api.image.v2.test_images_tags_negative.ImagesTagsNegativeTest.test_delete_non_existing_tag[id-39c023a2-325a-433a-9eea-649bf1414b19] -tempest.api.image.v2.test_images_tags_negative.ImagesTagsNegativeTest.test_update_tags_for_non_existing_image[id-8cd30f82-6f9a-4c6e-8034-c1b51fba43d9] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_all_attributes[id-a4d9ec4c-0306-4111-a75c-db01a709030b] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_allocation_pools[id-bec949c4-3147-4ba6-af5f-cd2306118404] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_dhcp_enabled[id-94ce038d-ff0a-4a4c-a56b-09da3ca0b55d] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_gw[id-9393b468-186d-496d-aa36-732348cd76e7] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_gw_and_allocation_pools[id-8217a149-0c6c-4cfb-93db-0486f707d13f] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_host_routes_and_dns_nameservers[id-d830de0a-be47-468f-8f02-1fd996118289] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_without_gateway[id-d2d596e2-8e76-47a9-ac51-d4648009f4d3] -tempest.api.network.test_networks.NetworksTest.test_create_update_delete_network_subnet[id-0e269138-0da6-4efc-a46d-578161e7b221] -tempest.api.network.test_networks.NetworksTest.test_delete_network_with_subnet[id-f04f61a9-b7f3-4194-90b2-9bcf660d1bfe] -tempest.api.network.test_networks.NetworksTest.test_list_networks[id-f7ffdeda-e200-4a7a-bcbe-05716e86bf43] -tempest.api.network.test_networks.NetworksTest.test_list_networks_fields[id-6ae6d24f-9194-4869-9c85-c313cb20e080] -tempest.api.network.test_networks.NetworksTest.test_list_subnets[id-db68ba48-f4ea-49e9-81d1-e367f6d0b20a] -tempest.api.network.test_networks.NetworksTest.test_list_subnets_fields[id-842589e3-9663-46b0-85e4-7f01273b0412] -tempest.api.network.test_networks.NetworksTest.test_show_network[id-2bf13842-c93f-4a69-83ed-717d2ec3b44e] -tempest.api.network.test_networks.NetworksTest.test_show_network_fields[id-867819bb-c4b6-45f7-acf9-90edcf70aa5e] -tempest.api.network.test_networks.NetworksTest.test_show_subnet[id-bd635d81-6030-4dd1-b3b9-31ba0cfdf6cc] -tempest.api.network.test_networks.NetworksTest.test_show_subnet_fields[id-270fff0b-8bfc-411f-a184-1e8fd35286f0] -tempest.api.network.test_networks.NetworksTest.test_update_subnet_gw_dns_host_routes_dhcp[id-3d3852eb-3009-49ec-97ac-5ce83b73010a] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_all_attributes[id-a4d9ec4c-0306-4111-a75c-db01a709030b] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_with_allocation_pools[id-bec949c4-3147-4ba6-af5f-cd2306118404] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_with_dhcp_enabled[id-94ce038d-ff0a-4a4c-a56b-09da3ca0b55d] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_with_gw[id-9393b468-186d-496d-aa36-732348cd76e7] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_with_gw_and_allocation_pools[id-8217a149-0c6c-4cfb-93db-0486f707d13f] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_with_host_routes_and_dns_nameservers[id-d830de0a-be47-468f-8f02-1fd996118289] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_without_gateway[id-d2d596e2-8e76-47a9-ac51-d4648009f4d3] -tempest.api.network.test_networks.NetworksTestJSON.test_create_update_delete_network_subnet[id-0e269138-0da6-4efc-a46d-578161e7b221] -tempest.api.network.test_networks.NetworksTestJSON.test_delete_network_with_subnet[id-f04f61a9-b7f3-4194-90b2-9bcf660d1bfe] -tempest.api.network.test_networks.NetworksTestJSON.test_list_networks[id-f7ffdeda-e200-4a7a-bcbe-05716e86bf43] -tempest.api.network.test_networks.NetworksTestJSON.test_list_networks_fields[id-6ae6d24f-9194-4869-9c85-c313cb20e080] -tempest.api.network.test_networks.NetworksTestJSON.test_list_subnets[id-db68ba48-f4ea-49e9-81d1-e367f6d0b20a] -tempest.api.network.test_networks.NetworksTestJSON.test_list_subnets_fields[id-842589e3-9663-46b0-85e4-7f01273b0412] -tempest.api.network.test_networks.NetworksTestJSON.test_show_network[id-2bf13842-c93f-4a69-83ed-717d2ec3b44e] -tempest.api.network.test_networks.NetworksTestJSON.test_show_network_fields[id-867819bb-c4b6-45f7-acf9-90edcf70aa5e] -tempest.api.network.test_networks.NetworksTestJSON.test_show_subnet[id-bd635d81-6030-4dd1-b3b9-31ba0cfdf6cc] -tempest.api.network.test_networks.NetworksTestJSON.test_show_subnet_fields[id-270fff0b-8bfc-411f-a184-1e8fd35286f0] -tempest.api.network.test_networks.NetworksTestJSON.test_update_subnet_gw_dns_host_routes_dhcp[id-3d3852eb-3009-49ec-97ac-5ce83b73010a] -tempest.api.network.test_ports.PortsTestJSON.test_create_bulk_port[id-67f1b811-f8db-43e2-86bd-72c074d4a42c] -tempest.api.network.test_ports.PortsTestJSON.test_create_port_in_allowed_allocation_pools[id-0435f278-40ae-48cb-a404-b8a087bc09b1] -tempest.api.network.test_ports.PortsTestJSON.test_create_update_delete_port[id-c72c1c0c-2193-4aca-aaa4-b1442640f51c] -tempest.api.network.test_ports.PortsTestJSON.test_list_ports[id-cf95b358-3e92-4a29-a148-52445e1ac50e] -tempest.api.network.test_ports.PortsTestJSON.test_list_ports_fields[id-ff7f117f-f034-4e0e-abff-ccef05c454b4] -tempest.api.network.test_ports.PortsTestJSON.test_show_port[id-c9a685bd-e83f-499c-939f-9f7863ca259f] -tempest.api.network.test_ports.PortsTestJSON.test_show_port_fields[id-45fcdaf2-dab0-4c13-ac6c-fcddfb579dbd] -tempest.api.network.test_security_groups.SecGroupTest.test_create_list_update_show_delete_security_group[id-bfd128e5-3c92-44b6-9d66-7fe29d22c802] -tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_additional_args[id-87dfbcf9-1849-43ea-b1e4-efa3eeae9f71] -tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_icmp_type_code[id-c9463db8-b44d-4f52-b6c0-8dbda99f26ce] -tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_protocol_integer_value[id-0a307599-6655-4220-bebc-fd70c64f2290] -tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_remote_group_id[id-c2ed2deb-7a0c-44d8-8b4c-a5825b5c310b] -tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_remote_ip_prefix[id-16459776-5da2-4634-bce4-4b55ee3ec188] -tempest.api.network.test_security_groups.SecGroupTest.test_create_show_delete_security_group_rule[id-cfb99e0e-7410-4a3d-8a0c-959a63ee77e9] -tempest.api.network.test_security_groups.SecGroupTest.test_list_security_groups[id-e30abd17-fef9-4739-8617-dc26da88e686] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_additional_default_security_group_fails[id-2323061e-9fbf-4eb0-b547-7e8fafc90849] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_duplicate_security_group_rule_fails[id-8fde898f-ce88-493b-adc9-4e4692879fc5] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_bad_ethertype[id-5666968c-fff3-40d6-9efc-df1c8bd01abb] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_bad_protocol[id-981bdc22-ce48-41ed-900a-73148b583958] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_bad_remote_ip_prefix[id-5f8daf69-3c5f-4aaa-88c9-db1d66f68679] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_invalid_ports[id-0d9c7791-f2ad-4e2f-ac73-abf2373b0d2d] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_non_existent_remote_groupid[id-4bf786fd-2f02-443c-9716-5b98e159a49a] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_non_existent_security_group[id-be308db6-a7cf-4d5c-9baf-71bafd73f35e] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_delete_non_existent_security_group[id-1f1bb89d-5664-4956-9fcd-83ee0fa603df] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_show_non_existent_security_group[id-424fd5c3-9ddc-486a-b45f-39bf0c820fc6] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_show_non_existent_security_group_rule[id-4c094c09-000b-4e41-8100-9617600c02a6] -tempest.api.network.test_subnetpools_extensions.SubnetPoolsTestJSON.test_create_list_show_update_delete_subnetpools[id-62595970-ab1c-4b7f-8fcc-fddfe55e9811] -tempest.api.volume.test_availability_zone.AvailabilityZoneTestJSON.test_get_availability_zone_list[id-01f1ae88-eba9-4c6b-a011-6f7ace06b725] -tempest.api.volume.test_availability_zone.AvailabilityZoneV2TestJSON.test_get_availability_zone_list[id-01f1ae88-eba9-4c6b-a011-6f7ace06b725] -tempest.api.volume.test_extensions.ExtensionsTestJSON.test_list_extensions[id-94607eb0-43a5-47ca-82aa-736b41bd2e2c] -tempest.api.volume.test_extensions.ExtensionsV2TestJSON.test_list_extensions[id-94607eb0-43a5-47ca-82aa-736b41bd2e2c] -tempest.api.volume.test_snapshot_metadata.SnapshotMetadataTestJSON.test_crud_snapshot_metadata[id-a2f20f99-e363-4584-be97-bc33afb1a56c] -tempest.api.volume.test_snapshot_metadata.SnapshotMetadataTestJSON.test_update_show_snapshot_metadata_item[id-e8ff85c5-8f97-477f-806a-3ac364a949ed] -tempest.api.volume.test_snapshot_metadata.SnapshotMetadataTestJSON.test_update_snapshot_metadata_item[id-e8ff85c5-8f97-477f-806a-3ac364a949ed] -tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_create_get_delete_snapshot_metadata[id-a2f20f99-e363-4584-be97-bc33afb1a56c] -tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_crud_snapshot_metadata[id-a2f20f99-e363-4584-be97-bc33afb1a56c] -tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_update_snapshot_metadata_item[id-e8ff85c5-8f97-477f-806a-3ac364a949ed] -tempest.api.volume.test_volume_metadata.VolumesMetadataTest.test_crud_volume_metadata[id-6f5b125b-f664-44bf-910f-751591fe5769] -tempest.api.volume.test_volume_metadata.VolumesMetadataTest.test_update_show_volume_metadata_item[id-862261c5-8df4-475a-8c21-946e50e36a20] -tempest.api.volume.test_volume_metadata.VolumesMetadataTest.test_update_volume_metadata_item[id-862261c5-8df4-475a-8c21-946e50e36a20] -tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_create_get_delete_volume_metadata[id-6f5b125b-f664-44bf-910f-751591fe5769] -tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_crud_volume_metadata[id-6f5b125b-f664-44bf-910f-751591fe5769] -tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_update_volume_metadata_item[id-862261c5-8df4-475a-8c21-946e50e36a20] -tempest.api.volume.test_volumes_actions.VolumesActionsTest.test_reserve_unreserve_volume[id-92c4ef64-51b2-40c0-9f7e-4749fbaaba33] -tempest.api.volume.test_volumes_actions.VolumesActionsTest.test_volume_bootable[id-63e21b4c-0a0c-41f6-bfc3-7c2816815599] -tempest.api.volume.test_volumes_actions.VolumesActionsTest.test_volume_readonly_update[id-fff74e1e-5bd3-4b33-9ea9-24c103bc3f59] -tempest.api.volume.test_volumes_actions.VolumesActionsTest.test_volume_upload[id-d8f1ca95-3d5b-44a3-b8ca-909691c9532d] -tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_reserve_unreserve_volume[id-92c4ef64-51b2-40c0-9f7e-4749fbaaba33] -tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_bootable[id-63e21b4c-0a0c-41f6-bfc3-7c2816815599] -tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_readonly_update[id-fff74e1e-5bd3-4b33-9ea9-24c103bc3f59] -tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_upload[id-d8f1ca95-3d5b-44a3-b8ca-909691c9532d] -tempest.api.volume.test_volumes_get.VolumesGetTest.test_volume_create_get_update_delete[id-27fb0e9f-fb64-41dd-8bdb-1ffa762f0d51] -tempest.api.volume.test_volumes_get.VolumesGetTest.test_volume_create_get_update_delete_as_clone[id-3f591b4a-7dc6-444c-bd51-77469506b3a1] -tempest.api.volume.test_volumes_get.VolumesGetTest.test_volume_create_get_update_delete_from_image[id-54a01030-c7fc-447c-86ee-c1182beae638] -tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete[id-27fb0e9f-fb64-41dd-8bdb-1ffa762f0d51] -tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete_as_clone[id-3f591b4a-7dc6-444c-bd51-77469506b3a1] -tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete_from_image[id-54a01030-c7fc-447c-86ee-c1182beae638] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list[id-0b6ddd39-b948-471f-8038-4787978747c4] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_by_name[id-a28e8da4-0b56-472f-87a8-0f4d3f819c02] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_details_by_name[id-2de3a6d4-12aa-403b-a8f2-fdeb42a89623] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_details_pagination[id-e9138a2c-f67b-4796-8efa-635c196d01de] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_details_with_multiple_params[id-2a7064eb-b9c3-429b-b888-33928fc5edd3] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_pagination[id-af55e775-8e4b-4feb-8719-215c43b0238c] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_param_display_name_and_status[id-777c87c1-2fc4-4883-8b8e-5c0b951d1ec8] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_with_detail_param_display_name_and_status[id-856ab8ca-6009-4c37-b691-be1065528ad4] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_with_detail_param_metadata[id-1ca92d3c-4a8e-4b43-93f5-e4c7fb3b291d] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_with_details[id-adcbb5a7-5ad8-4b61-bd10-5380e111a877] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volume_list_with_param_metadata[id-b5ebea1b-0603-40a0-bb41-15fcd0a53214] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volumes_list_by_availability_zone[id-c0cfa863-3020-40d7-b587-e35f597d5d87] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volumes_list_by_status[id-39654e13-734c-4dab-95ce-7613bf8407ce] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volumes_list_details_by_availability_zone[id-e1b80d13-94f0-4ba2-a40e-386af29f8db1] -tempest.api.volume.test_volumes_list.VolumesListTestJSON.test_volumes_list_details_by_status[id-2943f712-71ec-482a-bf49-d5ca06216b9f] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list[id-0b6ddd39-b948-471f-8038-4787978747c4] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_by_name[id-a28e8da4-0b56-472f-87a8-0f4d3f819c02] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_by_name[id-2de3a6d4-12aa-403b-a8f2-fdeb42a89623] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_param_display_name_and_status[id-777c87c1-2fc4-4883-8b8e-5c0b951d1ec8] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_detail_param_display_name_and_status[id-856ab8ca-6009-4c37-b691-be1065528ad4] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_detail_param_metadata[id-1ca92d3c-4a8e-4b43-93f5-e4c7fb3b291d] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_details[id-adcbb5a7-5ad8-4b61-bd10-5380e111a877] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_param_metadata[id-b5ebea1b-0603-40a0-bb41-15fcd0a53214] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_by_availability_zone[id-c0cfa863-3020-40d7-b587-e35f597d5d87] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_by_status[id-39654e13-734c-4dab-95ce-7613bf8407ce] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_details_by_availability_zone[id-e1b80d13-94f0-4ba2-a40e-386af29f8db1] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_details_by_status[id-2943f712-71ec-482a-bf49-d5ca06216b9f] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_invalid_size[id-1ed83a8a-682d-4dfb-a30e-ee63ffd6c049] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_nonexistent_snapshot_id[id-0c36f6ae-4604-4017-b0a9-34fdc63096f9] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_nonexistent_source_volid[id-47c73e08-4be8-45bb-bfdf-0c4e79b88344] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_nonexistent_volume_type[id-10254ed8-3849-454e-862e-3ab8e6aa01d2] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_size_negative[id-8b472729-9eba-446e-a83b-916bdb34bef7] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_with_size_zero[id-41331caa-eaf4-4001-869d-bc18c1869360] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_create_volume_without_passing_size[id-9387686f-334f-4d31-a439-33494b9e2683] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_delete_invalid_volume_id[id-1f035827-7c32-4019-9240-b4ec2dbd9dfd] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_delete_volume_without_passing_volume_id[id-441a1550-5d44-4b30-af0f-a6d402f52026] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_get_invalid_volume_id[id-30799cfd-7ee4-446c-b66c-45b383ed211b] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_get_volume_without_passing_volume_id[id-c6c3db06-29ad-4e91-beb0-2ab195fe49e3] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_list_volumes_detail_with_invalid_status[id-ba94b27b-be3f-496c-a00e-0283b373fa75] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_list_volumes_detail_with_nonexistent_name[id-9ca17820-a0e7-4cbd-a7fa-f4468735e359] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_list_volumes_with_invalid_status[id-143b279b-7522-466b-81be-34a87d564a7c] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_list_volumes_with_nonexistent_name[id-0f4aa809-8c7b-418f-8fb3-84c7a5dfc52f] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_reserve_volume_with_negative_volume_status[id-449c4ed2-ecdd-47bb-98dc-072aeccf158c] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_reserve_volume_with_nonexistent_volume_id[id-ac6084c0-0546-45f9-b284-38a367e0e0e2] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_unreserve_volume_with_nonexistent_volume_id[id-eb467654-3dc1-4a72-9b46-47c29d22654c] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_update_volume_with_empty_volume_id[id-72aeca85-57a5-4c1f-9057-f320f9ea575b] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_update_volume_with_invalid_volume_id[id-e66e40d6-65e6-4e75-bdc7-636792fa152d] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_update_volume_with_nonexistent_volume_id[id-0186422c-999a-480e-a026-6a665744c30c] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_volume_delete_nonexistent_volume_id[id-555efa6e-efcd-44ef-8a3b-4a7ca4837a29] -tempest.api.volume.test_volumes_negative.VolumesNegativeTest.test_volume_get_nonexistent_volume_id[id-f131c586-9448-44a4-a8b0-54ca838aa43e] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_invalid_size[id-1ed83a8a-682d-4dfb-a30e-ee63ffd6c049] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_snapshot_id[id-0c36f6ae-4604-4017-b0a9-34fdc63096f9] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_source_volid[id-47c73e08-4be8-45bb-bfdf-0c4e79b88344] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_volume_type[id-10254ed8-3849-454e-862e-3ab8e6aa01d2] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_out_passing_size[id-9387686f-334f-4d31-a439-33494b9e2683] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_negative[id-8b472729-9eba-446e-a83b-916bdb34bef7] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_zero[id-41331caa-eaf4-4001-869d-bc18c1869360] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_without_passing_size[id-9387686f-334f-4d31-a439-33494b9e2683] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_delete_invalid_volume_id[id-1f035827-7c32-4019-9240-b4ec2dbd9dfd] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_delete_volume_without_passing_volume_id[id-441a1550-5d44-4b30-af0f-a6d402f52026] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_invalid_volume_id[id-30799cfd-7ee4-446c-b66c-45b383ed211b] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_volume_without_passing_volume_id[id-c6c3db06-29ad-4e91-beb0-2ab195fe49e3] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_detail_with_invalid_status[id-ba94b27b-be3f-496c-a00e-0283b373fa75] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_detail_with_nonexistent_name[id-9ca17820-a0e7-4cbd-a7fa-f4468735e359] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_with_invalid_status[id-143b279b-7522-466b-81be-34a87d564a7c] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_with_nonexistent_name[id-0f4aa809-8c7b-418f-8fb3-84c7a5dfc52f] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_reserve_volume_with_negative_volume_status[id-449c4ed2-ecdd-47bb-98dc-072aeccf158c] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_reserve_volume_with_nonexistent_volume_id[id-ac6084c0-0546-45f9-b284-38a367e0e0e2] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_unreserve_volume_with_nonexistent_volume_id[id-eb467654-3dc1-4a72-9b46-47c29d22654c] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_empty_volume_id[id-72aeca85-57a5-4c1f-9057-f320f9ea575b] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_invalid_volume_id[id-e66e40d6-65e6-4e75-bdc7-636792fa152d] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_nonexistent_volume_id[id-0186422c-999a-480e-a026-6a665744c30c] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_volume_delete_nonexistent_volume_id[id-555efa6e-efcd-44ef-8a3b-4a7ca4837a29] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_volume_get_nonexistent_volume_id[id-f131c586-9448-44a4-a8b0-54ca838aa43e] -tempest.api.volume.test_volumes_snapshots.VolumesSnapshotTestJSON.test_snapshot_create_get_list_update_delete[id-2a8abbe4-d871-46db-b049-c41f5af8216e] -tempest.api.volume.test_volumes_snapshots.VolumesSnapshotTestJSON.test_volume_from_snapshot[id-677863d1-3142-456d-b6ac-9924f667a7f4] -tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshot_create_get_list_update_delete[id-2a8abbe4-d871-46db-b049-c41f5af8216e] -tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshots_list_details_with_params[id-220a1022-1fcd-4a74-a7bd-6b859156cda2] -tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshots_list_with_params[id-59f41f43-aebf-48a9-ab5d-d76340fab32b] -tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_volume_from_snapshot[id-677863d1-3142-456d-b6ac-9924f667a7f4] -tempest.api.volume.test_volumes_snapshots_list.VolumesSnapshotListTestJSON.test_snapshots_list_details_with_params[id-220a1022-1fcd-4a74-a7bd-6b859156cda2] -tempest.api.volume.test_volumes_snapshots_list.VolumesSnapshotListTestJSON.test_snapshots_list_with_params[id-59f41f43-aebf-48a9-ab5d-d76340fab32b] -tempest.api.volume.test_volumes_snapshots_list.VolumesV2SnapshotListTestJSON.test_snapshots_list_details_with_params[id-220a1022-1fcd-4a74-a7bd-6b859156cda2] -tempest.api.volume.test_volumes_snapshots_list.VolumesV2SnapshotListTestJSON.test_snapshots_list_with_params[id-59f41f43-aebf-48a9-ab5d-d76340fab32b] -tempest.api.volume.test_volumes_snapshots_negative.VolumesSnapshotNegativeTestJSON.test_create_snapshot_with_nonexistent_volume_id[id-e3e466af-70ab-4f4b-a967-ab04e3532ea7] -tempest.api.volume.test_volumes_snapshots_negative.VolumesSnapshotNegativeTestJSON.test_create_snapshot_without_passing_volume_id[id-bb9da53e-d335-4309-9c15-7e76fd5e4d6d] -tempest.api.volume.test_volumes_snapshots_negative.VolumesV2SnapshotNegativeTestJSON.test_create_snapshot_with_nonexistent_volume_id[id-e3e466af-70ab-4f4b-a967-ab04e3532ea7] -tempest.api.volume.test_volumes_snapshots_negative.VolumesV2SnapshotNegativeTestJSON.test_create_snapshot_without_passing_volume_id[id-bb9da53e-d335-4309-9c15-7e76fd5e4d6d] -tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_pagination[id-e9138a2c-f67b-4796-8efa-635c196d01de] -tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_with_multiple_params[id-2a7064eb-b9c3-429b-b888-33928fc5edd3] -tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_pagination[id-af55e775-8e4b-4feb-8719-215c43b0238c] diff --git a/functest/opnfv_tests/openstack/refstack_client/refstack_client.py b/functest/opnfv_tests/openstack/refstack_client/refstack_client.py deleted file mode 100644 index fe32da66b..000000000 --- a/functest/opnfv_tests/openstack/refstack_client/refstack_client.py +++ /dev/null @@ -1,261 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 - -"""Refstack client testcase implemenation.""" - -from __future__ import division - -import argparse -import logging -import os -import re -import sys -import subprocess -import time - -import pkg_resources - -from functest.core import testcase -from functest.energy import energy -from functest.opnfv_tests.openstack.refstack_client.tempest_conf \ - import TempestConf -from functest.opnfv_tests.openstack.tempest import conf_utils -from functest.utils.constants import CONST -import functest.utils.functest_utils as ft_utils - -__author__ = ("Matthew Li <matthew.lijun@huawei.com>," - "Linda Wang <wangwulin@huawei.com>") - -# logging configuration """ -LOGGER = logging.getLogger(__name__) - - -class RefstackClient(testcase.TestCase): - """RefstackClient testcase implementation class.""" - - def __init__(self, **kwargs): - """Initialize RefstackClient testcase object.""" - if "case_name" not in kwargs: - kwargs["case_name"] = "refstack_defcore" - super(RefstackClient, self).__init__(**kwargs) - self.tempestconf = None - self.conf_path = pkg_resources.resource_filename( - 'functest', - 'opnfv_tests/openstack/refstack_client/refstack_tempest.conf') - self.functest_test = pkg_resources.resource_filename( - 'functest', 'opnfv_tests') - self.defcore_list = 'openstack/refstack_client/defcore.txt' - self.confpath = os.path.join(self.functest_test, - self.conf_path) - self.defcorelist = pkg_resources.resource_filename( - 'functest', 'opnfv_tests/openstack/refstack_client/defcore.txt') - self.testlist = None - self.insecure = '' - if ('https' in CONST.__getattribute__('OS_AUTH_URL') and - CONST.__getattribute__('OS_INSECURE').lower() == 'true'): - self.insecure = '-k' - - def generate_conf(self): - if not os.path.exists(conf_utils.REFSTACK_RESULTS_DIR): - os.makedirs(conf_utils.REFSTACK_RESULTS_DIR) - - self.tempestconf = TempestConf() - self.tempestconf.generate_tempestconf() - - def run_defcore(self, conf, testlist): - """Run defcore sys command.""" - cmd = ("refstack-client test {0} -c {1} -v --test-list {2}" - .format(self.insecure, conf, testlist)) - LOGGER.info("Starting Refstack_defcore test case: '%s'.", cmd) - ft_utils.execute_command(cmd) - - def run_defcore_default(self): - """Run default defcore sys command.""" - options = ["-v"] if not self.insecure else ["-v", self.insecure] - cmd = (["refstack-client", "test", "-c", self.confpath] + - options + ["--test-list", self.defcorelist]) - LOGGER.info("Starting Refstack_defcore test case: '%s'.", cmd) - - with open(os.path.join(conf_utils.REFSTACK_RESULTS_DIR, - "environment.log"), 'w+') as f_env: - f_env.write( - ("Refstack environment:\n" - " SUT: {}\n Scenario: {}\n Node: {}\n Date: {}\n").format( - CONST.__getattribute__('INSTALLER_TYPE'), - CONST.__getattribute__('DEPLOY_SCENARIO'), - CONST.__getattribute__('NODE_NAME'), - time.strftime("%a %b %d %H:%M:%S %Z %Y"))) - - with open(os.path.join(conf_utils.REFSTACK_RESULTS_DIR, - "refstack.log"), 'w+') as f_stdout: - subprocess.call(cmd, shell=False, stdout=f_stdout, - stderr=subprocess.STDOUT) - - def parse_refstack_result(self): - """Parse Refstack results.""" - try: - with open(os.path.join(conf_utils.REFSTACK_RESULTS_DIR, - "refstack.log"), 'r') as logfile: - for line in logfile.readlines(): - if 'Tests' in line: - break - if re.search(r"\} tempest\.", line): - LOGGER.info(line.replace('\n', '')) - - with open(os.path.join(conf_utils.REFSTACK_RESULTS_DIR, - "refstack.log"), 'r') as logfile: - output = logfile.read() - - for match in re.findall(r"Ran: (\d+) tests in (\d+\.\d{4}) sec.", - output): - num_tests = match[0] - LOGGER.info("Ran: %s tests in %s sec.", num_tests, match[1]) - for match in re.findall(r"(- Passed: )(\d+)", output): - num_success = match[1] - LOGGER.info("".join(match)) - for match in re.findall(r"(- Skipped: )(\d+)", output): - num_skipped = match[1] - LOGGER.info("".join(match)) - for match in re.findall(r"(- Failed: )(\d+)", output): - num_failures = match[1] - LOGGER.info("".join(match)) - success_testcases = [] - for match in re.findall(r"\{0\} (.*?) \.{3} ok", output): - success_testcases.append(match) - failed_testcases = [] - for match in re.findall(r"\{0\} (.*?) \.{3} FAILED", output): - failed_testcases.append(match) - skipped_testcases = [] - for match in re.findall(r"\{0\} (.*?) \.{3} SKIPPED:", output): - skipped_testcases.append(match) - - num_executed = int(num_tests) - int(num_skipped) - - try: - self.result = 100 * int(num_success) / int(num_executed) - except ZeroDivisionError: - LOGGER.error("No test has been executed") - - self.details = {"tests": int(num_tests), - "failures": int(num_failures), - "success": success_testcases, - "errors": failed_testcases, - "skipped": skipped_testcases} - except Exception: - self.result = 0 - - LOGGER.info("Testcase %s success_rate is %s%%", - self.case_name, self.result) - - @energy.enable_recording - def run(self, **kwargs): - """ - Start RefstackClient testcase. - - used for functest command line, - functest testcase run refstack_defcore - """ - self.start_time = time.time() - - try: - # Make sure that Tempest is configured - if not self.tempestconf: - self.generate_conf() - self.run_defcore_default() - self.parse_refstack_result() - res = testcase.TestCase.EX_OK - except Exception: - LOGGER.exception("Error with run") - res = testcase.TestCase.EX_RUN_ERROR - finally: - self.tempestconf.clean() - - self.stop_time = time.time() - return res - - def _prep_test(self): - """Check that the config file exists.""" - if not os.path.isfile(self.confpath): - LOGGER.error("Conf file not valid: %s", self.confpath) - if not os.path.isfile(self.testlist): - LOGGER.error("testlist file not valid: %s", self.testlist) - - def main(self, **kwargs): - """ - Execute RefstackClient testcase manually. - - used for manually running, - python refstack_client.py -c <tempest_conf_path> - --testlist <testlist_path> - can generate a reference refstack_tempest.conf by - python tempest_conf.py - """ - try: - self.confpath = kwargs['config'] - self.testlist = kwargs['testlist'] - except KeyError as exc: - LOGGER.error("Cannot run refstack client. Please check " - "%s", exc) - return self.EX_RUN_ERROR - try: - self._prep_test() - self.run_defcore(self.confpath, self.testlist) - res = testcase.TestCase.EX_OK - except Exception as exc: - LOGGER.error('Error with run: %s', exc) - res = testcase.TestCase.EX_RUN_ERROR - - return res - - -class RefstackClientParser(object): # pylint: disable=too-few-public-methods - """Command line argument parser helper.""" - - def __init__(self): - """Initialize helper object.""" - self.functest_test = pkg_resources.resource_filename( - 'functest', 'opnfv_tests') - self.conf_path = pkg_resources.resource_filename( - 'functest', - 'opnfv_tests/openstack/refstack_client/refstack_tempest.conf') - self.defcore_list = pkg_resources.resource_filename( - 'functest', 'opnfv_tests/openstack/refstack_client/defcore.txt') - self.confpath = os.path.join(self.functest_test, - self.conf_path) - self.defcorelist = os.path.join(self.functest_test, - self.defcore_list) - self.parser = argparse.ArgumentParser() - self.parser.add_argument( - '-c', '--config', - help='the file path of refstack_tempest.conf', - default=self.confpath) - self.parser.add_argument( - '-t', '--testlist', - help='Specify the file path or URL of a test list text file. ' - 'This test list will contain specific test cases that ' - 'should be tested.', - default=self.defcorelist) - - def parse_args(self, argv=None): - """Parse command line arguments.""" - return vars(self.parser.parse_args(argv)) - - -def main(): - """Run RefstackClient testcase with CLI.""" - logging.basicConfig() - refstackclient = RefstackClient() - parser = RefstackClientParser() - args = parser.parse_args(sys.argv[1:]) - try: - result = refstackclient.main(**args) - if result != testcase.TestCase.EX_OK: - return result - except Exception: - return testcase.TestCase.EX_RUN_ERROR diff --git a/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py b/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py deleted file mode 100644 index db7452271..000000000 --- a/functest/opnfv_tests/openstack/refstack_client/tempest_conf.py +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env python - -# matthew.lijun@huawei.com -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -import logging -import pkg_resources - -from functest.opnfv_tests.openstack.tempest import conf_utils -from functest.utils import openstack_utils -from functest.utils.constants import CONST -from functest.opnfv_tests.openstack.tempest.tempest \ - import TempestResourcesManager - -""" logging configuration """ -logger = logging.getLogger(__name__) - - -class TempestConf(object): - def __init__(self, **kwargs): - self.VERIFIER_ID = conf_utils.get_verifier_id() - self.VERIFIER_REPO_DIR = conf_utils.get_verifier_repo_dir( - self.VERIFIER_ID) - self.DEPLOYMENT_ID = conf_utils.get_verifier_deployment_id() - self.DEPLOYMENT_DIR = conf_utils.get_verifier_deployment_dir( - self.VERIFIER_ID, self.DEPLOYMENT_ID) - self.confpath = pkg_resources.resource_filename( - 'functest', - 'opnfv_tests/openstack/refstack_client/refstack_tempest.conf') - self.resources = TempestResourcesManager(**kwargs) - - def generate_tempestconf(self): - try: - openstack_utils.source_credentials( - CONST.__getattribute__('openstack_creds')) - resources = self.resources.create(create_project=True, - use_custom_images=True, - use_custom_flavors=True) - conf_utils.configure_tempest_defcore( - self.DEPLOYMENT_DIR, - image_id=resources.get("image_id"), - flavor_id=resources.get("flavor_id"), - image_id_alt=resources.get("image_id_alt"), - flavor_id_alt=resources.get("flavor_id_alt"), - tenant_id=resources.get("project_id")) - except Exception as e: - logger.error("error with generating refstack client " - "reference tempest conf file: %s", e) - - def main(self): - try: - self.generate_tempestconf() - logger.info("a reference tempest conf file generated " - "at %s", self.confpath) - except Exception as e: - logger.error('Error with run: %s', e) - - def clean(self): - self.resources.cleanup() - - -def main(): - logging.basicConfig() - tempestconf = TempestConf() - tempestconf.main() diff --git a/functest/opnfv_tests/openstack/shaker/__init__.py b/functest/opnfv_tests/openstack/shaker/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/functest/opnfv_tests/openstack/shaker/__init__.py diff --git a/functest/opnfv_tests/openstack/shaker/shaker.py b/functest/opnfv_tests/openstack/shaker/shaker.py new file mode 100644 index 000000000..275cc3077 --- /dev/null +++ b/functest/opnfv_tests/openstack/shaker/shaker.py @@ -0,0 +1,147 @@ +#!/usr/bin/env python + +# Copyright (c) 2018 Orange and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +""" +Shaker_ wraps around popular system network testing tools like iperf, iperf3 +and netperf (with help of flent). Shaker is able to deploy OpenStack instances +and networks in different topologies. Shaker scenario specifies the deployment +and list of tests to execute. + +.. _Shaker: http://pyshaker.readthedocs.io/en/latest/ +""" + +import logging +import os + +import json +import scp + +from functest.core import singlevm +from functest.utils import env + + +class Shaker(singlevm.SingleVm2): + """Run shaker full+perf l2 and l3""" + # pylint: disable=too-many-instance-attributes + + __logger = logging.getLogger(__name__) + + filename = '/home/opnfv/functest/images/shaker-image-1.3.4+stretch.qcow2' + flavor_ram = 512 + flavor_vcpus = 1 + flavor_disk = 3 + username = 'debian' + port = 9000 + ssh_connect_loops = 12 + create_server_timeout = 300 + check_console_loop = 12 + shaker_timeout = '3600' + quota_instances = -1 + quota_cores = -1 + check_console_loop = 12 + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.role = None + + def check_requirements(self): + if self.count_hypervisors() < 2: + self.__logger.warning("Shaker requires at least 2 hypervisors") + self.is_skipped = True + self.project.clean() + + def prepare(self): + super().prepare() + self.cloud.create_security_group_rule( + self.sec.id, port_range_min=self.port, port_range_max=self.port, + protocol='tcp', direction='ingress') + + def execute(self): + """ + Returns: + - 0 if success + - 1 on operation error + """ + assert self.ssh + endpoint = self.get_public_auth_url(self.orig_cloud) + self.__logger.debug("keystone endpoint: %s", endpoint) + if self.orig_cloud.get_role("admin"): + role_name = "admin" + elif self.orig_cloud.get_role("Admin"): + role_name = "Admin" + else: + raise Exception("Cannot detect neither admin nor Admin") + self.orig_cloud.grant_role( + role_name, user=self.project.user.id, + project=self.project.project.id, + domain=self.project.domain.id) + if not self.orig_cloud.get_role("heat_stack_owner"): + self.role = self.orig_cloud.create_role("heat_stack_owner") + self.orig_cloud.grant_role( + "heat_stack_owner", user=self.project.user.id, + project=self.project.project.id, + domain=self.project.domain.id) + self.orig_cloud.set_compute_quotas( + self.project.project.name, + instances=self.quota_instances, + cores=self.quota_cores) + scpc = scp.SCPClient(self.ssh.get_transport()) + scpc.put('/home/opnfv/functest/conf/env_file', remote_path='~/') + if os.environ.get('OS_CACERT'): + scpc.put(os.environ.get('OS_CACERT'), remote_path='~/os_cacert') + opt = 'export OS_CACERT=~/os_cacert && ' if os.environ.get( + 'OS_CACERT') else '' + (_, stdout, stderr) = self.ssh.exec_command( + 'source ~/env_file && ' + 'export OS_INTERFACE=public && ' + f'export OS_AUTH_URL={endpoint} && ' + f'export OS_USERNAME={self.project.user.name} && ' + f'export OS_PROJECT_NAME={self.project.project.name} && ' + f'export OS_PROJECT_ID={self.project.project.id} && ' + 'unset OS_TENANT_NAME && ' + 'unset OS_TENANT_ID && ' + 'unset OS_ENDPOINT_TYPE && ' + f'export OS_PASSWORD="{self.project.password}" && ' + f'{opt}' + 'env && ' + f'timeout {self.shaker_timeout} shaker --debug ' + f'--image-name {self.image.name} --flavor-name {self.flavor.name} ' + f'--server-endpoint {self.fip.floating_ip_address}:9000 ' + f'--external-net {self.ext_net.id} ' + f"--dns-nameservers {env.get('NAMESERVER')} " + '--scenario openstack/full_l2,' + 'openstack/full_l3_east_west,' + 'openstack/full_l3_north_south,' + 'openstack/perf_l3_north_south ' + '--report report.html --output report.json') + self.__logger.info("output:\n%s", stdout.read().decode("utf-8")) + self.__logger.info("error:\n%s", stderr.read().decode("utf-8")) + if not os.path.exists(self.res_dir): + os.makedirs(self.res_dir) + try: + scpc.get('report.json', self.res_dir) + scpc.get('report.html', self.res_dir) + except scp.SCPException: + self.__logger.exception("cannot get report files") + return 1 + with open( + os.path.join(self.res_dir, 'report.json'), + encoding='utf-8') as json_file: + data = json.load(json_file) + for value in data["records"].values(): + if value["status"] != "ok": + self.__logger.error( + "%s failed\n%s", value["scenario"], value["stderr"]) + return 1 + return stdout.channel.recv_exit_status() + + def clean(self): + super().clean() + if self.role: + self.orig_cloud.delete_role(self.role.id) diff --git a/functest/opnfv_tests/openstack/snaps/api_check.py b/functest/opnfv_tests/openstack/snaps/api_check.py deleted file mode 100644 index e708b4dec..000000000 --- a/functest/opnfv_tests/openstack/snaps/api_check.py +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (c) 2017 Cable Television Laboratories, Inc. and others. -# -# This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# -# http://www.apache.org/licenses/LICENSE-2.0 - -import unittest - -from functest.opnfv_tests.openstack.snaps import snaps_suite_builder -from functest.opnfv_tests.openstack.snaps.snaps_test_runner import \ - SnapsTestRunner - - -class ApiCheck(SnapsTestRunner): - """ - This test executes the Python Tests included with the SNAPS libraries - that exercise many of the OpenStack APIs within Keystone, Glance, Neutron, - and Nova - """ - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = "api_check" - super(ApiCheck, self).__init__(**kwargs) - - self.suite = unittest.TestSuite() - - def run(self, **kwargs): - """ - Builds the test suite then calls super.run() - :param kwargs: the arguments to pass on - :return: - """ - snaps_suite_builder.add_openstack_api_tests( - suite=self.suite, - os_creds=self.os_creds, - ext_net_name=self.ext_net_name, - use_keystone=self.use_keystone, - image_metadata=self.image_metadata) - return super(self.__class__, self).run() diff --git a/functest/opnfv_tests/openstack/snaps/connection_check.py b/functest/opnfv_tests/openstack/snaps/connection_check.py deleted file mode 100644 index 1fc49349e..000000000 --- a/functest/opnfv_tests/openstack/snaps/connection_check.py +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright (c) 2017 Cable Television Laboratories, Inc. and others. -# -# This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# -# http://www.apache.org/licenses/LICENSE-2.0 - -import unittest - -from functest.opnfv_tests.openstack.snaps import snaps_suite_builder -from functest.opnfv_tests.openstack.snaps.snaps_test_runner import \ - SnapsTestRunner - - -class ConnectionCheck(SnapsTestRunner): - """ - This test executes the Python Tests included with the SNAPS libraries - that simply obtain the different OpenStack clients and may perform - simple queries - """ - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = "connection_check" - super(ConnectionCheck, self).__init__(**kwargs) - - self.suite = unittest.TestSuite() - - def run(self, **kwargs): - """ - Builds the test suite then calls super.run() - :param kwargs: the arguments to pass on - :return: - """ - snaps_suite_builder.add_openstack_client_tests( - suite=self.suite, - os_creds=self.os_creds, - ext_net_name=self.ext_net_name, - use_keystone=self.use_keystone) - return super(self.__class__, self).run() diff --git a/functest/opnfv_tests/openstack/snaps/health_check.py b/functest/opnfv_tests/openstack/snaps/health_check.py deleted file mode 100644 index 837c2eae7..000000000 --- a/functest/opnfv_tests/openstack/snaps/health_check.py +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright (c) 2017 Cable Television Laboratories, Inc. and others. -# -# This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# -# http://www.apache.org/licenses/LICENSE-2.0 - -import unittest - -from functest.opnfv_tests.openstack.snaps.snaps_test_runner import ( - SnapsTestRunner) - -from snaps.openstack.tests.os_source_file_test import OSIntegrationTestCase -from snaps.openstack.tests.create_instance_tests import SimpleHealthCheck - - -class HealthCheck(SnapsTestRunner): - """ - This test executes the SNAPS Python Test case SimpleHealthCheck which - creates a VM with a single port with an IPv4 address that is assigned by - DHCP. This test then validates the expected IP with the actual - """ - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = "snaps_images_cirros" - super(HealthCheck, self).__init__(**kwargs) - - self.suite = unittest.TestSuite() - - def run(self, **kwargs): - """ - Builds the test suite then calls super.run() - :param kwargs: the arguments to pass on - :return: - """ - self.suite.addTest( - OSIntegrationTestCase.parameterize( - SimpleHealthCheck, os_creds=self.os_creds, - ext_net_name=self.ext_net_name, - use_keystone=self.use_keystone, - flavor_metadata=self.flavor_metadata, - image_metadata=self.image_metadata, - netconf_override=self.netconf_override)) - return super(self.__class__, self).run() diff --git a/functest/opnfv_tests/openstack/snaps/smoke.py b/functest/opnfv_tests/openstack/snaps/smoke.py deleted file mode 100644 index ded149d0c..000000000 --- a/functest/opnfv_tests/openstack/snaps/smoke.py +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (c) 2017 Cable Television Laboratories, Inc. and others. -# -# This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# -# http://www.apache.org/licenses/LICENSE-2.0 - -import unittest - -from functest.opnfv_tests.openstack.snaps import snaps_suite_builder -from functest.opnfv_tests.openstack.snaps.snaps_test_runner import ( - SnapsTestRunner) - - -class SnapsSmoke(SnapsTestRunner): - """ - This test executes the Python Tests included with the SNAPS libraries - that exercise many of the OpenStack APIs within Keystone, Glance, Neutron, - and Nova - """ - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = "snaps_smoke" - super(SnapsSmoke, self).__init__(**kwargs) - - self.suite = unittest.TestSuite() - - def run(self, **kwargs): - """ - Builds the test suite then calls super.run() - :param kwargs: the arguments to pass on - :return: - """ - snaps_suite_builder.add_openstack_integration_tests( - suite=self.suite, - os_creds=self.os_creds, - ext_net_name=self.ext_net_name, - use_keystone=self.use_keystone, - flavor_metadata=self.flavor_metadata, - image_metadata=self.image_metadata, - use_floating_ips=self.use_fip, - netconf_override=self.netconf_override) - return super(self.__class__, self).run() diff --git a/functest/opnfv_tests/openstack/snaps/snaps_suite_builder.py b/functest/opnfv_tests/openstack/snaps/snaps_suite_builder.py deleted file mode 100644 index 3e7c0a39f..000000000 --- a/functest/opnfv_tests/openstack/snaps/snaps_suite_builder.py +++ /dev/null @@ -1,433 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2017 Cable Television Laboratories, Inc. and others. -# -# This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# -# http://www.apache.org/licenses/LICENSE-2.0 - -import logging - -from snaps.openstack.tests.create_flavor_tests import ( - CreateFlavorTests) -from snaps.openstack.tests.create_image_tests import ( - CreateImageSuccessTests, CreateImageNegativeTests, - CreateMultiPartImageTests) -from snaps.openstack.tests.create_instance_tests import ( - CreateInstanceSingleNetworkTests, CreateInstanceOnComputeHost, - CreateInstanceSimpleTests, InstanceSecurityGroupTests, - CreateInstancePortManipulationTests, SimpleHealthCheck, - CreateInstanceFromThreePartImage, CreateInstanceTwoNetTests, - CreateInstanceVolumeTests) -from snaps.openstack.tests.create_keypairs_tests import ( - CreateKeypairsTests, CreateKeypairsCleanupTests) -from snaps.openstack.tests.create_network_tests import ( - CreateNetworkSuccessTests) -from snaps.openstack.tests.create_project_tests import ( - CreateProjectSuccessTests, CreateProjectUserTests) -from snaps.openstack.tests.create_qos_tests import ( - CreateQoSTests) -from snaps.openstack.tests.create_router_tests import ( - CreateRouterSuccessTests, CreateRouterNegativeTests) -from snaps.openstack.tests.create_security_group_tests import ( - CreateSecurityGroupTests) -from snaps.openstack.tests.create_stack_tests import ( - CreateStackSuccessTests, CreateStackNegativeTests, - CreateStackFlavorTests, CreateStackFloatingIpTests, - CreateStackKeypairTests, CreateStackVolumeTests, - CreateStackSecurityGroupTests) -from snaps.openstack.tests.create_user_tests import ( - CreateUserSuccessTests) -from snaps.openstack.tests.create_volume_tests import ( - CreateSimpleVolumeSuccessTests, - CreateVolumeWithTypeTests, CreateVolumeWithImageTests, - CreateSimpleVolumeFailureTests) -from snaps.openstack.tests.create_volume_type_tests import ( - CreateSimpleVolumeTypeSuccessTests, - CreateVolumeTypeComplexTests) -from snaps.openstack.tests.os_source_file_test import ( - OSComponentTestCase, OSIntegrationTestCase) -from snaps.openstack.utils.tests.cinder_utils_tests import ( - CinderSmokeTests, CinderUtilsQoSTests, CinderUtilsSimpleVolumeTypeTests, - CinderUtilsAddEncryptionTests, CinderUtilsVolumeTypeCompleteTests, - CinderUtilsVolumeTests) -from snaps.openstack.utils.tests.glance_utils_tests import ( - GlanceSmokeTests, GlanceUtilsTests) -from snaps.openstack.utils.tests.heat_utils_tests import ( - HeatSmokeTests, HeatUtilsCreateSimpleStackTests, - HeatUtilsCreateComplexStackTests, HeatUtilsFlavorTests, - HeatUtilsKeypairTests, HeatUtilsSecurityGroupTests) -from snaps.openstack.utils.tests.keystone_utils_tests import ( - KeystoneSmokeTests, KeystoneUtilsTests) -from snaps.openstack.utils.tests.neutron_utils_tests import ( - NeutronSmokeTests, NeutronUtilsNetworkTests, NeutronUtilsSubnetTests, - NeutronUtilsRouterTests, NeutronUtilsSecurityGroupTests, - NeutronUtilsFloatingIpTests) -from snaps.openstack.utils.tests.nova_utils_tests import ( - NovaSmokeTests, NovaUtilsKeypairTests, NovaUtilsFlavorTests, - NovaUtilsInstanceTests, NovaUtilsInstanceVolumeTests) -from snaps.provisioning.tests.ansible_utils_tests import ( - AnsibleProvisioningTests) - - -def add_openstack_client_tests(suite, os_creds, ext_net_name, - use_keystone=True, log_level=logging.INFO): - """ - Adds tests written to exercise OpenStack client retrieval - :param suite: the unittest.TestSuite object to which to add the tests - :param os_creds: and instance of OSCreds that holds the credentials - required by OpenStack - :param ext_net_name: the name of an external network on the cloud under - test - :param use_keystone: when True, tests requiring direct access to Keystone - are added as these need to be running on a host that - has access to the cloud's private network - :param log_level: the logging level - :return: None as the tests will be adding to the 'suite' parameter object - """ - # Basic connection tests - suite.addTest( - OSComponentTestCase.parameterize( - GlanceSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name, - log_level=log_level)) - - if use_keystone: - suite.addTest( - OSComponentTestCase.parameterize( - KeystoneSmokeTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level)) - - suite.addTest( - OSComponentTestCase.parameterize( - NeutronSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name, - log_level=log_level)) - suite.addTest( - OSComponentTestCase.parameterize( - NovaSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name, - log_level=log_level)) - suite.addTest( - OSComponentTestCase.parameterize( - HeatSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name, - log_level=log_level)) - suite.addTest( - OSComponentTestCase.parameterize( - CinderSmokeTests, os_creds=os_creds, ext_net_name=ext_net_name, - log_level=log_level)) - - -def add_openstack_api_tests(suite, os_creds, ext_net_name, use_keystone=True, - image_metadata=None, log_level=logging.INFO): - """ - Adds tests written to exercise all existing OpenStack APIs - :param suite: the unittest.TestSuite object to which to add the tests - :param os_creds: Instance of OSCreds that holds the credentials - required by OpenStack - :param ext_net_name: the name of an external network on the cloud under - test - :param use_keystone: when True, tests requiring direct access to Keystone - are added as these need to be running on a host that - has access to the cloud's private network - :param image_metadata: dict() object containing metadata for creating an - image with custom config - (see YAML files in examples/image-metadata) - :param log_level: the logging level - :return: None as the tests will be adding to the 'suite' parameter object - """ - # Tests the OpenStack API calls - if use_keystone: - suite.addTest(OSComponentTestCase.parameterize( - KeystoneUtilsTests, os_creds=os_creds, ext_net_name=ext_net_name, - log_level=log_level)) - suite.addTest(OSComponentTestCase.parameterize( - CreateUserSuccessTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level)) - suite.addTest(OSComponentTestCase.parameterize( - CreateProjectSuccessTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level)) - suite.addTest(OSComponentTestCase.parameterize( - CreateProjectUserTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level)) - - suite.addTest(OSComponentTestCase.parameterize( - GlanceUtilsTests, os_creds=os_creds, ext_net_name=ext_net_name, - image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSComponentTestCase.parameterize( - NeutronUtilsNetworkTests, os_creds=os_creds, ext_net_name=ext_net_name, - log_level=log_level)) - suite.addTest(OSComponentTestCase.parameterize( - NeutronUtilsSubnetTests, os_creds=os_creds, ext_net_name=ext_net_name, - log_level=log_level)) - suite.addTest(OSComponentTestCase.parameterize( - NeutronUtilsRouterTests, os_creds=os_creds, ext_net_name=ext_net_name, - log_level=log_level)) - suite.addTest(OSComponentTestCase.parameterize( - NeutronUtilsSecurityGroupTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level)) - suite.addTest(OSComponentTestCase.parameterize( - NeutronUtilsFloatingIpTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level)) - suite.addTest(OSComponentTestCase.parameterize( - NovaUtilsKeypairTests, os_creds=os_creds, ext_net_name=ext_net_name, - log_level=log_level)) - suite.addTest(OSComponentTestCase.parameterize( - NovaUtilsFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name, - log_level=log_level)) - suite.addTest(OSComponentTestCase.parameterize( - NovaUtilsInstanceTests, os_creds=os_creds, ext_net_name=ext_net_name, - log_level=log_level, image_metadata=image_metadata)) - suite.addTest(OSComponentTestCase.parameterize( - NovaUtilsInstanceVolumeTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level, - image_metadata=image_metadata)) - suite.addTest(OSComponentTestCase.parameterize( - CreateFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name, - log_level=log_level)) - suite.addTest(OSComponentTestCase.parameterize( - HeatUtilsCreateSimpleStackTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level, - image_metadata=image_metadata)) - suite.addTest(OSComponentTestCase.parameterize( - HeatUtilsCreateComplexStackTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level, - image_metadata=image_metadata)) - suite.addTest(OSComponentTestCase.parameterize( - HeatUtilsFlavorTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level, - image_metadata=image_metadata)) - suite.addTest(OSComponentTestCase.parameterize( - HeatUtilsKeypairTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level, - image_metadata=image_metadata)) - suite.addTest(OSComponentTestCase.parameterize( - HeatUtilsSecurityGroupTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level, - image_metadata=image_metadata)) - suite.addTest(OSComponentTestCase.parameterize( - CinderUtilsQoSTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level, - image_metadata=image_metadata)) - suite.addTest(OSComponentTestCase.parameterize( - CinderUtilsVolumeTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level, - image_metadata=image_metadata)) - suite.addTest(OSComponentTestCase.parameterize( - CinderUtilsSimpleVolumeTypeTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level, - image_metadata=image_metadata)) - suite.addTest(OSComponentTestCase.parameterize( - CinderUtilsAddEncryptionTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level, - image_metadata=image_metadata)) - suite.addTest(OSComponentTestCase.parameterize( - CinderUtilsVolumeTypeCompleteTests, os_creds=os_creds, - ext_net_name=ext_net_name, log_level=log_level, - image_metadata=image_metadata)) - - -def add_openstack_integration_tests(suite, os_creds, ext_net_name, - use_keystone=True, flavor_metadata=None, - image_metadata=None, use_floating_ips=True, - netconf_override=None, - log_level=logging.INFO): - """ - Adds tests written to exercise all long-running OpenStack integration tests - meaning they will be creating VM instances and potentially performing some - SSH functions through floatingIPs - :param suite: the unittest.TestSuite object to which to add the tests - :param os_creds: and instance of OSCreds that holds the credentials - required by OpenStack - :param ext_net_name: the name of an external network on the cloud under - test - :param use_keystone: when True, tests requiring direct access to Keystone - are added as these need to be running on a host that - has access to the cloud's private network - :param image_metadata: dict() object containing metadata for creating an - image with custom config - (see YAML files in examples/image-metadata) - :param flavor_metadata: dict() object containing the metadata required by - your flavor based on your configuration: - (i.e. {'hw:mem_page_size': 'large'}) - :param use_floating_ips: when true, all tests requiring Floating IPs will - be added to the suite - :param netconf_override: dict() containing the reconfigured network_type, - physical_network and segmentation_id - :param log_level: the logging level - :return: None as the tests will be adding to the 'suite' parameter object - """ - # Tests the OpenStack API calls via a creator. If use_keystone, objects - # will be created with a custom user and project - - # Creator Object tests - suite.addTest(OSIntegrationTestCase.parameterize( - CreateSecurityGroupTests, os_creds=os_creds, ext_net_name=ext_net_name, - use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateImageSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name, - use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateImageNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name, - use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateMultiPartImageTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateKeypairsTests, os_creds=os_creds, ext_net_name=ext_net_name, - use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateKeypairsCleanupTests, os_creds=os_creds, - ext_net_name=ext_net_name, - use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateNetworkSuccessTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateRouterSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name, - use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateRouterNegativeTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateQoSTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateSimpleVolumeTypeSuccessTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateVolumeTypeComplexTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateSimpleVolumeSuccessTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateSimpleVolumeFailureTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateVolumeWithTypeTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateVolumeWithImageTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - - # VM Instances - suite.addTest(OSIntegrationTestCase.parameterize( - SimpleHealthCheck, os_creds=os_creds, ext_net_name=ext_net_name, - use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateInstanceTwoNetTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateInstanceSimpleTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - netconf_override=netconf_override, log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateInstancePortManipulationTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - netconf_override=netconf_override, log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - InstanceSecurityGroupTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - netconf_override=netconf_override, log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateInstanceOnComputeHost, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - netconf_override=netconf_override, log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateInstanceFromThreePartImage, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - netconf_override=netconf_override, log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateInstanceVolumeTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - netconf_override=netconf_override, log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateStackSuccessTests, os_creds=os_creds, ext_net_name=ext_net_name, - use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateStackVolumeTests, os_creds=os_creds, ext_net_name=ext_net_name, - use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateStackFlavorTests, os_creds=os_creds, ext_net_name=ext_net_name, - use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateStackKeypairTests, os_creds=os_creds, ext_net_name=ext_net_name, - use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateStackSecurityGroupTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateStackNegativeTests, os_creds=os_creds, ext_net_name=ext_net_name, - use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - - if use_floating_ips: - suite.addTest(OSIntegrationTestCase.parameterize( - CreateInstanceSingleNetworkTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - CreateStackFloatingIpTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) - suite.addTest(OSIntegrationTestCase.parameterize( - AnsibleProvisioningTests, os_creds=os_creds, - ext_net_name=ext_net_name, use_keystone=use_keystone, - flavor_metadata=flavor_metadata, image_metadata=image_metadata, - log_level=log_level)) diff --git a/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py b/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py deleted file mode 100644 index 6dc8288bf..000000000 --- a/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py +++ /dev/null @@ -1,63 +0,0 @@ -# Copyright (c) 2017 Cable Television Laboratories, Inc. and others. -# -# This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# -# http://www.apache.org/licenses/LICENSE-2.0 - -import logging - -from functest.core import unit -from functest.opnfv_tests.openstack.snaps import snaps_utils -from functest.utils.constants import CONST - -from snaps.openstack import create_flavor -from snaps.openstack.tests import openstack_tests - - -class SnapsTestRunner(unit.Suite): - """ - This test executes the SNAPS Python Tests - """ - def __init__(self, **kwargs): - super(SnapsTestRunner, self).__init__(**kwargs) - self.logger = logging.getLogger(__name__) - - if 'os_creds' in kwargs: - self.os_creds = kwargs['os_creds'] - else: - creds_override = None - if hasattr(CONST, 'snaps_os_creds_override'): - creds_override = CONST.__getattribute__( - 'snaps_os_creds_override') - self.os_creds = openstack_tests.get_credentials( - os_env_file=CONST.__getattribute__('openstack_creds'), - proxy_settings_str=None, ssh_proxy_cmd=None, - overrides=creds_override) - - if 'ext_net_name' in kwargs: - self.ext_net_name = kwargs['ext_net_name'] - else: - self.ext_net_name = snaps_utils.get_ext_net_name(self.os_creds) - - self.netconf_override = None - if hasattr(CONST, 'snaps_network_config'): - self.netconf_override = CONST.__getattribute__( - 'snaps_network_config') - - self.use_fip = ( - CONST.__getattribute__('snaps_use_floating_ips') == 'True') - self.use_keystone = ( - CONST.__getattribute__('snaps_use_keystone') == 'True') - scenario = CONST.__getattribute__('DEPLOY_SCENARIO') - - self.flavor_metadata = None - if 'ovs' in scenario or 'fdio' in scenario: - self.flavor_metadata = create_flavor.MEM_PAGE_SIZE_LARGE - - self.logger.info("Using flavor metadata '%s'", self.flavor_metadata) - - self.image_metadata = None - if hasattr(CONST, 'snaps_images'): - self.image_metadata = CONST.__getattribute__('snaps_images') diff --git a/functest/opnfv_tests/openstack/snaps/snaps_utils.py b/functest/opnfv_tests/openstack/snaps/snaps_utils.py deleted file mode 100644 index 284e88b51..000000000 --- a/functest/opnfv_tests/openstack/snaps/snaps_utils.py +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (c) 2015 All rights reserved -# This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# -# http://www.apache.org/licenses/LICENSE-2.0 - -from functest.utils.constants import CONST - -from snaps.openstack.utils import neutron_utils, nova_utils - - -def get_ext_net_name(os_creds): - """ - Returns the configured external network name or - the first retrieved external network name - :param: os_creds: an instance of snaps OSCreds object - :return: - """ - neutron = neutron_utils.neutron_client(os_creds) - ext_nets = neutron_utils.get_external_networks(neutron) - if (hasattr(CONST, 'EXTERNAL_NETWORK')): - extnet_config = CONST.__getattribute__('EXTERNAL_NETWORK') - for ext_net in ext_nets: - if ext_net.name == extnet_config: - return extnet_config - return ext_nets[0].name if ext_nets else "" - - -def get_active_compute_cnt(os_creds): - """ - Returns the number of active compute servers - :param: os_creds: an instance of snaps OSCreds object - :return: the number of active compute servers - """ - nova = nova_utils.nova_client(os_creds) - computes = nova_utils.get_availability_zone_hosts(nova, zone_name='nova') - return len(computes) diff --git a/functest/opnfv_tests/openstack/tempest/conf_utils.py b/functest/opnfv_tests/openstack/tempest/conf_utils.py deleted file mode 100644 index e61ab8138..000000000 --- a/functest/opnfv_tests/openstack/tempest/conf_utils.py +++ /dev/null @@ -1,352 +0,0 @@ -#!/usr/bin/env python -# -# Copyright (c) 2015 All rights reserved -# This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -import ConfigParser -import logging -import fileinput -import os -import pkg_resources -import shutil -import subprocess - -import yaml - -from functest.utils.constants import CONST -import functest.utils.functest_utils as ft_utils - - -IMAGE_ID_ALT = None -FLAVOR_ID_ALT = None -RALLY_CONF_PATH = "/etc/rally/rally.conf" -RALLY_AARCH64_PATCH_PATH = pkg_resources.resource_filename( - 'functest', 'ci/rally_aarch64_patch.conf') -GLANCE_IMAGE_PATH = os.path.join( - CONST.__getattribute__('dir_functest_images'), - CONST.__getattribute__('openstack_image_file_name')) -TEMPEST_RESULTS_DIR = os.path.join(CONST.__getattribute__('dir_results'), - 'tempest') -TEMPEST_CUSTOM = pkg_resources.resource_filename( - 'functest', 'opnfv_tests/openstack/tempest/custom_tests/test_list.txt') -TEMPEST_BLACKLIST = pkg_resources.resource_filename( - 'functest', 'opnfv_tests/openstack/tempest/custom_tests/blacklist.txt') -TEMPEST_DEFCORE = pkg_resources.resource_filename( - 'functest', - 'opnfv_tests/openstack/tempest/custom_tests/defcore_req.txt') -TEMPEST_RAW_LIST = os.path.join(TEMPEST_RESULTS_DIR, 'test_raw_list.txt') -TEMPEST_LIST = os.path.join(TEMPEST_RESULTS_DIR, 'test_list.txt') -REFSTACK_RESULTS_DIR = os.path.join(CONST.__getattribute__('dir_results'), - 'refstack') -TEMPEST_CONF_YAML = pkg_resources.resource_filename( - 'functest', 'opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml') -TEST_ACCOUNTS_FILE = pkg_resources.resource_filename( - 'functest', - 'opnfv_tests/openstack/tempest/custom_tests/test_accounts.yaml') - -CI_INSTALLER_TYPE = CONST.__getattribute__('INSTALLER_TYPE') -CI_INSTALLER_IP = CONST.__getattribute__('INSTALLER_IP') - -""" logging configuration """ -logger = logging.getLogger(__name__) - - -def create_rally_deployment(): - # set the architecture to default - pod_arch = os.getenv("POD_ARCH", None) - arch_filter = ['aarch64'] - - if pod_arch and pod_arch in arch_filter: - logger.info("Apply aarch64 specific to rally config...") - with open(RALLY_AARCH64_PATCH_PATH, "r") as f: - rally_patch_conf = f.read() - - for line in fileinput.input(RALLY_CONF_PATH, inplace=1): - print line, - if "cirros|testvm" in line: - print rally_patch_conf - - logger.info("Creating Rally environment...") - - cmd = "rally deployment destroy opnfv-rally" - ft_utils.execute_command(cmd, error_msg=( - "Deployment %s does not exist." - % CONST.__getattribute__('rally_deployment_name')), - verbose=False) - - cmd = ("rally deployment create --fromenv --name={0}" - .format(CONST.__getattribute__('rally_deployment_name'))) - error_msg = "Problem while creating Rally deployment" - ft_utils.execute_command_raise(cmd, error_msg=error_msg) - - cmd = "rally deployment check" - error_msg = "OpenStack not responding or faulty Rally deployment." - ft_utils.execute_command_raise(cmd, error_msg=error_msg) - - -def create_verifier(): - logger.info("Create verifier from existing repo...") - cmd = ("rally verify delete-verifier --id '{0}' --force").format( - CONST.__getattribute__('tempest_verifier_name')) - ft_utils.execute_command(cmd, error_msg=( - "Verifier %s does not exist." - % CONST.__getattribute__('tempest_verifier_name')), - verbose=False) - cmd = ("rally verify create-verifier --source {0} " - "--name {1} --type tempest --system-wide" - .format(CONST.__getattribute__('dir_repo_tempest'), - CONST.__getattribute__('tempest_verifier_name'))) - ft_utils.execute_command_raise(cmd, - error_msg='Problem while creating verifier') - - -def get_verifier_id(): - """ - Returns verifier id for current Tempest - """ - create_rally_deployment() - create_verifier() - cmd = ("rally verify list-verifiers | awk '/" + - CONST.__getattribute__('tempest_verifier_name') + - "/ {print $2}'") - p = subprocess.Popen(cmd, shell=True, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - deployment_uuid = p.stdout.readline().rstrip() - if deployment_uuid == "": - logger.error("Tempest verifier not found.") - raise Exception('Error with command:%s' % cmd) - return deployment_uuid - - -def get_verifier_deployment_id(): - """ - Returns deployment id for active Rally deployment - """ - cmd = ("rally deployment list | awk '/" + - CONST.__getattribute__('rally_deployment_name') + - "/ {print $2}'") - p = subprocess.Popen(cmd, shell=True, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - deployment_uuid = p.stdout.readline().rstrip() - if deployment_uuid == "": - logger.error("Rally deployment not found.") - raise Exception('Error with command:%s' % cmd) - return deployment_uuid - - -def get_verifier_repo_dir(verifier_id): - """ - Returns installed verifier repo directory for Tempest - """ - if not verifier_id: - verifier_id = get_verifier_id() - - return os.path.join(CONST.__getattribute__('dir_rally_inst'), - 'verification', - 'verifier-{}'.format(verifier_id), - 'repo') - - -def get_verifier_deployment_dir(verifier_id, deployment_id): - """ - Returns Rally deployment directory for current verifier - """ - if not verifier_id: - verifier_id = get_verifier_id() - - if not deployment_id: - deployment_id = get_verifier_deployment_id() - - return os.path.join(CONST.__getattribute__('dir_rally_inst'), - 'verification', - 'verifier-{}'.format(verifier_id), - 'for-deployment-{}'.format(deployment_id)) - - -def backup_tempest_config(conf_file): - """ - Copy config file to tempest results directory - """ - if not os.path.exists(TEMPEST_RESULTS_DIR): - os.makedirs(TEMPEST_RESULTS_DIR) - shutil.copyfile(conf_file, - os.path.join(TEMPEST_RESULTS_DIR, 'tempest.conf')) - - -def configure_tempest(deployment_dir, image_id=None, flavor_id=None, - compute_cnt=None): - """ - Calls rally verify and updates the generated tempest.conf with - given parameters - """ - conf_file = configure_verifier(deployment_dir) - configure_tempest_update_params(conf_file, image_id, flavor_id, - compute_cnt) - - -def configure_tempest_defcore(deployment_dir, image_id, flavor_id, - image_id_alt, flavor_id_alt, tenant_id): - """ - Add/update needed parameters into tempest.conf file - """ - conf_file = configure_verifier(deployment_dir) - configure_tempest_update_params(conf_file, image_id, flavor_id) - - logger.debug("Updating selected tempest.conf parameters for defcore...") - config = ConfigParser.RawConfigParser() - config.read(conf_file) - config.set('DEFAULT', 'log_file', '{}/tempest.log'.format(deployment_dir)) - config.set('oslo_concurrency', 'lock_path', - '{}/lock_files'.format(deployment_dir)) - generate_test_accounts_file(tenant_id=tenant_id) - config.set('auth', 'test_accounts_file', TEST_ACCOUNTS_FILE) - config.set('scenario', 'img_dir', '{}'.format(deployment_dir)) - config.set('scenario', 'img_file', 'tempest-image') - config.set('compute', 'image_ref', image_id) - config.set('compute', 'image_ref_alt', image_id_alt) - config.set('compute', 'flavor_ref', flavor_id) - config.set('compute', 'flavor_ref_alt', flavor_id_alt) - - with open(conf_file, 'wb') as config_file: - config.write(config_file) - - confpath = pkg_resources.resource_filename( - 'functest', - 'opnfv_tests/openstack/refstack_client/refstack_tempest.conf') - shutil.copyfile(conf_file, confpath) - - -def generate_test_accounts_file(tenant_id): - """ - Add needed tenant and user params into test_accounts.yaml - """ - - logger.debug("Add needed params into test_accounts.yaml...") - accounts_list = [ - { - 'tenant_name': - CONST.__getattribute__('tempest_identity_tenant_name'), - 'tenant_id': str(tenant_id), - 'username': CONST.__getattribute__('tempest_identity_user_name'), - 'password': - CONST.__getattribute__('tempest_identity_user_password') - } - ] - - with open(TEST_ACCOUNTS_FILE, "w") as f: - yaml.dump(accounts_list, f, default_flow_style=False) - - -def configure_tempest_update_params(tempest_conf_file, image_id=None, - flavor_id=None, compute_cnt=1): - """ - Add/update needed parameters into tempest.conf file - """ - logger.debug("Updating selected tempest.conf parameters...") - config = ConfigParser.RawConfigParser() - config.read(tempest_conf_file) - config.set( - 'compute', - 'fixed_network_name', - CONST.__getattribute__('tempest_private_net_name')) - config.set('compute', 'volume_device_name', - CONST.__getattribute__('tempest_volume_device_name')) - - if image_id is not None: - config.set('compute', 'image_ref', image_id) - if IMAGE_ID_ALT is not None: - config.set('compute', 'image_ref_alt', IMAGE_ID_ALT) - if CONST.__getattribute__('tempest_use_custom_flavors'): - if flavor_id is not None: - config.set('compute', 'flavor_ref', flavor_id) - if FLAVOR_ID_ALT is not None: - config.set('compute', 'flavor_ref_alt', FLAVOR_ID_ALT) - if compute_cnt > 1: - # enable multinode tests - config.set('compute', 'min_compute_nodes', compute_cnt) - config.set('compute-feature-enabled', 'live_migration', True) - - config.set('identity', 'region', - CONST.__getattribute__('OS_REGION_NAME')) - identity_api_version = os.getenv( - "OS_IDENTITY_API_VERSION", os.getenv("IDENTITY_API_VERSION")) - if (identity_api_version == '3'): - auth_version = 'v3' - else: - auth_version = 'v2' - config.set('identity', 'auth_version', auth_version) - config.set( - 'validation', 'ssh_timeout', - CONST.__getattribute__('tempest_validation_ssh_timeout')) - config.set('object-storage', 'operator_role', - CONST.__getattribute__('tempest_object_storage_operator_role')) - - if CONST.__getattribute__('OS_ENDPOINT_TYPE') is not None: - config.set('identity', 'v3_endpoint_type', - CONST.__getattribute__('OS_ENDPOINT_TYPE')) - - if (identity_api_version == '3'): - config.set('identity-feature-enabled', 'api_v2', False) - - if CONST.__getattribute__('OS_ENDPOINT_TYPE') is not None: - sections = config.sections() - services_list = ['compute', - 'volume', - 'image', - 'network', - 'data-processing', - 'object-storage', - 'orchestration'] - for service in services_list: - if service not in sections: - config.add_section(service) - config.set(service, 'endpoint_type', - CONST.__getattribute__('OS_ENDPOINT_TYPE')) - - logger.debug('Add/Update required params defined in tempest_conf.yaml ' - 'into tempest.conf file') - with open(TEMPEST_CONF_YAML) as f: - conf_yaml = yaml.safe_load(f) - if conf_yaml: - sections = config.sections() - for section in conf_yaml: - if section not in sections: - config.add_section(section) - sub_conf = conf_yaml.get(section) - for key, value in sub_conf.items(): - config.set(section, key, value) - - with open(tempest_conf_file, 'wb') as config_file: - config.write(config_file) - - backup_tempest_config(tempest_conf_file) - - -def configure_verifier(deployment_dir): - """ - Execute rally verify configure-verifier, which generates tempest.conf - """ - tempest_conf_file = os.path.join(deployment_dir, "tempest.conf") - if os.path.isfile(tempest_conf_file): - logger.debug("Verifier is already configured.") - logger.debug("Reconfiguring the current verifier...") - cmd = "rally verify configure-verifier --reconfigure" - else: - logger.info("Configuring the verifier...") - cmd = "rally verify configure-verifier" - ft_utils.execute_command(cmd) - - logger.debug("Looking for tempest.conf file...") - if not os.path.isfile(tempest_conf_file): - logger.error("Tempest configuration file %s NOT found." - % tempest_conf_file) - raise Exception("Tempest configuration file %s NOT found." - % tempest_conf_file) - else: - return tempest_conf_file diff --git a/functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.txt b/functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.txt deleted file mode 100644 index bb1aed339..000000000 --- a/functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.txt +++ /dev/null @@ -1,2 +0,0 @@ - -- diff --git a/functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.yaml b/functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.yaml new file mode 100644 index 000000000..43a77fa3c --- /dev/null +++ b/functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.yaml @@ -0,0 +1,19 @@ +--- +- + scenarios: + - os-ovn-nofeature-ha + - os-ovn-nofeature-noha + tests: + - neutron_tempest_plugin.api.admin.test_dhcp_agent_scheduler + - neutron_tempest_plugin.api.admin.test_ports.PortTestCasesResourceRequest.test_port_resource_request + - neutron_tempest_plugin.api.admin.test_ports.PortTestCasesResourceRequest.test_port_resource_request_empty + - neutron_tempest_plugin.api.admin.test_ports.PortTestCasesResourceRequest.test_port_resource_request_inherited_policy + - neutron_tempest_plugin.api.admin.test_ports.PortTestCasesResourceRequest.test_port_resource_request_no_provider_net_conflict + - neutron_tempest_plugin.api.test_ports.PortsTestJSON.test_create_update_port_with_dns_name + - patrole_tempest_plugin.tests.api.network.test_availability_zones_rbac.AvailabilityZoneExtRbacTest.test_list_availability_zone_rbac + - patrole_tempest_plugin.tests.api.network.test_agents_rbac.DHCPAgentSchedulersRbacTest.test_add_dhcp_agent_to_network + - patrole_tempest_plugin.tests.api.network.test_agents_rbac.DHCPAgentSchedulersRbacTest.test_delete_network_from_dhcp_agent + - patrole_tempest_plugin.tests.api.network.test_agents_rbac.DHCPAgentSchedulersRbacTest.test_list_networks_hosted_by_one_dhcp_agent + - patrole_tempest_plugin.tests.api.network.test_networks_rbac.NetworksRbacTest.test_create_network_provider_network_type + - patrole_tempest_plugin.tests.api.network.test_networks_rbac.NetworksRbacTest.test_create_network_provider_segmentation_id + - tempest.api.network.admin.test_dhcp_agent_scheduler diff --git a/functest/opnfv_tests/openstack/tempest/custom_tests/defcore_req.txt b/functest/opnfv_tests/openstack/tempest/custom_tests/defcore_req.txt deleted file mode 100644 index fbbee2ffc..000000000 --- a/functest/opnfv_tests/openstack/tempest/custom_tests/defcore_req.txt +++ /dev/null @@ -1,249 +0,0 @@ -# Set of DefCore tempest test cases not flagged and required. It only contains OpenStack core (no object storage) -# The approved guidelines (2016.08) are valid for Kilo, Liberty, Mitaka and Newton releases of OpenStack -# The list can be generated using the Rest API from RefStack project: -# https://refstack.openstack.org/api/v1/guidelines/2017.01/tests?target=compute&type=required&alias=true&flag=false -tempest.api.compute.images.test_images_oneserver.ImagesOneServerTestJSON.test_create_delete_image[id-3731d080-d4c5-4872-b41a-64d0d0021314] -tempest.api.compute.images.test_images_oneserver.ImagesOneServerTestJSON.test_create_image_specify_multibyte_character_image_name[id-3b7c6fe4-dfe7-477c-9243-b06359db51e6] -tempest.api.compute.servers.test_create_server.ServersTestJSON.test_host_name_is_same_as_server_name[id-ac1ad47f-984b-4441-9274-c9079b7a0666] -tempest.api.compute.servers.test_create_server.ServersTestJSON.test_list_servers[id-9a438d88-10c6-4bcd-8b5b-5b6e25e1346f] -tempest.api.compute.servers.test_create_server.ServersTestJSON.test_list_servers_with_detail[id-585e934c-448e-43c4-acbf-d06a9b899997] -tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_created_server_vcpus[id-cbc0f52f-05aa-492b-bdc1-84b575ca294b] -tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_server_details[id-5de47127-9977-400a-936f-abcfbec1218f] -tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_host_name_is_same_as_server_name[id-ac1ad47f-984b-4441-9274-c9079b7a0666] -tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_list_servers[id-9a438d88-10c6-4bcd-8b5b-5b6e25e1346f] -tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_list_servers_with_detail[id-585e934c-448e-43c4-acbf-d06a9b899997] -tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_created_server_vcpus[id-cbc0f52f-05aa-492b-bdc1-84b575ca294b] -tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_server_details[id-5de47127-9977-400a-936f-abcfbec1218f] -tempest.api.compute.servers.test_delete_server.DeleteServersTestJSON.test_delete_active_server[id-925fdfb4-5b13-47ea-ac8a-c36ae6fddb05] -tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_get_instance_action[id-aacc71ca-1d70-4aa5-bbf6-0ff71470e43c] -tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_list_instance_actions[id-77ca5cc5-9990-45e0-ab98-1de8fead201a] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_flavor[id-80c574cc-0925-44ba-8602-299028357dd9] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_image[id-b3304c3b-97df-46d2-8cd3-e2b6659724e7] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_server_name[id-f9eb2b70-735f-416c-b260-9914ac6181e4] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_server_status[id-de2612ab-b7dd-4044-b0b1-d2539601911f] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_limit_results[id-67aec2d0-35fe-4503-9f92-f13272b867ed] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_active_status[id-ca78e20e-fddb-4ce6-b7f7-bcbf8605e66e] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_flavor[id-573637f5-7325-47bb-9144-3476d0416908] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_image[id-05e8a8e7-9659-459a-989d-92c2f501f4ba] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_limit[id-614cdfc1-d557-4bac-915b-3e67b48eee76] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_server_name[id-9b067a7b-7fee-4f6a-b29c-be43fe18fc5a] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_server_status[id-ca78e20e-fddb-4ce6-b7f7-bcbf8605e66e] -tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filtered_by_name_wildcard[id-e9f624ee-92af-4562-8bec-437945a18dcb] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_changes_since_future_date[id-74745ad8-b346-45b5-b9b8-509d7447fc1f] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_changes_since_invalid_date[id-87d12517-e20a-4c9c-97b6-dd1628d6d6c9] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits[id-12c80a9f-2dec-480e-882b-98ba15757659] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits_greater_than_actual_count[id-d47c17fb-eebd-4287-8e95-f20a7e627b18] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits_pass_negative_value[id-62610dd9-4713-4ee0-8beb-fd2c1aa7f950] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits_pass_string[id-679bc053-5e70-4514-9800-3dfab1a380a6] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_non_existing_flavor[id-5913660b-223b-44d4-a651-a0fbfd44ca75] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_non_existing_image[id-ff01387d-c7ad-47b4-ae9e-64fa214638fe] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_non_existing_server_name[id-e2c77c4a-000a-4af3-a0bd-629a328bde7c] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_detail_server_is_deleted[id-93055106-2d34-46fe-af68-d9ddbf7ee570] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_status_non_existing[id-fcdf192d-0f74-4d89-911f-1ec002b822c4] -tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_with_a_deleted_server[id-24a26f1a-1ddc-4eea-b0d7-a90cc874ad8f] -tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_lock_unlock_server[id-80a8094c-211e-440a-ab88-9e59d556c7ee] -tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_reboot_server_hard[id-2cb1baf6-ac8d-4429-bf0d-ba8a0ba53e32] -tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_rebuild_server[id-aaa6cdf3-55a7-461a-add9-1c8596b9a07c] -tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_stop_start_server[id-af8eafd4-38a7-4a4b-bdbc-75145a580560] -tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_delete_server_metadata_item[id-127642d6-4c7b-4486-b7cd-07265a378658] -tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_get_server_metadata_item[id-3043c57d-7e0e-49a6-9a96-ad569c265e6a] -tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_list_server_metadata[id-479da087-92b3-4dcf-aeb3-fd293b2d14ce] -tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_set_server_metadata[id-211021f6-21de-4657-a68f-908878cfe251] -tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_set_server_metadata_item[id-58c02d4f-5c67-40be-8744-d3fa5982eb1c] -tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_update_server_metadata[id-344d981e-0c33-4997-8a5d-6c1d803e4134] -tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_server_with_admin_password[id-b92d5ec7-b1dd-44a2-87e4-45e888c46ef0] -tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_specify_keypair[id-f9e15296-d7f9-4e62-b53f-a04e89160833] -tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_with_existing_server_name[id-8fea6be7-065e-47cf-89b8-496e6f96c699] -tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_access_server_address[id-89b90870-bc13-4b73-96af-f9d4f2b70077] -tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_server_name[id-5e6ccff8-349d-4852-a8b3-055df7988dd2] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_numeric_server_name[id-fd57f159-68d6-4c2a-902b-03070828a87e] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_server_metadata_exceeds_length_limit[id-7fc74810-0bd2-4cd7-8244-4f33a9db865a] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_server_name_length_exceeds_256[id-c3e0fb12-07fc-4d76-a22e-37409887afe8] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_flavor[id-18f5227f-d155-4429-807c-ccb103887537] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_image[id-fcba1052-0a50-4cf3-b1ac-fae241edf02f] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_network_uuid[id-4e72dc2d-44c5-4336-9667-f7972e95c402] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_delete_server_pass_id_exceeding_length_limit[id-f4d7279b-5fd2-4bf2-9ba4-ae35df0d18c5] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_delete_server_pass_negative_id[id-75f79124-277c-45e6-a373-a1d6803f4cc4] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_get_non_existent_server[id-3436b02f-1b1e-4f03-881e-c6a602327439] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_invalid_ip_v6_address[id-5226dd80-1e9c-4d8a-b5f9-b26ca4763fd0] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_reboot_non_existent_server[id-d4c023a0-9c55-4747-9dd5-413b820143c7] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_deleted_server[id-98fa0458-1485-440f-873b-fe7f0d714930] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_non_existent_server[id-d86141a7-906e-4731-b187-d64a2ea61422] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_reboot_deleted_server[id-98fa0458-1485-440f-873b-fe7f0d714930] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_server_name_blank[id-dbbfd247-c40c-449e-8f6c-d2aa7c7da7cf] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_stop_non_existent_server[id-a31460a9-49e1-42aa-82ee-06e0bb7c2d03] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_name_of_non_existent_server[id-aa8eed43-e2cb-4ebf-930b-da14f6a21d81] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_server_name_length_exceeds_256[id-5c8e244c-dada-4590-9944-749c455b431f] -tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_server_set_empty_name[id-38204696-17c6-44da-9590-40f87fb5a899] -tempest.api.compute.test_quotas.QuotasTestJSON.test_get_default_quotas[id-9bfecac7-b966-4f47-913f-1a9e2c12134a] -tempest.api.compute.test_quotas.QuotasTestJSON.test_get_quotas[id-f1ef0a97-dbbb-4cca-adc5-c9fbc4f76107] -tempest.api.compute.test_versions.TestVersions.test_list_api_versions[id-6c0a0990-43b6-4529-9b61-5fd8daf7c55c] -tempest.api.compute.volumes.test_attach_volume.AttachVolumeTestJSON.test_attach_detach_volume[id-52e9045a-e90d-4c0d-9087-79d657faffff] -tempest.api.compute.volumes.test_attach_volume.AttachVolumeTestJSON.test_list_get_volume_attachments[id-7fa563fe-f0f7-43eb-9e22-a1ece036b513] -tempest.api.identity.v3.TestApiDiscovery.test_api_media_types[id-657c1970-4722-4189-8831-7325f3bc4265] -tempest.api.identity.v3.TestApiDiscovery.test_api_version_resources[id-b9232f5e-d9e5-4d97-b96c-28d3db4de1bd] -tempest.api.identity.v3.TestApiDiscovery.test_api_version_statuses[id-8879a470-abfb-47bb-bb8d-5a7fd279ad1e] -tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_media_types[id-657c1970-4722-4189-8831-7325f3bc4265] -tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_version_resources[id-b9232f5e-d9e5-4d97-b96c-28d3db4de1bd] -tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_version_statuses[id-8879a470-abfb-47bb-bb8d-5a7fd279ad1e] -tempest.api.identity.v3.test_tokens.TokensV3Test.test_create_token[id-6f8e4436-fc96-4282-8122-e41df57197a9] -tempest.api.image.v2.test_images.BasicOperationsImagesTest.test_delete_image[id-f848bb94-1c6e-45a4-8726-39e3a5b23535] -tempest.api.image.v2.test_images.BasicOperationsImagesTest.test_update_image[id-f66891a7-a35c-41a8-b590-a065c2a1caa6] -tempest.api.image.v2.test_images.ListImagesTest.test_get_image_schema[id-622b925c-479f-4736-860d-adeaf13bc371] -tempest.api.image.v2.test_images.ListImagesTest.test_get_images_schema[id-25c8d7b2-df21-460f-87ac-93130bcdc684] -tempest.api.image.v2.test_images.ListImagesTest.test_index_no_params[id-1e341d7a-90a9-494c-b143-2cdf2aeb6aee] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_container_format[id-9959ca1d-1aa7-4b7a-a1ea-0fff0499b37e] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_disk_format[id-4a4735a7-f22f-49b6-b0d9-66e1ef7453eb] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_limit[id-e914a891-3cc8-4b40-ad32-e0a39ffbddbb] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_min_max_size[id-4ad8c157-971a-4ba8-aa84-ed61154b1e7f] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_size[id-cf1b9a48-8340-480e-af7b-fe7e17690876] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_status[id-7fc9e369-0f58-4d05-9aa5-0969e2d59d15] -tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_visibility[id-7a95bb92-d99e-4b12-9718-7bc6ab73e6d2] -tempest.api.image.v2.test_images.ListImagesTest.test_list_no_params[id-1e341d7a-90a9-494c-b143-2cdf2aeb6aee] -tempest.api.image.v2.test_images.ListUserImagesTest.test_get_image_schema[id-622b925c-479f-4736-860d-adeaf13bc371] -tempest.api.image.v2.test_images.ListUserImagesTest.test_get_images_schema[id-25c8d7b2-df21-460f-87ac-93130bcdc684] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_container_format[id-9959ca1d-1aa7-4b7a-a1ea-0fff0499b37e] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_disk_format[id-4a4735a7-f22f-49b6-b0d9-66e1ef7453eb] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_limit[id-e914a891-3cc8-4b40-ad32-e0a39ffbddbb] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_min_max_size[id-4ad8c157-971a-4ba8-aa84-ed61154b1e7f] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_size[id-cf1b9a48-8340-480e-af7b-fe7e17690876] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_status[id-7fc9e369-0f58-4d05-9aa5-0969e2d59d15] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_images_param_visibility[id-7a95bb92-d99e-4b12-9718-7bc6ab73e6d2] -tempest.api.image.v2.test_images.ListUserImagesTest.test_list_no_params[id-1e341d7a-90a9-494c-b143-2cdf2aeb6aee] -tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_delete_image_null_id[id-32248db1-ab88-4821-9604-c7c369f1f88c] -tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_delete_non_existing_image[id-6fe40f1c-57bd-4918-89cc-8500f850f3de] -tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_get_delete_deleted_image[id-e57fc127-7ba0-4693-92d7-1d8a05ebcba9] -tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_get_image_null_id[id-ef45000d-0a72-4781-866d-4cb7bf2562ad] -tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_get_non_existent_image[id-668743d5-08ad-4480-b2b8-15da34f81d9f] -tempest.api.image.v2.test_images_tags.ImagesTagsTest.test_update_delete_tags_for_image[id-10407036-6059-4f95-a2cd-cbbbee7ed329] -tempest.api.image.v2.test_images_tags_negative.ImagesTagsNegativeTest.test_delete_non_existing_tag[id-39c023a2-325a-433a-9eea-649bf1414b19] -tempest.api.image.v2.test_images_tags_negative.ImagesTagsNegativeTest.test_update_tags_for_non_existing_image[id-8cd30f82-6f9a-4c6e-8034-c1b51fba43d9] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_all_attributes[id-a4d9ec4c-0306-4111-a75c-db01a709030b] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_allocation_pools[id-bec949c4-3147-4ba6-af5f-cd2306118404] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_dhcp_enabled[id-94ce038d-ff0a-4a4c-a56b-09da3ca0b55d] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_gw[id-9393b468-186d-496d-aa36-732348cd76e7] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_gw_and_allocation_pools[id-8217a149-0c6c-4cfb-93db-0486f707d13f] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_host_routes_and_dns_nameservers[id-d830de0a-be47-468f-8f02-1fd996118289] -tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_without_gateway[id-d2d596e2-8e76-47a9-ac51-d4648009f4d3] -tempest.api.network.test_networks.NetworksTest.test_create_update_delete_network_subnet[id-0e269138-0da6-4efc-a46d-578161e7b221] -tempest.api.network.test_networks.NetworksTest.test_delete_network_with_subnet[id-f04f61a9-b7f3-4194-90b2-9bcf660d1bfe] -tempest.api.network.test_networks.NetworksTest.test_list_networks[id-f7ffdeda-e200-4a7a-bcbe-05716e86bf43] -tempest.api.network.test_networks.NetworksTest.test_list_networks_fields[id-6ae6d24f-9194-4869-9c85-c313cb20e080] -tempest.api.network.test_networks.NetworksTest.test_list_subnets[id-db68ba48-f4ea-49e9-81d1-e367f6d0b20a] -tempest.api.network.test_networks.NetworksTest.test_list_subnets_fields[id-842589e3-9663-46b0-85e4-7f01273b0412] -tempest.api.network.test_networks.NetworksTest.test_show_network[id-2bf13842-c93f-4a69-83ed-717d2ec3b44e] -tempest.api.network.test_networks.NetworksTest.test_show_network_fields[id-867819bb-c4b6-45f7-acf9-90edcf70aa5e] -tempest.api.network.test_networks.NetworksTest.test_show_subnet[id-bd635d81-6030-4dd1-b3b9-31ba0cfdf6cc] -tempest.api.network.test_networks.NetworksTest.test_show_subnet_fields[id-270fff0b-8bfc-411f-a184-1e8fd35286f0] -tempest.api.network.test_networks.NetworksTest.test_update_subnet_gw_dns_host_routes_dhcp[id-3d3852eb-3009-49ec-97ac-5ce83b73010a] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_all_attributes[id-a4d9ec4c-0306-4111-a75c-db01a709030b] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_with_allocation_pools[id-bec949c4-3147-4ba6-af5f-cd2306118404] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_with_dhcp_enabled[id-94ce038d-ff0a-4a4c-a56b-09da3ca0b55d] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_with_gw[id-9393b468-186d-496d-aa36-732348cd76e7] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_with_gw_and_allocation_pools[id-8217a149-0c6c-4cfb-93db-0486f707d13f] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_with_host_routes_and_dns_nameservers[id-d830de0a-be47-468f-8f02-1fd996118289] -tempest.api.network.test_networks.NetworksTestJSON.test_create_delete_subnet_without_gateway[id-d2d596e2-8e76-47a9-ac51-d4648009f4d3] -tempest.api.network.test_networks.NetworksTestJSON.test_create_update_delete_network_subnet[id-0e269138-0da6-4efc-a46d-578161e7b221] -tempest.api.network.test_networks.NetworksTestJSON.test_delete_network_with_subnet[id-f04f61a9-b7f3-4194-90b2-9bcf660d1bfe] -tempest.api.network.test_networks.NetworksTestJSON.test_list_networks[id-f7ffdeda-e200-4a7a-bcbe-05716e86bf43] -tempest.api.network.test_networks.NetworksTestJSON.test_list_networks_fields[id-6ae6d24f-9194-4869-9c85-c313cb20e080] -tempest.api.network.test_networks.NetworksTestJSON.test_list_subnets[id-db68ba48-f4ea-49e9-81d1-e367f6d0b20a] -tempest.api.network.test_networks.NetworksTestJSON.test_list_subnets_fields[id-842589e3-9663-46b0-85e4-7f01273b0412] -tempest.api.network.test_networks.NetworksTestJSON.test_show_network[id-2bf13842-c93f-4a69-83ed-717d2ec3b44e] -tempest.api.network.test_networks.NetworksTestJSON.test_show_network_fields[id-867819bb-c4b6-45f7-acf9-90edcf70aa5e] -tempest.api.network.test_networks.NetworksTestJSON.test_show_subnet[id-bd635d81-6030-4dd1-b3b9-31ba0cfdf6cc] -tempest.api.network.test_networks.NetworksTestJSON.test_show_subnet_fields[id-270fff0b-8bfc-411f-a184-1e8fd35286f0] -tempest.api.network.test_networks.NetworksTestJSON.test_update_subnet_gw_dns_host_routes_dhcp[id-3d3852eb-3009-49ec-97ac-5ce83b73010a] -tempest.api.network.test_ports.PortsTestJSON.test_create_bulk_port[id-67f1b811-f8db-43e2-86bd-72c074d4a42c] -tempest.api.network.test_ports.PortsTestJSON.test_create_port_in_allowed_allocation_pools[id-0435f278-40ae-48cb-a404-b8a087bc09b1] -tempest.api.network.test_ports.PortsTestJSON.test_create_update_delete_port[id-c72c1c0c-2193-4aca-aaa4-b1442640f51c] -tempest.api.network.test_ports.PortsTestJSON.test_list_ports[id-cf95b358-3e92-4a29-a148-52445e1ac50e] -tempest.api.network.test_ports.PortsTestJSON.test_list_ports_fields[id-ff7f117f-f034-4e0e-abff-ccef05c454b4] -tempest.api.network.test_ports.PortsTestJSON.test_show_port[id-c9a685bd-e83f-499c-939f-9f7863ca259f] -tempest.api.network.test_ports.PortsTestJSON.test_show_port_fields[id-45fcdaf2-dab0-4c13-ac6c-fcddfb579dbd] -tempest.api.network.test_ports.PortsTestJSON.test_update_port_with_security_group_and_extra_attributes[id-58091b66-4ff4-4cc1-a549-05d60c7acd1a] -tempest.api.network.test_ports.PortsTestJSON.test_update_port_with_two_security_groups_and_extra_attributes[id-edf6766d-3d40-4621-bc6e-2521a44c257d] -tempest.api.network.test_security_groups.SecGroupTest.test_create_list_update_show_delete_security_group[id-bfd128e5-3c92-44b6-9d66-7fe29d22c802] -tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_additional_args[id-87dfbcf9-1849-43ea-b1e4-efa3eeae9f71] -tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_icmp_type_code[id-c9463db8-b44d-4f52-b6c0-8dbda99f26ce] -tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_protocol_integer_value[id-0a307599-6655-4220-bebc-fd70c64f2290] -tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_remote_group_id[id-c2ed2deb-7a0c-44d8-8b4c-a5825b5c310b] -tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_remote_ip_prefix[id-16459776-5da2-4634-bce4-4b55ee3ec188] -tempest.api.network.test_security_groups.SecGroupTest.test_create_show_delete_security_group_rule[id-cfb99e0e-7410-4a3d-8a0c-959a63ee77e9] -tempest.api.network.test_security_groups.SecGroupTest.test_list_security_groups[id-e30abd17-fef9-4739-8617-dc26da88e686] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_additional_default_security_group_fails[id-2323061e-9fbf-4eb0-b547-7e8fafc90849] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_duplicate_security_group_rule_fails[id-8fde898f-ce88-493b-adc9-4e4692879fc5] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_bad_ethertype[id-5666968c-fff3-40d6-9efc-df1c8bd01abb] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_bad_protocol[id-981bdc22-ce48-41ed-900a-73148b583958] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_bad_remote_ip_prefix[id-5f8daf69-3c5f-4aaa-88c9-db1d66f68679] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_invalid_ports[id-0d9c7791-f2ad-4e2f-ac73-abf2373b0d2d] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_non_existent_remote_groupid[id-4bf786fd-2f02-443c-9716-5b98e159a49a] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_non_existent_security_group[id-be308db6-a7cf-4d5c-9baf-71bafd73f35e] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_delete_non_existent_security_group[id-1f1bb89d-5664-4956-9fcd-83ee0fa603df] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_show_non_existent_security_group[id-424fd5c3-9ddc-486a-b45f-39bf0c820fc6] -tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_show_non_existent_security_group_rule[id-4c094c09-000b-4e41-8100-9617600c02a6] -tempest.api.volume.test_availability_zone.AvailabilityZoneV2TestJSON.test_get_availability_zone_list[id-01f1ae88-eba9-4c6b-a011-6f7ace06b725] -tempest.api.volume.test_extensions.ExtensionsV2TestJSON.test_list_extensions[id-94607eb0-43a5-47ca-82aa-736b41bd2e2c] -tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_create_get_delete_snapshot_metadata[id-a2f20f99-e363-4584-be97-bc33afb1a56c] -tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_crud_snapshot_metadata[id-a2f20f99-e363-4584-be97-bc33afb1a56c] -tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_update_snapshot_metadata_item[id-e8ff85c5-8f97-477f-806a-3ac364a949ed] -tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_create_get_delete_volume_metadata[id-6f5b125b-f664-44bf-910f-751591fe5769] -tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_crud_volume_metadata[id-6f5b125b-f664-44bf-910f-751591fe5769] -tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_update_volume_metadata_item[id-862261c5-8df4-475a-8c21-946e50e36a20] -tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_attach_detach_volume_to_instance[id-fff42874-7db5-4487-a8e1-ddda5fb5288d] -tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_get_volume_attachment[id-9516a2c8-9135-488c-8dd6-5677a7e5f371] -tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_reserve_unreserve_volume[id-92c4ef64-51b2-40c0-9f7e-4749fbaaba33] -tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_bootable[id-63e21b4c-0a0c-41f6-bfc3-7c2816815599] -tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_readonly_update[id-fff74e1e-5bd3-4b33-9ea9-24c103bc3f59] -tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete[id-27fb0e9f-fb64-41dd-8bdb-1ffa762f0d51] -tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete_as_clone[id-3f591b4a-7dc6-444c-bd51-77469506b3a1] -tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete_from_image[id-54a01030-c7fc-447c-86ee-c1182beae638] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list[id-0b6ddd39-b948-471f-8038-4787978747c4] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_by_name[id-a28e8da4-0b56-472f-87a8-0f4d3f819c02] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_by_name[id-2de3a6d4-12aa-403b-a8f2-fdeb42a89623] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_param_display_name_and_status[id-777c87c1-2fc4-4883-8b8e-5c0b951d1ec8] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_detail_param_display_name_and_status[id-856ab8ca-6009-4c37-b691-be1065528ad4] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_detail_param_metadata[id-1ca92d3c-4a8e-4b43-93f5-e4c7fb3b291d] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_details[id-adcbb5a7-5ad8-4b61-bd10-5380e111a877] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_param_metadata[id-b5ebea1b-0603-40a0-bb41-15fcd0a53214] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_by_availability_zone[id-c0cfa863-3020-40d7-b587-e35f597d5d87] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_by_status[id-39654e13-734c-4dab-95ce-7613bf8407ce] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_details_by_availability_zone[id-e1b80d13-94f0-4ba2-a40e-386af29f8db1] -tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_details_by_status[id-2943f712-71ec-482a-bf49-d5ca06216b9f] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_attach_volumes_with_nonexistent_volume_id[id-f5e56b0a-5d02-43c1-a2a7-c9b792c2e3f6] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_invalid_size[id-1ed83a8a-682d-4dfb-a30e-ee63ffd6c049] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_snapshot_id[id-0c36f6ae-4604-4017-b0a9-34fdc63096f9] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_source_volid[id-47c73e08-4be8-45bb-bfdf-0c4e79b88344] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_volume_type[id-10254ed8-3849-454e-862e-3ab8e6aa01d2] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_out_passing_size[id-9387686f-334f-4d31-a439-33494b9e2683] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_negative[id-8b472729-9eba-446e-a83b-916bdb34bef7] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_zero[id-41331caa-eaf4-4001-869d-bc18c1869360] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_without_passing_size[id-9387686f-334f-4d31-a439-33494b9e2683] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_delete_invalid_volume_id[id-1f035827-7c32-4019-9240-b4ec2dbd9dfd] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_delete_volume_without_passing_volume_id[id-441a1550-5d44-4b30-af0f-a6d402f52026] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_detach_volumes_with_invalid_volume_id[id-9f9c24e4-011d-46b5-b992-952140ce237a] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_invalid_volume_id[id-30799cfd-7ee4-446c-b66c-45b383ed211b] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_volume_without_passing_volume_id[id-c6c3db06-29ad-4e91-beb0-2ab195fe49e3] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_detail_with_invalid_status[id-ba94b27b-be3f-496c-a00e-0283b373fa75] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_detail_with_nonexistent_name[id-9ca17820-a0e7-4cbd-a7fa-f4468735e359] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_with_invalid_status[id-143b279b-7522-466b-81be-34a87d564a7c] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_with_nonexistent_name[id-0f4aa809-8c7b-418f-8fb3-84c7a5dfc52f] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_reserve_volume_with_negative_volume_status[id-449c4ed2-ecdd-47bb-98dc-072aeccf158c] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_reserve_volume_with_nonexistent_volume_id[id-ac6084c0-0546-45f9-b284-38a367e0e0e2] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_unreserve_volume_with_nonexistent_volume_id[id-eb467654-3dc1-4a72-9b46-47c29d22654c] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_empty_volume_id[id-72aeca85-57a5-4c1f-9057-f320f9ea575b] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_invalid_volume_id[id-e66e40d6-65e6-4e75-bdc7-636792fa152d] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_nonexistent_volume_id[id-0186422c-999a-480e-a026-6a665744c30c] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_volume_delete_nonexistent_volume_id[id-555efa6e-efcd-44ef-8a3b-4a7ca4837a29] -tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_volume_get_nonexistent_volume_id[id-f131c586-9448-44a4-a8b0-54ca838aa43e] -tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshot_create_get_list_update_delete[id-2a8abbe4-d871-46db-b049-c41f5af8216e] -tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshots_list_details_with_params[id-220a1022-1fcd-4a74-a7bd-6b859156cda2] -tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshots_list_with_params[id-59f41f43-aebf-48a9-ab5d-d76340fab32b] -tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_volume_from_snapshot[id-677863d1-3142-456d-b6ac-9924f667a7f4] -tempest.api.volume.test_volumes_snapshots_list.VolumesV2SnapshotListTestJSON.test_snapshots_list_details_with_params[id-220a1022-1fcd-4a74-a7bd-6b859156cda2] -tempest.api.volume.test_volumes_snapshots_list.VolumesV2SnapshotListTestJSON.test_snapshots_list_with_params[id-59f41f43-aebf-48a9-ab5d-d76340fab32b] -tempest.api.volume.test_volumes_snapshots_negative.VolumesV2SnapshotNegativeTestJSON.test_create_snapshot_with_nonexistent_volume_id[id-e3e466af-70ab-4f4b-a967-ab04e3532ea7] -tempest.api.volume.test_volumes_snapshots_negative.VolumesV2SnapshotNegativeTestJSON.test_create_snapshot_without_passing_volume_id[id-bb9da53e-d335-4309-9c15-7e76fd5e4d6d] -tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_pagination[id-e9138a2c-f67b-4796-8efa-635c196d01de] -tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_with_multiple_params[id-2a7064eb-b9c3-429b-b888-33928fc5edd3] -tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_pagination[id-af55e775-8e4b-4feb-8719-215c43b0238c] diff --git a/functest/opnfv_tests/openstack/tempest/custom_tests/public_blacklist.yaml b/functest/opnfv_tests/openstack/tempest/custom_tests/public_blacklist.yaml new file mode 100644 index 000000000..e53b577b2 --- /dev/null +++ b/functest/opnfv_tests/openstack/tempest/custom_tests/public_blacklist.yaml @@ -0,0 +1,15 @@ +--- +- + scenarios: + - os-* + tests: + - neutron_tempest_plugin.api.admin.test_floating_ips_admin_actions.FloatingIPAdminTestJSON.test_associate_floating_ip_with_port_from_another_project + - neutron_tempest_plugin.api.admin.test_quotas.QuotasTest.test_detail_quotas + - neutron_tempest_plugin.api.admin.test_quotas.QuotasTest.test_quotas + - neutron_tempest_plugin.api.admin.test_quotas_negative.QuotasAdminNegativeTestJSON.test_create_floatingip_when_quotas_is_full + - neutron_tempest_plugin.api.admin.test_quotas_negative.QuotasAdminNegativeTestJSON.test_create_network_when_quotas_is_full + - neutron_tempest_plugin.api.admin.test_quotas_negative.QuotasAdminNegativeTestJSON.test_create_port_when_quotas_is_full + - neutron_tempest_plugin.api.admin.test_quotas_negative.QuotasAdminNegativeTestJSON.test_create_router_when_quotas_is_full + - neutron_tempest_plugin.api.admin.test_quotas_negative.QuotasAdminNegativeTestJSON.test_create_security_group_rule_when_quotas_is_full + - neutron_tempest_plugin.api.admin.test_quotas_negative.QuotasAdminNegativeTestJSON.test_create_security_group_when_quotas_is_full + - neutron_tempest_plugin.api.admin.test_quotas_negative.QuotasAdminNegativeTestJSON.test_create_subnet_when_quotas_is_full diff --git a/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml b/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml index b47a9736a..0ee4ab613 100644 --- a/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml +++ b/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml @@ -1,13 +1,104 @@ -# This is an empty configuration file to be filled up with the desired options -# to generate a custom tempest.conf -# Examples: -# network-feature-enabled: -# port_security: True - -# volume-feature-enabled: -# api_v1: False - -# validation: -# image_ssh_user: root -# ssh_timeout: 300 - +--- +compute: + min_microversion: '2.44' + max_microversion: latest +compute-feature-enabled: + attach_encrypted_volume: false + block_migration_for_live_migration: false + block_migrate_cinder_iscsi: false + change_password: false + cold_migration: true + config_drive: true + console_output: true + disk_config: true + enable_instance_password: true + hostname_fqdn_sanitization: true + interface_attach: true + live_migration: true + live_migrate_back_and_forth: false + metadata_service: true + pause: true + personality: false + rdp_console: false + rescue: true + resize: true + scheduler_available_filters: "AvailabilityZoneFilter,ComputeFilter,\ + ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,\ + ServerGroupAffinityFilter,SameHostFilter,DifferentHostFilter" + serial_console: false + shelve: true + snapshot: true + spice_console: false + suspend: true + swap_volume: false + vnc_console: true + volume_backed_live_migration: false + volume_multiattach: false +identity: + auth_version: v3 + user_unique_last_password_count: 2 + user_lockout_duration: 10 + user_lockout_failure_attempts: 2 +identity-feature-enabled: + trust: true + api_v2: false + api_v2_admin: false + security_compliance: true + federation: false + external_idp: false + project_tags: true + application_credentials: true + access_rules: true +image-feature-enabled: + api_v2: true + api_v1: false + import_image: false +network-feature-enabled: + port_admin_state_change: true + port_security: true +placement: + max_microversion: latest +validation: + image_ssh_user: cirros + ssh_timeout: 196 + ip_version_for_ssh: 4 + run_validation: true +volume: + max_microversion: latest + storage_protocol: ceph + manage_volume_ref: source-name,volume-%s + manage_snapshot_ref: source-name,snapshot-%s +volume-feature-enabled: + multi_backend: false + backup: true + snapshot: true + clone: true + manage_snapshot: true + manage_volume: true + extend_attached_volume: true + extend_attached_encrypted_volume: false + consistency_group: false + volume_revert: true +load_balancer: + test_with_ipv6: false +neutron_plugin_options: + agent_availability_zone: nova + available_type_drivers: flat,geneve,vlan,gre,local,vxlan + provider_vlans: public, + create_shared_resources: true +object-storage-feature-enabled: + discoverable_apis: "account_quotas,formpost,bulk_upload,bulk_delete,\ + tempurl,crossdomain,container_quotas,staticweb,account_quotas,slo" + object_versioning: true + discoverability: true + tempurl_digest_hashlib: sha1 +heat_plugin: + skip_functional_test_list: EncryptionVolTypeTest + skip_scenario_test_list: "AodhAlarmTest,SoftwareConfigIntegrationTest,\ + VolumeBackupRestoreIntegrationTest,CfnInitIntegrationTest,\ + LoadBalancerTest" + auth_version: 3 +heat_features_enabled: + multi_cloud: false +rbac: + enable_rbac: true diff --git a/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf_ovn.yaml b/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf_ovn.yaml new file mode 100644 index 000000000..6b09d8e5a --- /dev/null +++ b/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf_ovn.yaml @@ -0,0 +1,104 @@ +--- +compute: + min_microversion: '2.44' + max_microversion: latest +compute-feature-enabled: + attach_encrypted_volume: false + block_migration_for_live_migration: false + block_migrate_cinder_iscsi: false + change_password: false + cold_migration: true + config_drive: true + console_output: true + disk_config: true + enable_instance_password: true + hostname_fqdn_sanitization: true + interface_attach: true + live_migration: true + live_migrate_back_and_forth: false + metadata_service: true + pause: true + personality: false + rdp_console: false + rescue: true + resize: true + scheduler_available_filters: "AvailabilityZoneFilter,ComputeFilter,\ + ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,\ + ServerGroupAffinityFilter,SameHostFilter,DifferentHostFilter" + serial_console: false + shelve: true + snapshot: true + spice_console: false + suspend: true + swap_volume: false + vnc_console: true + volume_backed_live_migration: false + volume_multiattach: false +identity: + auth_version: v3 + user_unique_last_password_count: 2 + user_lockout_duration: 10 + user_lockout_failure_attempts: 2 +identity-feature-enabled: + trust: true + api_v2: false + api_v2_admin: false + security_compliance: true + federation: false + external_idp: false + project_tags: true + application_credentials: true + access_rules: true +image-feature-enabled: + api_v2: true + api_v1: false + import_image: false +network-feature-enabled: + port_admin_state_change: true + port_security: true +placement: + max_microversion: latest +validation: + image_ssh_user: cirros + ssh_timeout: 196 + ip_version_for_ssh: 4 + run_validation: true +volume: + max_microversion: latest + storage_protocol: ceph + manage_volume_ref: source-name,volume-%s + manage_snapshot_ref: source-name,snapshot-%s +volume-feature-enabled: + multi_backend: false + backup: true + snapshot: true + clone: true + manage_snapshot: true + manage_volume: true + extend_attached_volume: true + extend_attached_encrypted_volume: false + consistency_group: false + volume_revert: true +load_balancer: + test_with_ipv6: false +neutron_plugin_options: + agent_availability_zone: nova + available_type_drivers: flat,geneve,vlan,local + provider_vlans: public, + create_shared_resources: true +object-storage-feature-enabled: + discoverable_apis: "account_quotas,formpost,bulk_upload,bulk_delete,\ + tempurl,crossdomain,container_quotas,staticweb,account_quotas,slo" + object_versioning: true + discoverability: true + tempurl_digest_hashlib: sha1 +heat_plugin: + skip_functional_test_list: EncryptionVolTypeTest + skip_scenario_test_list: "AodhAlarmTest,SoftwareConfigIntegrationTest,\ + VolumeBackupRestoreIntegrationTest,CfnInitIntegrationTest,\ + LoadBalancerTest" + auth_version: 3 +heat_features_enabled: + multi_cloud: false +rbac: + enable_rbac: true diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py index 5481b13b1..7233ffd60 100644 --- a/functest/opnfv_tests/openstack/tempest/tempest.py +++ b/functest/opnfv_tests/openstack/tempest/tempest.py @@ -8,493 +8,767 @@ # http://www.apache.org/licenses/LICENSE-2.0 # +"""Tempest testcases implementation.""" + from __future__ import division +import json import logging import os import re import shutil import subprocess import time -import uuid +import pkg_resources +from six.moves import configparser +from xtesting.core import testcase import yaml -from functest.core import testcase -from functest.opnfv_tests.openstack.snaps import snaps_utils -from functest.opnfv_tests.openstack.tempest import conf_utils -from functest.utils.constants import CONST -import functest.utils.functest_utils as ft_utils +from functest.core import singlevm +from functest.opnfv_tests.openstack.rally import rally +from functest.utils import config +from functest.utils import env +from functest.utils import functest_utils + +LOGGER = logging.getLogger(__name__) + + +class TempestCommon(singlevm.VmReady2): + # pylint: disable=too-many-instance-attributes,too-many-public-methods + """TempestCommon testcases implementation class.""" + + visibility = 'public' + filename_alt = '/home/opnfv/functest/images/cirros-0.6.1-x86_64-disk.img' + shared_network = True + tempest_conf_yaml = pkg_resources.resource_filename( + 'functest', + 'opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml') + tempest_custom = pkg_resources.resource_filename( + 'functest', + 'opnfv_tests/openstack/tempest/custom_tests/test_list.txt') + tempest_blacklist = pkg_resources.resource_filename( + 'functest', + 'opnfv_tests/openstack/tempest/custom_tests/blacklist.yaml') + tempest_public_blacklist = pkg_resources.resource_filename( + 'functest', + 'opnfv_tests/openstack/tempest/custom_tests/public_blacklist.yaml') -from snaps.config.flavor import FlavorConfig -from snaps.config.network import NetworkConfig, SubnetConfig -from snaps.config.project import ProjectConfig -from snaps.config.user import UserConfig + def __init__(self, **kwargs): + if "case_name" not in kwargs: + kwargs["case_name"] = 'tempest' + super().__init__(**kwargs) + assert self.orig_cloud + assert self.cloud + assert self.project + if self.orig_cloud.get_role("admin"): + self.role_name = "admin" + elif self.orig_cloud.get_role("Admin"): + self.role_name = "Admin" + else: + raise Exception("Cannot detect neither admin nor Admin") + self.orig_cloud.grant_role( + self.role_name, user=self.project.user.id, + project=self.project.project.id, + domain=self.project.domain.id) + self.orig_cloud.grant_role( + self.role_name, user=self.project.user.id, + domain=self.project.domain.id) + self.deployment_id = None + self.verifier_id = None + self.verifier_repo_dir = None + self.deployment_dir = None + self.verification_id = None + self.res_dir = os.path.join( + getattr(config.CONF, 'dir_results'), self.case_name) + self.raw_list = os.path.join(self.res_dir, 'test_raw_list.txt') + self.list = os.path.join(self.res_dir, 'test_list.txt') + self.conf_file = None + self.image_alt = None + self.flavor_alt = None + self.services = [] + try: + self.services = kwargs['run']['args']['services'] + except Exception: # pylint: disable=broad-except + pass + self.neutron_extensions = [] + try: + self.neutron_extensions = kwargs['run']['args'][ + 'neutron_extensions'] + except Exception: # pylint: disable=broad-except + pass + self.deny_skipping = kwargs.get("deny_skipping", False) + self.tests_count = kwargs.get("tests_count", 0) + + def check_services(self): + """Check the mandatory services.""" + for service in self.services: + try: + self.cloud.search_services(service)[0] + except Exception: # pylint: disable=broad-except + self.is_skipped = True + break -from snaps.openstack import create_flavor -from snaps.openstack.create_flavor import OpenStackFlavor -from snaps.openstack.tests import openstack_tests -from snaps.openstack.utils import deploy_utils + def check_extensions(self): + """Check the mandatory network extensions.""" + extensions = self.cloud.get_network_extensions() + for network_extension in self.neutron_extensions: + if network_extension not in extensions: + LOGGER.warning( + "Cannot find Neutron extension: %s", network_extension) + self.is_skipped = True + break + def check_requirements(self): + self.check_services() + self.check_extensions() + if self.is_skipped: + self.project.clean() -""" logging configuration """ -logger = logging.getLogger(__name__) + @staticmethod + def read_file(filename): + """Read file and return content as a stripped list.""" + with open(filename, encoding='utf-8') as src: + return [line.strip() for line in src.readlines()] + @staticmethod + def get_verifier_result(verif_id): + """Retrieve verification results.""" + result = { + 'num_tests': 0, + 'num_success': 0, + 'num_failures': 0, + 'num_skipped': 0 + } + cmd = ["rally", "verify", "show", "--uuid", verif_id] + LOGGER.info("Showing result for a verification: '%s'.", cmd) + with subprocess.Popen( + cmd, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) as proc: + for line in proc.stdout: + LOGGER.info(line.decode("utf-8").rstrip()) + new_line = line.decode("utf-8").replace(' ', '').split('|') + if 'Tests' in new_line: + break + if 'Testscount' in new_line: + result['num_tests'] = int(new_line[2]) + elif 'Success' in new_line: + result['num_success'] = int(new_line[2]) + elif 'Skipped' in new_line: + result['num_skipped'] = int(new_line[2]) + elif 'Failures' in new_line: + result['num_failures'] = int(new_line[2]) + return result -class TempestCommon(testcase.TestCase): + @staticmethod + def backup_tempest_config(conf_file, res_dir): + """ + Copy config file to tempest results directory + """ + if not os.path.exists(res_dir): + os.makedirs(res_dir) + shutil.copyfile(conf_file, + os.path.join(res_dir, 'tempest.conf')) - def __init__(self, **kwargs): - super(TempestCommon, self).__init__(**kwargs) - self.resources = TempestResourcesManager(**kwargs) - self.MODE = "" - self.OPTION = "" - self.VERIFIER_ID = conf_utils.get_verifier_id() - self.VERIFIER_REPO_DIR = conf_utils.get_verifier_repo_dir( - self.VERIFIER_ID) - self.DEPLOYMENT_ID = conf_utils.get_verifier_deployment_id() - self.DEPLOYMENT_DIR = conf_utils.get_verifier_deployment_dir( - self.VERIFIER_ID, self.DEPLOYMENT_ID) - self.VERIFICATION_ID = None + @staticmethod + def create_verifier(): + """Create new verifier""" + LOGGER.info("Create verifier from existing repo...") + cmd = ['rally', 'verify', 'delete-verifier', + '--id', str(getattr(config.CONF, 'tempest_verifier_name')), + '--force'] + try: + output = subprocess.check_output(cmd) + LOGGER.info("%s\n%s", " ".join(cmd), output.decode("utf-8")) + except subprocess.CalledProcessError: + pass + + cmd = ['rally', 'verify', 'create-verifier', + '--source', str(getattr(config.CONF, 'dir_repo_tempest')), + '--name', str(getattr(config.CONF, 'tempest_verifier_name')), + '--type', 'tempest', '--system-wide'] + output = subprocess.check_output(cmd) + LOGGER.info("%s\n%s", " ".join(cmd), output.decode("utf-8")) + return TempestCommon.get_verifier_id() @staticmethod - def read_file(filename): - with open(filename) as src: - return [line.strip() for line in src.readlines()] + def get_verifier_id(): + """ + Returns verifier id for current Tempest + """ + cmd = ("rally verify list-verifiers | awk '/" + + getattr(config.CONF, 'tempest_verifier_name') + + "/ {print $2}'") + with subprocess.Popen( + cmd, shell=True, stdout=subprocess.PIPE, + stderr=subprocess.DEVNULL) as proc: + verifier_uuid = proc.stdout.readline().rstrip() + return verifier_uuid.decode("utf-8") - def generate_test_list(self, verifier_repo_dir): - logger.debug("Generating test case list...") - if self.MODE == 'defcore': - shutil.copyfile( - conf_utils.TEMPEST_DEFCORE, conf_utils.TEMPEST_RAW_LIST) - elif self.MODE == 'custom': - if os.path.isfile(conf_utils.TEMPEST_CUSTOM): + @staticmethod + def get_verifier_repo_dir(verifier_id): + """ + Returns installed verifier repo directory for Tempest + """ + return os.path.join(getattr(config.CONF, 'dir_rally_inst'), + 'verification', + f'verifier-{verifier_id}', + 'repo') + + @staticmethod + def get_verifier_deployment_dir(verifier_id, deployment_id): + """ + Returns Rally deployment directory for current verifier + """ + return os.path.join(getattr(config.CONF, 'dir_rally_inst'), + 'verification', + f'verifier-{verifier_id}', + f'for-deployment-{deployment_id}') + + @staticmethod + def update_tempest_conf_file(conf_file, rconfig): + """Update defined paramters into tempest config file""" + with open(TempestCommon.tempest_conf_yaml, encoding='utf-8') as yfile: + conf_yaml = yaml.safe_load(yfile) + if conf_yaml: + sections = rconfig.sections() + for section in conf_yaml: + if section not in sections: + rconfig.add_section(section) + sub_conf = conf_yaml.get(section) + for key, value in sub_conf.items(): + rconfig.set(section, key, value) + + with open(conf_file, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + + @staticmethod + def configure_tempest_update_params( + tempest_conf_file, image_id=None, flavor_id=None, + compute_cnt=1, image_alt_id=None, flavor_alt_id=None, + admin_role_name='admin', cidr='192.168.120.0/24', + domain_id='default'): + # pylint: disable=too-many-branches,too-many-arguments + # pylint: disable=too-many-statements,too-many-locals + """ + Add/update needed parameters into tempest.conf file + """ + LOGGER.debug("Updating selected tempest.conf parameters...") + rconfig = configparser.RawConfigParser() + rconfig.read(tempest_conf_file) + rconfig.set( + 'compute', 'volume_device_name', env.get('VOLUME_DEVICE_NAME')) + if image_id is not None: + rconfig.set('compute', 'image_ref', image_id) + if image_alt_id is not None: + rconfig.set('compute', 'image_ref_alt', image_alt_id) + if flavor_id is not None: + rconfig.set('compute', 'flavor_ref', flavor_id) + if flavor_alt_id is not None: + rconfig.set('compute', 'flavor_ref_alt', flavor_alt_id) + if compute_cnt > 1: + # enable multinode tests + rconfig.set('compute', 'min_compute_nodes', compute_cnt) + rconfig.set('compute-feature-enabled', 'live_migration', True) + if os.environ.get('OS_REGION_NAME'): + rconfig.set('identity', 'region', os.environ.get('OS_REGION_NAME')) + rconfig.set('identity', 'admin_role', admin_role_name) + rconfig.set('identity', 'default_domain_id', domain_id) + if not rconfig.has_section('network'): + rconfig.add_section('network') + rconfig.set('network', 'default_network', cidr) + rconfig.set('network', 'project_network_cidr', cidr) + rconfig.set('network', 'project_networks_reachable', False) + rconfig.set( + 'identity', 'v3_endpoint_type', + os.environ.get('OS_INTERFACE', 'public')) + + sections = rconfig.sections() + services_list = [ + 'compute', 'volume', 'image', 'network', 'data-processing', + 'object-storage', 'orchestration'] + for service in services_list: + if service not in sections: + rconfig.add_section(service) + rconfig.set(service, 'endpoint_type', + os.environ.get('OS_INTERFACE', 'public')) + + LOGGER.debug('Add/Update required params defined in tempest_conf.yaml ' + 'into tempest.conf file') + TempestCommon.update_tempest_conf_file(tempest_conf_file, rconfig) + + @staticmethod + def configure_verifier(deployment_dir): + """ + Execute rally verify configure-verifier, which generates tempest.conf + """ + cmd = ['rally', 'verify', 'configure-verifier', '--reconfigure', + '--id', str(getattr(config.CONF, 'tempest_verifier_name'))] + output = subprocess.check_output(cmd) + LOGGER.info("%s\n%s", " ".join(cmd), output.decode("utf-8")) + + LOGGER.debug("Looking for tempest.conf file...") + tempest_conf_file = os.path.join(deployment_dir, "tempest.conf") + if not os.path.isfile(tempest_conf_file): + LOGGER.error("Tempest configuration file %s NOT found.", + tempest_conf_file) + return None + return tempest_conf_file + + def generate_test_list(self, **kwargs): + """Generate test list based on the test mode.""" + LOGGER.debug("Generating test case list...") + self.backup_tempest_config(self.conf_file, '/etc') + if kwargs.get('mode') == 'custom': + if os.path.isfile(self.tempest_custom): shutil.copyfile( - conf_utils.TEMPEST_CUSTOM, conf_utils.TEMPEST_RAW_LIST) + self.tempest_custom, self.list) else: - raise Exception("Tempest test list file %s NOT found." - % conf_utils.TEMPEST_CUSTOM) + raise Exception( + f"Tempest test list file {self.tempest_custom} NOT found.") else: - if self.MODE == 'smoke': - testr_mode = "smoke" - elif self.MODE == 'full': - testr_mode = "" - else: - testr_mode = 'tempest.api.' + self.MODE - cmd = ("cd {0};" - "testr list-tests {1} > {2};" - "cd -;".format(verifier_repo_dir, - testr_mode, - conf_utils.TEMPEST_RAW_LIST)) - ft_utils.execute_command(cmd) - - def apply_tempest_blacklist(self): - logger.debug("Applying tempest blacklist...") - cases_file = self.read_file(conf_utils.TEMPEST_RAW_LIST) - result_file = open(conf_utils.TEMPEST_LIST, 'w') - black_tests = [] - try: - installer_type = CONST.__getattribute__('INSTALLER_TYPE') - deploy_scenario = CONST.__getattribute__('DEPLOY_SCENARIO') - if (bool(installer_type) * bool(deploy_scenario)): - # if INSTALLER_TYPE and DEPLOY_SCENARIO are set we read the - # file - black_list_file = open(conf_utils.TEMPEST_BLACKLIST) - black_list_yaml = yaml.safe_load(black_list_file) - black_list_file.close() - for item in black_list_yaml: - scenarios = item['scenarios'] - installers = item['installers'] - if (deploy_scenario in scenarios and - installer_type in installers): - tests = item['tests'] - for test in tests: - black_tests.append(test) - break - except Exception: + testr_mode = kwargs.get( + 'mode', r'^tempest\.(api|scenario).*\[.*\bsmoke\b.*\]$') + cmd = (f"(cd {self.verifier_repo_dir}; " + f"stestr list '{testr_mode}' > {self.list} 2>/dev/null)") + output = subprocess.check_output(cmd, shell=True) + LOGGER.info("%s\n%s", cmd, output.decode("utf-8")) + os.remove('/etc/tempest.conf') + + def apply_tempest_blacklist(self, black_list): + """Exclude blacklisted test cases.""" + LOGGER.debug("Applying tempest blacklist...") + if os.path.exists(self.raw_list): + os.remove(self.raw_list) + os.rename(self.list, self.raw_list) + cases_file = self.read_file(self.raw_list) + with open(self.list, 'w', encoding='utf-8') as result_file: black_tests = [] - logger.debug("Tempest blacklist file does not exist.") - - for cases_line in cases_file: - for black_tests_line in black_tests: - if black_tests_line in cases_line: - break - else: - result_file.write(str(cases_line) + '\n') - result_file.close() - - def run_verifier_tests(self): - self.OPTION += (" --load-list {} --detailed" - .format(conf_utils.TEMPEST_LIST)) - - cmd_line = "rally verify start " + self.OPTION - logger.info("Starting Tempest test suite: '%s'." % cmd_line) - - header = ("Tempest environment:\n" - " SUT: %s\n Scenario: %s\n Node: %s\n Date: %s\n" % - (CONST.__getattribute__('INSTALLER_TYPE'), - CONST.__getattribute__('DEPLOY_SCENARIO'), - CONST.__getattribute__('NODE_NAME'), - time.strftime("%a %b %d %H:%M:%S %Z %Y"))) - - f_stdout = open( - os.path.join(conf_utils.TEMPEST_RESULTS_DIR, "tempest.log"), 'w+') - f_stderr = open( - os.path.join(conf_utils.TEMPEST_RESULTS_DIR, - "tempest-error.log"), 'w+') - f_env = open(os.path.join(conf_utils.TEMPEST_RESULTS_DIR, - "environment.log"), 'w+') - f_env.write(header) - - p = subprocess.Popen( - cmd_line, shell=True, - stdout=subprocess.PIPE, - stderr=f_stderr, - bufsize=1) - - with p.stdout: - for line in iter(p.stdout.readline, b''): - if re.search("\} tempest\.", line): - logger.info(line.replace('\n', '')) - elif re.search('Starting verification', line): - logger.info(line.replace('\n', '')) - first_pos = line.index("UUID=") + len("UUID=") - last_pos = line.index(") for deployment") - self.VERIFICATION_ID = line[first_pos:last_pos] - logger.debug('Verification UUID: %s', self.VERIFICATION_ID) - f_stdout.write(line) - p.wait() - - f_stdout.close() - f_stderr.close() - f_env.close() - - def parse_verifier_result(self): - if self.VERIFICATION_ID is None: + try: + deploy_scenario = env.get('DEPLOY_SCENARIO') + if bool(deploy_scenario): + # if DEPLOY_SCENARIO is set we read the file + with open(black_list, encoding='utf-8') as black_list_file: + black_list_yaml = yaml.safe_load(black_list_file) + black_list_file.close() + for item in black_list_yaml: + scenarios = item['scenarios'] + in_it = rally.RallyBase.in_iterable_re + if in_it(deploy_scenario, scenarios): + tests = item['tests'] + black_tests.extend(tests) + except Exception: # pylint: disable=broad-except + black_tests = [] + LOGGER.debug("Tempest blacklist file does not exist.") + + for cases_line in cases_file: + for black_tests_line in black_tests: + if re.search(black_tests_line, cases_line): + break + else: + result_file.write(str(cases_line) + '\n') + + def run_verifier_tests(self, **kwargs): + """Execute tempest test cases.""" + cmd = ["rally", "verify", "start", "--load-list", + self.list] + cmd.extend(kwargs.get('option', [])) + LOGGER.info("Starting Tempest test suite: '%s'.", cmd) + + with open( + os.path.join(self.res_dir, "tempest.log"), 'w+', + encoding='utf-8') as f_stdout: + with subprocess.Popen( + cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, + bufsize=1) as proc: + with proc.stdout: + for line in iter(proc.stdout.readline, b''): + if re.search(r"\} tempest\.", line.decode("utf-8")): + LOGGER.info(line.rstrip()) + elif re.search(r'(?=\(UUID=(.*)\))', + line.decode("utf-8")): + self.verification_id = re.search( + r'(?=\(UUID=(.*)\))', + line.decode("utf-8")).group(1) + f_stdout.write(line.decode("utf-8")) + proc.wait() + + if self.verification_id is None: raise Exception('Verification UUID not found') + LOGGER.info('Verification UUID: %s', self.verification_id) - cmd_line = "rally verify show --uuid {}".format(self.VERIFICATION_ID) - logger.info("Showing result for a verification: '%s'." % cmd_line) - p = subprocess.Popen(cmd_line, - shell=True, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - for line in p.stdout: - new_line = line.replace(' ', '').split('|') - if 'Tests' in new_line: - break - - logger.info(line) - if 'Testscount' in new_line: - num_tests = new_line[2] - elif 'Success' in new_line: - num_success = new_line[2] - elif 'Skipped' in new_line: - num_skipped = new_line[2] - elif 'Failures' in new_line: - num_failures = new_line[2] + shutil.copy( + f"{self.deployment_dir}/tempest.log", + f"{self.res_dir}/tempest.debug.log") + def parse_verifier_result(self): + """Parse and save test results.""" + stat = self.get_verifier_result(self.verification_id) try: - num_executed = int(num_tests) - int(num_skipped) + num_executed = stat['num_tests'] - stat['num_skipped'] try: - self.result = 100 * int(num_success) / int(num_executed) + self.result = 100 * stat['num_success'] / num_executed except ZeroDivisionError: self.result = 0 - if int(num_tests) > 0: - logger.info("All tests have been skipped") + if stat['num_tests'] > 0: + LOGGER.info("All tests have been skipped") else: - logger.error("No test has been executed") + LOGGER.error("No test has been executed") return - with open(os.path.join(conf_utils.TEMPEST_RESULTS_DIR, - "tempest.log"), 'r') as logfile: + with open(os.path.join(self.res_dir, "rally.log"), + 'r', encoding='utf-8') as logfile: output = logfile.read() success_testcases = [] - for match in re.findall('.*\{0\} (.*?)[. ]*success ', output): + for match in re.findall(r'.*\{\d{1,2}\} (.*?) \.{3} success ', + output): success_testcases.append(match) failed_testcases = [] - for match in re.findall('.*\{0\} (.*?)[. ]*fail ', output): + for match in re.findall(r'.*\{\d{1,2}\} (.*?) \.{3} fail', + output): failed_testcases.append(match) skipped_testcases = [] - for match in re.findall('.*\{0\} (.*?)[. ]*skip:', output): + for match in re.findall(r'.*\{\d{1,2}\} (.*?) \.{3} skip(?::| )', + output): skipped_testcases.append(match) - self.details = {"tests": int(num_tests), - "failures": int(num_failures), + self.details = {"tests_number": stat['num_tests'], + "success_number": stat['num_success'], + "skipped_number": stat['num_skipped'], + "failures_number": stat['num_failures'], "success": success_testcases, - "errors": failed_testcases, - "skipped": skipped_testcases} - except Exception: + "skipped": skipped_testcases, + "failures": failed_testcases} + except Exception: # pylint: disable=broad-except self.result = 0 - logger.info("Tempest %s success_rate is %s%%" - % (self.case_name, self.result)) + LOGGER.info("Tempest %s success_rate is %s%%", + self.case_name, self.result) + + def update_rally_regex(self, rally_conf='/etc/rally/rally.conf'): + """Set image name as tempest img_name_regex""" + rconfig = configparser.RawConfigParser() + rconfig.read(rally_conf) + if not rconfig.has_section('openstack'): + rconfig.add_section('openstack') + rconfig.set('openstack', 'img_name_regex', f'^{self.image.name}$') + with open(rally_conf, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + + def update_default_role(self, rally_conf='/etc/rally/rally.conf'): + """Detect and update the default role if required""" + role = self.get_default_role(self.cloud) + if not role: + return + rconfig = configparser.RawConfigParser() + rconfig.read(rally_conf) + if not rconfig.has_section('openstack'): + rconfig.add_section('openstack') + rconfig.set('openstack', 'swift_operator_role', role.name) + with open(rally_conf, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) - def run(self): + @staticmethod + def clean_rally_conf(rally_conf='/etc/rally/rally.conf'): + """Clean Rally config""" + rconfig = configparser.RawConfigParser() + rconfig.read(rally_conf) + if rconfig.has_option('openstack', 'img_name_regex'): + rconfig.remove_option('openstack', 'img_name_regex') + if rconfig.has_option('openstack', 'swift_operator_role'): + rconfig.remove_option('openstack', 'swift_operator_role') + with open(rally_conf, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + + def update_auth_section(self): + """Update auth section in tempest.conf""" + rconfig = configparser.RawConfigParser() + rconfig.read(self.conf_file) + if not rconfig.has_section("auth"): + rconfig.add_section("auth") + if env.get("NEW_USER_ROLE").lower() != "member": + tempest_roles = [] + if rconfig.has_option("auth", "tempest_roles"): + tempest_roles = functest_utils.convert_ini_to_list( + rconfig.get("auth", "tempest_roles")) + rconfig.set( + 'auth', 'tempest_roles', + functest_utils.convert_list_to_ini( + [env.get("NEW_USER_ROLE")] + tempest_roles)) + if not json.loads(env.get("USE_DYNAMIC_CREDENTIALS").lower()): + rconfig.set('auth', 'use_dynamic_credentials', False) + account_file = os.path.join( + getattr(config.CONF, 'dir_functest_data'), 'accounts.yaml') + assert os.path.exists( + account_file), f"{account_file} doesn't exist" + rconfig.set('auth', 'test_accounts_file', account_file) + if env.get('NO_TENANT_NETWORK').lower() == 'true': + rconfig.set('auth', 'create_isolated_networks', False) + with open(self.conf_file, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + + def update_network_section(self): + """Update network section in tempest.conf""" + rconfig = configparser.RawConfigParser() + rconfig.read(self.conf_file) + if self.ext_net: + if not rconfig.has_section('network'): + rconfig.add_section('network') + rconfig.set('network', 'public_network_id', self.ext_net.id) + rconfig.set('network', 'floating_network_name', self.ext_net.name) + rconfig.set('network-feature-enabled', 'floating_ips', True) + else: + if not rconfig.has_section('network-feature-enabled'): + rconfig.add_section('network-feature-enabled') + rconfig.set('network-feature-enabled', 'floating_ips', False) + with open(self.conf_file, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + + def update_compute_section(self): + """Update compute section in tempest.conf""" + rconfig = configparser.RawConfigParser() + rconfig.read(self.conf_file) + if not rconfig.has_section('compute'): + rconfig.add_section('compute') + rconfig.set( + 'compute', 'fixed_network_name', + self.network.name if self.network else env.get("EXTERNAL_NETWORK")) + with open(self.conf_file, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + + def update_validation_section(self): + """Update validation section in tempest.conf""" + rconfig = configparser.RawConfigParser() + rconfig.read(self.conf_file) + if not rconfig.has_section('validation'): + rconfig.add_section('validation') + rconfig.set( + 'validation', 'connect_method', + 'floating' if self.ext_net else 'fixed') + rconfig.set( + 'validation', 'network_for_ssh', + self.network.name if self.network else env.get("EXTERNAL_NETWORK")) + with open(self.conf_file, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + + def update_scenario_section(self): + """Update scenario section in tempest.conf""" + rconfig = configparser.RawConfigParser() + rconfig.read(self.conf_file) + filename = getattr( + config.CONF, f'{self.case_name}_image', self.filename) + if not rconfig.has_section('scenario'): + rconfig.add_section('scenario') + rconfig.set('scenario', 'img_file', filename) + rconfig.set('scenario', 'img_disk_format', getattr( + config.CONF, f'{self.case_name}_image_format', + self.image_format)) + extra_properties = self.extra_properties.copy() + if env.get('IMAGE_PROPERTIES'): + extra_properties.update( + functest_utils.convert_ini_to_dict( + env.get('IMAGE_PROPERTIES'))) + extra_properties.update( + getattr(config.CONF, f'{self.case_name}_extra_properties', {})) + rconfig.set( + 'scenario', 'img_properties', + functest_utils.convert_dict_to_ini(extra_properties)) + with open(self.conf_file, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + + def update_dashboard_section(self): + """Update dashboard section in tempest.conf""" + rconfig = configparser.RawConfigParser() + rconfig.read(self.conf_file) + if env.get('DASHBOARD_URL'): + if not rconfig.has_section('dashboard'): + rconfig.add_section('dashboard') + rconfig.set('dashboard', 'dashboard_url', env.get('DASHBOARD_URL')) + else: + rconfig.set('service_available', 'horizon', False) + with open(self.conf_file, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + def configure(self, **kwargs): # pylint: disable=unused-argument + """ + Create all openstack resources for tempest-based testcases and write + tempest.conf. + """ + if not os.path.exists(self.res_dir): + os.makedirs(self.res_dir) + self.deployment_id = rally.RallyBase.create_rally_deployment( + environ=self.project.get_environ()) + if not self.deployment_id: + raise Exception("Deployment create failed") + self.verifier_id = self.create_verifier() + if not self.verifier_id: + raise Exception("Verifier create failed") + self.verifier_repo_dir = self.get_verifier_repo_dir( + self.verifier_id) + self.deployment_dir = self.get_verifier_deployment_dir( + self.verifier_id, self.deployment_id) + + compute_cnt = self.count_hypervisors() if self.count_hypervisors( + ) <= 10 else 10 + self.image_alt = self.publish_image_alt() + self.flavor_alt = self.create_flavor_alt() + LOGGER.debug("flavor: %s", self.flavor_alt) + + self.conf_file = self.configure_verifier(self.deployment_dir) + if not self.conf_file: + raise Exception("Tempest verifier configuring failed") + self.configure_tempest_update_params( + self.conf_file, + image_id=self.image.id, + flavor_id=self.flavor.id, + compute_cnt=compute_cnt, + image_alt_id=self.image_alt.id, + flavor_alt_id=self.flavor_alt.id, + admin_role_name=self.role_name, cidr=self.cidr, + domain_id=self.project.domain.id) + self.update_auth_section() + self.update_network_section() + self.update_compute_section() + self.update_validation_section() + self.update_scenario_section() + self.update_dashboard_section() + self.backup_tempest_config(self.conf_file, self.res_dir) + + def run(self, **kwargs): self.start_time = time.time() try: - if not os.path.exists(conf_utils.TEMPEST_RESULTS_DIR): - os.makedirs(conf_utils.TEMPEST_RESULTS_DIR) - resources = self.resources.create() - compute_cnt = snaps_utils.get_active_compute_cnt( - self.resources.os_creds) - conf_utils.configure_tempest( - self.DEPLOYMENT_DIR, - image_id=resources.get("image_id"), - flavor_id=resources.get("flavor_id"), - compute_cnt=compute_cnt) - self.generate_test_list(self.VERIFIER_REPO_DIR) - self.apply_tempest_blacklist() - self.run_verifier_tests() + assert super().run( + **kwargs) == testcase.TestCase.EX_OK + if not os.path.exists(self.res_dir): + os.makedirs(self.res_dir) + self.update_rally_regex() + self.update_default_role() + rally.RallyBase.update_rally_logs(self.res_dir) + shutil.copy("/etc/rally/rally.conf", self.res_dir) + self.configure(**kwargs) + self.generate_test_list(**kwargs) + self.apply_tempest_blacklist(TempestCommon.tempest_blacklist) + if env.get('PUBLIC_ENDPOINT_ONLY').lower() == 'true': + self.apply_tempest_blacklist( + TempestCommon.tempest_public_blacklist) + self.run_verifier_tests(**kwargs) self.parse_verifier_result() + rally.RallyBase.verify_report( + os.path.join(self.res_dir, "tempest-report.html"), + self.verification_id) + rally.RallyBase.verify_report( + os.path.join(self.res_dir, "tempest-report.xml"), + self.verification_id, "junit-xml") res = testcase.TestCase.EX_OK - except Exception as e: - logger.error('Error with run: %s' % e) + except Exception: # pylint: disable=broad-except + LOGGER.exception('Error with run') + self.result = 0 res = testcase.TestCase.EX_RUN_ERROR - finally: - self.resources.cleanup() - self.stop_time = time.time() return res - -class TempestSmokeSerial(TempestCommon): - - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = 'tempest_smoke_serial' - TempestCommon.__init__(self, **kwargs) - self.MODE = "smoke" - self.OPTION = "--concurrency 1" - - -class TempestSmokeParallel(TempestCommon): - - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = 'tempest_smoke_parallel' - TempestCommon.__init__(self, **kwargs) - self.MODE = "smoke" - self.OPTION = "" - - -class TempestFullParallel(TempestCommon): - - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = 'tempest_full_parallel' - TempestCommon.__init__(self, **kwargs) - self.MODE = "full" - - -class TempestCustom(TempestCommon): - - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = 'tempest_custom' - TempestCommon.__init__(self, **kwargs) - self.MODE = "custom" - self.OPTION = "--concurrency 1" - - -class TempestDefcore(TempestCommon): - - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = 'tempest_defcore' - TempestCommon.__init__(self, **kwargs) - self.MODE = "defcore" - self.OPTION = "--concurrency 1" - - -class TempestResourcesManager(object): + def clean(self): + """ + Cleanup all OpenStack objects. Should be called on completion. + """ + self.clean_rally_conf() + rally.RallyBase.clean_rally_logs() + if self.image_alt: + self.cloud.delete_image(self.image_alt) + if self.flavor_alt: + self.orig_cloud.delete_flavor(self.flavor_alt.id) + super().clean() + + def is_successful(self): + """The overall result of the test.""" + skips = self.details.get("skipped_number", 0) + if skips > 0 and self.deny_skipping: + return testcase.TestCase.EX_TESTCASE_FAILED + if self.tests_count and ( + self.details.get("tests_number", 0) != self.tests_count): + return testcase.TestCase.EX_TESTCASE_FAILED + return super().is_successful() + + +class TempestHeat(TempestCommon): + """Tempest Heat testcase implementation class.""" + + filename_alt = ('/home/opnfv/functest/images/' + 'Fedora-Cloud-Base-30-1.2.x86_64.qcow2') + flavor_alt_ram = 512 + flavor_alt_vcpus = 1 + flavor_alt_disk = 4 def __init__(self, **kwargs): - self.os_creds = None - if 'os_creds' in kwargs: - self.os_creds = kwargs['os_creds'] + super().__init__(**kwargs) + self.user2 = self.orig_cloud.create_user( + name=f'{self.case_name}-user2_{self.project.guid}', + password=self.project.password, + domain_id=self.project.domain.id) + self.orig_cloud.grant_role( + self.role_name, user=self.user2.id, + project=self.project.project.id, domain=self.project.domain.id) + if not self.orig_cloud.get_role("heat_stack_owner"): + self.role = self.orig_cloud.create_role("heat_stack_owner") + self.orig_cloud.grant_role( + "heat_stack_owner", user=self.user2.id, + project=self.project.project.id, + domain=self.project.domain.id) + + def configure(self, **kwargs): + assert self.user2 + super().configure(**kwargs) + rconfig = configparser.RawConfigParser() + rconfig.read(self.conf_file) + if not rconfig.has_section('heat_plugin'): + rconfig.add_section('heat_plugin') + # It fails if region and domain ids are unset + rconfig.set( + 'heat_plugin', 'region', + os.environ.get('OS_REGION_NAME', 'RegionOne')) + rconfig.set('heat_plugin', 'auth_url', os.environ["OS_AUTH_URL"]) + rconfig.set('heat_plugin', 'project_domain_id', self.project.domain.id) + rconfig.set('heat_plugin', 'user_domain_id', self.project.domain.id) + rconfig.set( + 'heat_plugin', 'project_domain_name', self.project.domain.name) + rconfig.set( + 'heat_plugin', 'user_domain_name', self.project.domain.name) + rconfig.set('heat_plugin', 'username', self.user2.name) + rconfig.set('heat_plugin', 'password', self.project.password) + rconfig.set('heat_plugin', 'project_name', self.project.project.name) + rconfig.set('heat_plugin', 'admin_username', self.project.user.name) + rconfig.set('heat_plugin', 'admin_password', self.project.password) + rconfig.set( + 'heat_plugin', 'admin_project_name', self.project.project.name) + rconfig.set('heat_plugin', 'image_ref', self.image_alt.id) + rconfig.set('heat_plugin', 'instance_type', self.flavor_alt.id) + rconfig.set('heat_plugin', 'minimal_image_ref', self.image.id) + rconfig.set('heat_plugin', 'minimal_instance_type', self.flavor.id) + if self.ext_net: + rconfig.set( + 'heat_plugin', 'floating_network_name', self.ext_net.name) + if self.network: + rconfig.set('heat_plugin', 'fixed_network_name', self.network.name) + rconfig.set('heat_plugin', 'fixed_subnet_name', self.subnet.name) + rconfig.set('heat_plugin', 'network_for_ssh', self.network.name) else: - self.os_creds = openstack_tests.get_credentials( - os_env_file=CONST.__getattribute__('openstack_creds')) - - self.guid = '-' + str(uuid.uuid4()) - - self.creators = list() - - if hasattr(CONST, 'snaps_images_cirros'): - self.cirros_image_config = CONST.__getattribute__( - 'snaps_images_cirros') - else: - self.cirros_image_config = None - - def create(self, use_custom_images=False, use_custom_flavors=False, - create_project=False): - if create_project: - logger.debug("Creating project (tenant) for Tempest suite") - project_name = CONST.__getattribute__( - 'tempest_identity_tenant_name') + self.guid - project_creator = deploy_utils.create_project( - self.os_creds, ProjectConfig( - name=project_name, - description=CONST.__getattribute__( - 'tempest_identity_tenant_description'))) - if (project_creator is None or - project_creator.get_project() is None): - raise Exception("Failed to create tenant") - project_id = project_creator.get_project().id - self.creators.append(project_creator) - - logger.debug("Creating user for Tempest suite") - user_creator = deploy_utils.create_user( - self.os_creds, UserConfig( - name=CONST.__getattribute__( - 'tempest_identity_user_name') + self.guid, - password=CONST.__getattribute__( - 'tempest_identity_user_password'), - project_name=project_name)) - if user_creator is None or user_creator.get_user() is None: - raise Exception("Failed to create user") - user_id = user_creator.get_user().id - self.creators.append(user_creator) - else: - project_name = None - project_id = None - user_id = None - - logger.debug("Creating private network for Tempest suite") - - tempest_network_type = None - tempest_physical_network = None - tempest_segmentation_id = None - - if hasattr(CONST, 'tempest_network_type'): - tempest_network_type = CONST.__getattribute__( - 'tempest_network_type') - if hasattr(CONST, 'tempest_physical_network'): - tempest_physical_network = CONST.__getattribute__( - 'tempest_physical_network') - if hasattr(CONST, 'tempest_segmentation_id'): - tempest_segmentation_id = CONST.__getattribute__( - 'tempest_segmentation_id') - - network_creator = deploy_utils.create_network( - self.os_creds, NetworkConfig( - name=CONST.__getattribute__( - 'tempest_private_net_name') + self.guid, - project_name=project_name, - network_type=tempest_network_type, - physical_network=tempest_physical_network, - segmentation_id=tempest_segmentation_id, - subnet_settings=[SubnetConfig( - name=CONST.__getattribute__( - 'tempest_private_subnet_name') + self.guid, - cidr=CONST.__getattribute__('tempest_private_subnet_cidr')) - ])) - if network_creator is None or network_creator.get_network() is None: - raise Exception("Failed to create private network") - self.creators.append(network_creator) - - image_id = None - image_id_alt = None - flavor_id = None - flavor_id_alt = None - - logger.debug("Creating image for Tempest suite") - image_base_name = CONST.__getattribute__( - 'openstack_image_name') + self.guid - os_image_settings = openstack_tests.cirros_image_settings( - image_base_name, public=True, - image_metadata=self.cirros_image_config) - logger.debug("Creating image for Tempest suite") - image_creator = deploy_utils.create_image( - self.os_creds, os_image_settings) - if image_creator is None: - raise Exception('Failed to create image') - self.creators.append(image_creator) - image_id = image_creator.get_image().id - - if use_custom_images: - logger.debug("Creating 2nd image for Tempest suite") - image_base_name_alt = CONST.__getattribute__( - 'openstack_image_name_alt') + self.guid - os_image_settings_alt = openstack_tests.cirros_image_settings( - image_base_name_alt, public=True, - image_metadata=self.cirros_image_config) - logger.debug("Creating 2nd image for Tempest suite") - image_creator_alt = deploy_utils.create_image( - self.os_creds, os_image_settings_alt) - if image_creator_alt is None: - raise Exception('Failed to create image') - self.creators.append(image_creator_alt) - image_id_alt = image_creator_alt.get_image().id - - if (CONST.__getattribute__('tempest_use_custom_flavors') == 'True' or - use_custom_flavors): - logger.info("Creating flavor for Tempest suite") - scenario = CONST.__getattribute__('DEPLOY_SCENARIO') - flavor_metadata = None - if 'ovs' in scenario or 'fdio' in scenario: - flavor_metadata = create_flavor.MEM_PAGE_SIZE_LARGE - flavor_creator = OpenStackFlavor( - self.os_creds, FlavorConfig( - name=CONST.__getattribute__( - 'openstack_flavor_name') + self.guid, - ram=CONST.__getattribute__('openstack_flavor_ram'), - disk=CONST.__getattribute__('openstack_flavor_disk'), - vcpus=CONST.__getattribute__('openstack_flavor_vcpus'), - metadata=flavor_metadata)) - flavor = flavor_creator.create() - if flavor is None: - raise Exception('Failed to create flavor') - self.creators.append(flavor_creator) - flavor_id = flavor.id - - if use_custom_flavors: - logger.info("Creating 2nd flavor for Tempest suite") - scenario = CONST.__getattribute__('DEPLOY_SCENARIO') - flavor_metadata_alt = None - if 'ovs' in scenario or 'fdio' in scenario: - flavor_metadata_alt = create_flavor.MEM_PAGE_SIZE_LARGE - CONST.__setattr__('openstack_flavor_ram', 1024) - flavor_creator_alt = OpenStackFlavor( - self.os_creds, FlavorConfig( - name=CONST.__getattribute__( - 'openstack_flavor_name_alt') + self.guid, - ram=CONST.__getattribute__('openstack_flavor_ram'), - disk=CONST.__getattribute__('openstack_flavor_disk'), - vcpus=CONST.__getattribute__('openstack_flavor_vcpus'), - metadata=flavor_metadata_alt)) - flavor_alt = flavor_creator_alt.create() - if flavor_alt is None: - raise Exception('Failed to create flavor') - self.creators.append(flavor_creator_alt) - flavor_id_alt = flavor_alt.id - - print("RESOURCES CREATE: image_id: %s, image_id_alt: %s, " - "flavor_id: %s, flavor_id_alt: %s" % ( - image_id, image_id_alt, flavor_id, flavor_id_alt,)) - - result = { - 'image_id': image_id, - 'image_id_alt': image_id_alt, - 'flavor_id': flavor_id, - 'flavor_id_alt': flavor_id_alt - } - - if create_project: - result['project_id'] = project_id - result['tenant_id'] = project_id # for compatibility - result['user_id'] = user_id - - return result - - def cleanup(self): + LOGGER.warning( + 'No tenant network created. ' + 'Trying EXTERNAL_NETWORK as a fallback') + rconfig.set( + 'heat_plugin', 'fixed_network_name', + env.get("EXTERNAL_NETWORK")) + rconfig.set( + 'heat_plugin', 'network_for_ssh', env.get("EXTERNAL_NETWORK")) + with open(self.conf_file, 'w', encoding='utf-8') as config_file: + rconfig.write(config_file) + self.backup_tempest_config(self.conf_file, self.res_dir) + + def clean(self): """ Cleanup all OpenStack objects. Should be called on completion. """ - for creator in reversed(self.creators): - try: - creator.clean() - except Exception as e: - logger.error('Unexpected error cleaning - %s', e) + super().clean() + if self.user2: + self.orig_cloud.delete_user(self.user2.id) diff --git a/functest/opnfv_tests/openstack/vmtp/__init__.py b/functest/opnfv_tests/openstack/vmtp/__init__.py new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/functest/opnfv_tests/openstack/vmtp/__init__.py diff --git a/functest/opnfv_tests/openstack/vmtp/vmtp.py b/functest/opnfv_tests/openstack/vmtp/vmtp.py new file mode 100644 index 000000000..9833cc72a --- /dev/null +++ b/functest/opnfv_tests/openstack/vmtp/vmtp.py @@ -0,0 +1,213 @@ +#!/usr/bin/env python + +# Copyright (c) 2018 Orange and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +""" +VMTP_ is a small python application that will automatically perform ping +connectivity, round trip time measurement (latency) and TCP/UDP throughput +measurement for the following East/West flows on any OpenStack deployment: + +- VM to VM same network (private fixed IP, flow #1) +- VM to VM different network using fixed IP (same as intra-tenant L3 fixed IP, + flow #2) +- VM to VM different network using floating IP and NAT (same as floating IP + inter-tenant L3, flow #3) + +.. _VMTP: http://vmtp.readthedocs.io/en/latest/ +""" + +import json +import logging +import os +import subprocess +import tempfile +import time +import yaml + +from xtesting.core import testcase + +from functest.core import singlevm +from functest.utils import env +from functest.utils import functest_utils + + +class Vmtp(singlevm.VmReady2): + """Class to run Vmtp_ as an OPNFV Functest testcase + + .. _Vmtp: http://vmtp.readthedocs.io/en/latest/ + """ + # pylint: disable=too-many-instance-attributes + + __logger = logging.getLogger(__name__) + + filename = ('/home/opnfv/functest/images/' + 'ubuntu-14.04-server-cloudimg-amd64-disk1.img') + flavor_ram = 2048 + flavor_vcpus = 1 + flavor_disk = 0 + create_server_timeout = 300 + ssh_retry_timeout = 240 + + def __init__(self, **kwargs): + if "case_name" not in kwargs: + kwargs["case_name"] = 'vmtp' + super().__init__(**kwargs) + self.config = f"{self.res_dir}/vmtp.conf" + (_, self.privkey_filename) = tempfile.mkstemp() + (_, self.pubkey_filename) = tempfile.mkstemp() + + def check_requirements(self): + if self.count_hypervisors() < 2: + self.__logger.warning("Vmtp requires at least 2 hypervisors") + self.is_skipped = True + self.project.clean() + + def create_network_resources(self): + """Create router + + It creates a router which gateway is the external network detected. + + Raises: expection on error + """ + assert self.cloud + assert self.ext_net + self.router = self.cloud.create_router( + name=f'{self.case_name}-router_{self.guid}', + ext_gateway_net_id=self.ext_net.id) + self.__logger.debug("router: %s", self.router) + + def generate_keys(self): + """Generate Keys + + Raises: Exception on error + """ + assert self.cloud + name = f"vmtp_{self.guid}" + self.__logger.info("Creating keypair with name: '%s'", name) + keypair = self.cloud.create_keypair(name) + self.__logger.debug("keypair: %s", keypair) + with open(self.privkey_filename, 'w', encoding='utf-8') as key_file: + key_file.write(keypair.private_key) + with open(self.pubkey_filename, 'w', encoding='utf-8') as key_file: + key_file.write(keypair.public_key) + self.cloud.delete_keypair(keypair.id) + + def write_config(self): + """Write vmtp.conf + + Raises: Exception on error + """ + assert self.cloud + if not os.path.exists(self.res_dir): + os.makedirs(self.res_dir) + cmd = ['vmtp', '-sc'] + output = subprocess.check_output(cmd).decode("utf-8") + self.__logger.info("%s\n%s", " ".join(cmd), output) + with open(self.config, "w+", encoding='utf-8') as conf: + vmtp_conf = yaml.full_load(output) + vmtp_conf["private_key_file"] = self.privkey_filename + vmtp_conf["public_key_file"] = self.pubkey_filename + vmtp_conf["image_name"] = str(self.image.name) + vmtp_conf["router_name"] = str(self.router.name) + vmtp_conf["flavor_type"] = str(self.flavor.name) + vmtp_conf["internal_network_name"] = [ + f"pns-internal-net_{self.guid}", + f"pns-internal-net2_{self.guid}"] + vmtp_conf["vm_name_client"] = f"TestClient_{self.guid}" + vmtp_conf["vm_name_server"] = f"TestServer_{self.guid}" + vmtp_conf["security_group_name"] = f"pns-security{self.guid}" + vmtp_conf["dns_nameservers"] = [env.get('NAMESERVER')] + vmtp_conf["generic_retry_count"] = self.create_server_timeout // 2 + vmtp_conf["ssh_retry_count"] = self.ssh_retry_timeout // 2 + conf.write(yaml.dump(vmtp_conf)) + + def run_vmtp(self): + # pylint: disable=unexpected-keyword-arg + """Run Vmtp and generate charts + + Raises: Exception on error + """ + assert self.cloud + new_env = dict( + os.environ, + OS_USERNAME=self.project.user.name, + OS_PROJECT_NAME=self.project.project.name, + OS_PROJECT_ID=self.project.project.id, + OS_PROJECT_DOMAIN_NAME=self.project.domain.name, + OS_USER_DOMAIN_NAME=self.project.domain.name, + OS_PASSWORD=self.project.password) + if not new_env["OS_AUTH_URL"].endswith(('v3', 'v3/')): + new_env["OS_AUTH_URL"] = f'{new_env["OS_AUTH_URL"]}/v3' + try: + del new_env['OS_TENANT_NAME'] + del new_env['OS_TENANT_ID'] + except Exception: # pylint: disable=broad-except + pass + cmd = ['vmtp', '-d', '--json', f'{self.res_dir}/vmtp.json', + '-c', self.config] + if env.get("VMTP_HYPERVISORS"): + hypervisors = functest_utils.convert_ini_to_list( + env.get("VMTP_HYPERVISORS")) + for hypervisor in hypervisors: + cmd.extend(["--hypervisor", hypervisor]) + self.__logger.debug("cmd: %s", cmd) + output = subprocess.check_output( + cmd, stderr=subprocess.STDOUT, env=new_env).decode("utf-8") + self.__logger.info("%s\n%s", " ".join(cmd), output) + cmd = ['vmtp_genchart', '-c', f'{self.res_dir}/vmtp.html', + f'{self.res_dir}/vmtp.json'] + output = subprocess.check_output( + cmd, stderr=subprocess.STDOUT).decode("utf-8") + self.__logger.info("%s\n%s", " ".join(cmd), output) + with open(f'{self.res_dir}/vmtp.json', 'r', + encoding='utf-8') as res_file: + self.details = json.load(res_file) + + def run(self, **kwargs): + self.start_time = time.time() + status = testcase.TestCase.EX_RUN_ERROR + try: + assert self.cloud + assert super().run(**kwargs) == self.EX_OK + status = testcase.TestCase.EX_RUN_ERROR + if self.orig_cloud.get_role("admin"): + role_name = "admin" + elif self.orig_cloud.get_role("Admin"): + role_name = "Admin" + else: + raise Exception("Cannot detect neither admin nor Admin") + self.orig_cloud.grant_role( + role_name, user=self.project.user.id, + project=self.project.project.id, + domain=self.project.domain.id) + self.generate_keys() + self.write_config() + self.run_vmtp() + self.result = 100 + status = testcase.TestCase.EX_OK + except subprocess.CalledProcessError as cpe: + self.__logger.error( + "Exception when calling %s\n%s", cpe.cmd, + cpe.output.decode("utf-8")) + self.result = 0 + except Exception: # pylint: disable=broad-except + self.__logger.exception("Cannot run vmtp") + self.result = 0 + self.stop_time = time.time() + return status + + def clean(self): + try: + assert self.cloud + super().clean() + os.remove(self.privkey_filename) + os.remove(self.pubkey_filename) + self.cloud.delete_network(f"pns-internal-net_{self.guid}") + self.cloud.delete_network(f"pns-internal-net2_{self.guid}") + except Exception: # pylint: disable=broad-except + pass diff --git a/functest/opnfv_tests/openstack/vping/ping.sh b/functest/opnfv_tests/openstack/vping/ping.sh deleted file mode 100644 index 15f5e84e1..000000000 --- a/functest/opnfv_tests/openstack/vping/ping.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - - -ping -c 1 $1 2>&1 >/dev/null -RES=$? -if [ "Z$RES" = "Z0" ] ; then - echo 'vPing OK' -else - echo 'vPing KO' -fi diff --git a/functest/opnfv_tests/openstack/vping/vping_base.py b/functest/opnfv_tests/openstack/vping/vping_base.py deleted file mode 100644 index df9774ece..000000000 --- a/functest/opnfv_tests/openstack/vping/vping_base.py +++ /dev/null @@ -1,215 +0,0 @@ -# Copyright (c) 2017 Cable Television Laboratories, Inc. and others. -# -# This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# -# http://www.apache.org/licenses/LICENSE-2.0 - -"""Define the parent class of vping_ssh and vping_userdata testcases.""" - -from datetime import datetime -import logging -import time -import uuid - -from functest.core import testcase -from functest.opnfv_tests.openstack.snaps import snaps_utils -from functest.utils.constants import CONST - -from snaps.config.flavor import FlavorConfig -from snaps.config.network import NetworkConfig, SubnetConfig -from snaps.config.router import RouterConfig -from snaps.openstack import create_flavor -from snaps.openstack.create_flavor import OpenStackFlavor -from snaps.openstack.tests import openstack_tests -from snaps.openstack.utils import deploy_utils - - -class VPingBase(testcase.TestCase): - - """ - Base class for vPing tests that check connectivity between two VMs shared - internal network. - This class is responsible for creating the image, internal network. - """ - # pylint: disable=too-many-instance-attributes - - def __init__(self, **kwargs): - super(VPingBase, self).__init__(**kwargs) - - self.logger = logging.getLogger(__name__) - - if 'os_creds' in kwargs: - self.os_creds = kwargs['os_creds'] - else: - creds_override = None - if hasattr(CONST, 'snaps_os_creds_override'): - creds_override = CONST.__getattribute__( - 'snaps_os_creds_override') - - self.os_creds = openstack_tests.get_credentials( - os_env_file=CONST.__getattribute__('openstack_creds'), - overrides=creds_override) - - self.creators = list() - self.image_creator = None - self.network_creator = None - self.vm1_creator = None - self.vm2_creator = None - self.router_creator = None - - # Shared metadata - self.guid = '-' + str(uuid.uuid4()) - - self.router_name = CONST.__getattribute__( - 'vping_router_name') + self.guid - self.vm1_name = CONST.__getattribute__('vping_vm_name_1') + self.guid - self.vm2_name = CONST.__getattribute__('vping_vm_name_2') + self.guid - - self.vm_boot_timeout = CONST.__getattribute__('vping_vm_boot_timeout') - self.vm_delete_timeout = CONST.__getattribute__( - 'vping_vm_delete_timeout') - self.vm_ssh_connect_timeout = CONST.__getattribute__( - 'vping_vm_ssh_connect_timeout') - self.ping_timeout = CONST.__getattribute__('vping_ping_timeout') - self.flavor_name = 'vping-flavor' + self.guid - - # Move this configuration option up for all tests to leverage - if hasattr(CONST, 'snaps_images_cirros'): - self.cirros_image_config = CONST.__getattribute__( - 'snaps_images_cirros') - else: - self.cirros_image_config = None - - def run(self): - """ - Begins the test execution which should originate from the subclass - """ - self.logger.info('Begin virtual environment setup') - - self.start_time = time.time() - self.logger.info( - "vPing Start Time:'%s'", - datetime.fromtimestamp(self.start_time).strftime( - '%Y-%m-%d %H:%M:%S')) - - image_base_name = '{}-{}'.format( - CONST.__getattribute__('vping_image_name'), - str(self.guid)) - os_image_settings = openstack_tests.cirros_image_settings( - image_base_name, image_metadata=self.cirros_image_config) - self.logger.info("Creating image with name: '%s'", image_base_name) - - self.image_creator = deploy_utils.create_image( - self.os_creds, os_image_settings) - self.creators.append(self.image_creator) - - private_net_name = CONST.__getattribute__( - 'vping_private_net_name') + self.guid - private_subnet_name = CONST.__getattribute__( - 'vping_private_subnet_name') + self.guid - private_subnet_cidr = CONST.__getattribute__( - 'vping_private_subnet_cidr') - - vping_network_type = None - vping_physical_network = None - vping_segmentation_id = None - - if hasattr(CONST, 'vping_network_type'): - vping_network_type = CONST.__getattribute__( - 'vping_network_type') - if hasattr(CONST, 'vping_physical_network'): - vping_physical_network = CONST.__getattribute__( - 'vping_physical_network') - if hasattr(CONST, 'vping_segmentation_id'): - vping_segmentation_id = CONST.__getattribute__( - 'vping_segmentation_id') - - self.logger.info( - "Creating network with name: '%s'", private_net_name) - self.network_creator = deploy_utils.create_network( - self.os_creds, - NetworkConfig( - name=private_net_name, - network_type=vping_network_type, - physical_network=vping_physical_network, - segmentation_id=vping_segmentation_id, - subnet_settings=[SubnetConfig( - name=private_subnet_name, - cidr=private_subnet_cidr)])) - self.creators.append(self.network_creator) - - # Creating router to external network - log = "Creating router with name: '%s'" % self.router_name - self.logger.info(log) - ext_net_name = snaps_utils.get_ext_net_name(self.os_creds) - self.router_creator = deploy_utils.create_router( - self.os_creds, - RouterConfig( - name=self.router_name, - external_gateway=ext_net_name, - internal_subnets=[private_subnet_name])) - self.creators.append(self.router_creator) - - self.logger.info( - "Creating flavor with name: '%s'", self.flavor_name) - scenario = CONST.__getattribute__('DEPLOY_SCENARIO') - flavor_metadata = None - flavor_ram = 512 - if 'ovs' in scenario or 'fdio' in scenario: - flavor_metadata = create_flavor.MEM_PAGE_SIZE_LARGE - flavor_ram = 1024 - flavor_creator = OpenStackFlavor( - self.os_creds, - FlavorConfig(name=self.flavor_name, ram=flavor_ram, disk=1, - vcpus=1, metadata=flavor_metadata)) - flavor_creator.create() - self.creators.append(flavor_creator) - - def _execute(self): - """ - Method called by subclasses after environment has been setup - :return: the exit code - """ - self.logger.info('Begin test execution') - - test_ip = self.vm1_creator.get_port_ip( - self.vm1_creator.instance_settings.port_settings[0].name) - - if self.vm1_creator.vm_active( - block=True) and self.vm2_creator.vm_active(block=True): - result = self._do_vping(self.vm2_creator, test_ip) - else: - raise Exception('VMs never became active') - - self.stop_time = time.time() - - if result != testcase.TestCase.EX_OK: - self.result = 0 - return testcase.TestCase.EX_RUN_ERROR - - self.result = 100 - return testcase.TestCase.EX_OK - - def _cleanup(self): - """ - Cleanup all OpenStack objects. Should be called on completion - :return: - """ - if CONST.__getattribute__('vping_cleanup_objects') == 'True': - for creator in reversed(self.creators): - try: - creator.clean() - except Exception as error: # pylint: disable=broad-except - self.logger.error('Unexpected error cleaning - %s', error) - - def _do_vping(self, vm_creator, test_ip): - """ - Method to be implemented by subclasses - Begins the real test after the OpenStack environment has been setup - :param vm_creator: the SNAPS VM instance creator object - :param test_ip: the IP to which the VM needs to issue the ping - :return: T/F - """ - raise NotImplementedError('vping execution is not implemented') diff --git a/functest/opnfv_tests/openstack/vping/vping_ssh.py b/functest/opnfv_tests/openstack/vping/vping_ssh.py index 7df767edc..ad64348c4 100644 --- a/functest/opnfv_tests/openstack/vping/vping_ssh.py +++ b/functest/opnfv_tests/openstack/vping/vping_ssh.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# + # Copyright (c) 2015 All rights reserved # This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -7,32 +7,15 @@ # # http://www.apache.org/licenses/LICENSE-2.0 - """vPingSSH testcase.""" -# This 1st import is here simply for pep8 as the 'os' package import appears -# to be required for mock and the unit tests will fail without it -import os # noqa # pylint: disable=unused-import -import time - -from scp import SCPClient -import pkg_resources - -from functest.core.testcase import TestCase -from functest.energy import energy -from functest.opnfv_tests.openstack.vping import vping_base -from functest.utils.constants import CONST - -from snaps.config.keypair import KeypairConfig -from snaps.config.network import PortConfig -from snaps.config.security_group import ( - Direction, Protocol, SecurityGroupConfig, SecurityGroupRuleConfig) -from snaps.config.vm_inst import FloatingIpConfig, VmInstanceConfig +import logging -from snaps.openstack.utils import deploy_utils +from functest.core import singlevm +from functest.utils import config -class VPingSSH(vping_base.VPingBase): +class VPingSSH(singlevm.SingleVm2): """ VPingSSH testcase implementation. @@ -40,200 +23,40 @@ class VPingSSH(vping_base.VPingBase): to issue the ping command to the second """ + __logger = logging.getLogger(__name__) + def __init__(self, **kwargs): """Initialize testcase.""" if "case_name" not in kwargs: kwargs["case_name"] = "vping_ssh" - super(VPingSSH, self).__init__(**kwargs) - - self.kp_name = CONST.__getattribute__('vping_keypair_name') + self.guid - self.kp_priv_file = CONST.__getattribute__('vping_keypair_priv_file') - self.kp_pub_file = CONST.__getattribute__('vping_keypair_pub_file') - self.sg_name = CONST.__getattribute__('vping_sg_name') + self.guid - self.sg_desc = CONST.__getattribute__('vping_sg_desc') - - @energy.enable_recording - def run(self): - """ - Excecute VPingSSH testcase. - - Sets up the OpenStack keypair, router, security group, and VM instance - objects then validates the ping. - :return: the exit code from the super.execute() method - """ - try: - super(VPingSSH, self).run() - - log = "Creating keypair with name: '%s'" % self.kp_name - self.logger.info(log) - kp_creator = deploy_utils.create_keypair( - self.os_creds, - KeypairConfig( - name=self.kp_name, private_filepath=self.kp_priv_file, - public_filepath=self.kp_pub_file)) - self.creators.append(kp_creator) - - # Creating Instance 1 - port1_settings = PortConfig( - name=self.vm1_name + '-vPingPort', - network_name=self.network_creator.network_settings.name) - instance1_settings = VmInstanceConfig( - name=self.vm1_name, flavor=self.flavor_name, - vm_boot_timeout=self.vm_boot_timeout, - vm_delete_timeout=self.vm_delete_timeout, - ssh_connect_timeout=self.vm_ssh_connect_timeout, - port_settings=[port1_settings]) - - log = ("Creating VM 1 instance with name: '%s'" - % instance1_settings.name) - self.logger.info(log) - self.vm1_creator = deploy_utils.create_vm_instance( - self.os_creds, - instance1_settings, - self.image_creator.image_settings, - keypair_creator=kp_creator) - self.creators.append(self.vm1_creator) - - # Creating Instance 2 - sg_creator = self.__create_security_group() - self.creators.append(sg_creator) - - port2_settings = PortConfig( - name=self.vm2_name + '-vPingPort', - network_name=self.network_creator.network_settings.name) - instance2_settings = VmInstanceConfig( - name=self.vm2_name, flavor=self.flavor_name, - vm_boot_timeout=self.vm_boot_timeout, - vm_delete_timeout=self.vm_delete_timeout, - ssh_connect_timeout=self.vm_ssh_connect_timeout, - port_settings=[port2_settings], - security_group_names=[sg_creator.sec_grp_settings.name], - floating_ip_settings=[FloatingIpConfig( - name=self.vm2_name + '-FIPName', - port_name=port2_settings.name, - router_name=self.router_creator.router_settings.name)]) - - log = ("Creating VM 2 instance with name: '%s'" - % instance2_settings.name) - self.logger.info(log) - self.vm2_creator = deploy_utils.create_vm_instance( - self.os_creds, - instance2_settings, - self.image_creator.image_settings, - keypair_creator=kp_creator) - self.creators.append(self.vm2_creator) - - return self._execute() - except Exception as exc: # pylint: disable=broad-except - self.logger.error('Unexpected error running test - ' + exc.message) - return TestCase.EX_RUN_ERROR - finally: - self._cleanup() - - def _do_vping(self, vm_creator, test_ip): - """ - Execute ping command. - - Override from super - """ - if vm_creator.vm_ssh_active(block=True): - ssh = vm_creator.ssh_client() - if not self._transfer_ping_script(ssh): - return TestCase.EX_RUN_ERROR - return self._do_vping_ssh(ssh, test_ip) - else: - return TestCase.EX_RUN_ERROR - - def _transfer_ping_script(self, ssh): - """ - Transfert vping script to VM. - - Uses SCP to copy the ping script via the SSH client - :param ssh: the SSH client - :return: - """ - self.logger.info("Trying to transfer ping.sh") - scp = SCPClient(ssh.get_transport()) - ping_script = pkg_resources.resource_filename( - 'functest.opnfv_tests.openstack.vping', 'ping.sh') - try: - scp.put(ping_script, "~/") - except Exception: # pylint: disable=broad-except - self.logger.error("Cannot SCP the file '%s'", ping_script) - return False - - cmd = 'chmod 755 ~/ping.sh' - # pylint: disable=unused-variable - (stdin, stdout, stderr) = ssh.exec_command(cmd) - for line in stdout.readlines(): - print line - - return True - - def _do_vping_ssh(self, ssh, test_ip): - """ - Execute ping command via SSH. - - Pings the test_ip via the SSH client - :param ssh: the SSH client used to issue the ping command - :param test_ip: the IP for the ping command to use - :return: exit_code (int) - """ - exit_code = TestCase.EX_TESTCASE_FAILED - self.logger.info("Waiting for ping...") - - sec = 0 - cmd = '~/ping.sh ' + test_ip - flag = False - - while True: - time.sleep(1) - (_, stdout, _) = ssh.exec_command(cmd) - output = stdout.readlines() - - for line in output: - if "vPing OK" in line: - self.logger.info("vPing detected!") - exit_code = TestCase.EX_OK - flag = True - break - - elif sec == self.ping_timeout: - self.logger.info("Timeout reached.") - flag = True - break - if flag: - break - log = "Pinging %s. Waiting for response..." % test_ip - self.logger.debug(log) - sec += 1 - return exit_code - - def __create_security_group(self): - """ - Configure OpenStack security groups. - - Configures and deploys an OpenStack security group object - :return: the creator object - """ - sg_rules = list() - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name=self.sg_name, direction=Direction.ingress, - protocol=Protocol.icmp)) - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name=self.sg_name, direction=Direction.ingress, - protocol=Protocol.tcp, port_range_min=22, port_range_max=22)) - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name=self.sg_name, direction=Direction.egress, - protocol=Protocol.tcp, port_range_min=22, port_range_max=22)) - - log = "Security group with name: '%s'" % self.sg_name - self.logger.info(log) - return deploy_utils.create_security_group(self.os_creds, - SecurityGroupConfig( - name=self.sg_name, - description=self.sg_desc, - rule_settings=sg_rules)) + super().__init__(**kwargs) + self.vm2 = None + + def prepare(self): + super().prepare() + self.vm2 = self.boot_vm( + f'{self.case_name}-vm2_{self.guid}', + security_groups=[self.sec.id]) + + def execute(self): + """Ping the second VM + + Returns: ping exit codes + """ + assert self.ssh + if not self.check_regex_in_console(self.vm2.name): + return 1 + ip4 = self.vm2.private_v4 or self.vm2.addresses[ + self.network.name][0].addr + (_, stdout, stderr) = self.ssh.exec_command(f'ping -c 1 {ip4}') + self.__logger.info("output:\n%s", stdout.read().decode("utf-8")) + self.__logger.info("error:\n%s", stderr.read().decode("utf-8")) + return stdout.channel.recv_exit_status() + + def clean(self): + assert self.cloud + if self.vm2: + self.cloud.delete_server( + self.vm2, wait=True, + timeout=getattr(config.CONF, 'vping_vm_delete_timeout')) + super().clean() diff --git a/functest/opnfv_tests/openstack/vping/vping_userdata.py b/functest/opnfv_tests/openstack/vping/vping_userdata.py index ceba0917a..8a8f26f37 100644 --- a/functest/opnfv_tests/openstack/vping/vping_userdata.py +++ b/functest/opnfv_tests/openstack/vping/vping_userdata.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -# + # Copyright (c) 2015 All rights reserved # This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -9,17 +9,16 @@ """vping_userdata testcase.""" +import logging import time -from snaps.config.network import PortConfig -from snaps.config.vm_inst import VmInstanceConfig -from snaps.openstack.utils import deploy_utils +from xtesting.core import testcase -from functest.core.testcase import TestCase -from functest.opnfv_tests.openstack.vping import vping_base +from functest.core import singlevm +from functest.utils import config -class VPingUserdata(vping_base.VPingBase): +class VPingUserdata(singlevm.VmReady2): """ Class to execute the vPing test using userdata and the VM's console """ @@ -27,117 +26,112 @@ class VPingUserdata(vping_base.VPingBase): def __init__(self, **kwargs): if "case_name" not in kwargs: kwargs["case_name"] = "vping_userdata" - super(VPingUserdata, self).__init__(**kwargs) + super().__init__(**kwargs) + self.logger = logging.getLogger(__name__) + self.vm1 = None + self.vm2 = None - def run(self): + def run(self, **kwargs): """ Sets up the OpenStack VM instance objects then executes the ping and validates. :return: the exit code from the super.execute() method """ try: - super(VPingUserdata, self).run() - - # Creating Instance 1 - port1_settings = PortConfig( - name=self.vm1_name + '-vPingPort', - network_name=self.network_creator.network_settings.name) - instance1_settings = VmInstanceConfig( - name=self.vm1_name, - flavor=self.flavor_name, - vm_boot_timeout=self.vm_boot_timeout, - port_settings=[port1_settings]) - - self.logger.info( - "Creating VM 1 instance with name: '%s'", - instance1_settings.name) - self.vm1_creator = deploy_utils.create_vm_instance( - self.os_creds, instance1_settings, - self.image_creator.image_settings) - self.creators.append(self.vm1_creator) - - userdata = _get_userdata( - self.vm1_creator.get_port_ip(port1_settings.name)) - if userdata: - # Creating Instance 2 - port2_settings = PortConfig( - name=self.vm2_name + '-vPingPort', - network_name=self.network_creator.network_settings.name) - instance2_settings = VmInstanceConfig( - name=self.vm2_name, - flavor=self.flavor_name, - vm_boot_timeout=self.vm_boot_timeout, - port_settings=[port2_settings], - userdata=userdata) - - self.logger.info( - "Creating VM 2 instance with name: '%s'", - instance2_settings.name) - self.vm2_creator = deploy_utils.create_vm_instance( - self.os_creds, instance2_settings, - self.image_creator.image_settings) - self.creators.append(self.vm2_creator) - else: - raise Exception('Userdata is None') - - return self._execute() - - finally: - self._cleanup() - - def _do_vping(self, vm_creator, test_ip): + assert self.cloud + assert super().run( + **kwargs) == testcase.TestCase.EX_OK + self.result = 0 + self.vm1 = self.boot_vm() + self.vm2 = self.boot_vm( + f'{self.case_name}-vm2_{self.guid}', + userdata=self._get_userdata()) + + result = self._do_vping() + self.stop_time = time.time() + if result != testcase.TestCase.EX_OK: + return testcase.TestCase.EX_RUN_ERROR + self.result = 100 + return testcase.TestCase.EX_OK + except Exception: # pylint: disable=broad-except + self.logger.exception('Unexpected error running vping_userdata') + return testcase.TestCase.EX_RUN_ERROR + + def _do_vping(self): """ Override from super """ + if not (self.vm1.private_v4 or self.vm1.addresses[ + self.network.name][0].addr): + self.logger.error("vm1: IP addr missing") + return testcase.TestCase.EX_TESTCASE_FAILED + self.logger.info("Waiting for ping...") - exit_code = TestCase.EX_TESTCASE_FAILED + exit_code = testcase.TestCase.EX_TESTCASE_FAILED sec = 0 tries = 0 while True: time.sleep(1) - p_console = vm_creator.get_console_output() + p_console = self.cloud.get_server_console(self.vm2.id) + self.logger.debug("console: \n%s", p_console) if "vPing OK" in p_console: self.logger.info("vPing detected!") - exit_code = TestCase.EX_OK + exit_code = testcase.TestCase.EX_OK break - elif "failed to read iid from metadata" in p_console or tries > 5: + if "failed to read iid from metadata" in p_console or tries > 5: self.logger.info("Failed to read iid from metadata") break - elif sec == self.ping_timeout: + if sec == getattr(config.CONF, 'vping_ping_timeout'): self.logger.info("Timeout reached.") break - elif sec % 10 == 0: + if sec % 10 == 0: if "request failed" in p_console: self.logger.debug( - "It seems userdata is not supported in nova boot. " + + "It seems userdata is not supported in nova boot. " "Waiting a bit...") tries += 1 else: self.logger.debug( - "Pinging %s. Waiting for response...", test_ip) + "Pinging %s. Waiting for response...", + self.vm1.private_v4 or self.vm1.addresses[ + self.network.name][0].addr) sec += 1 return exit_code - -def _get_userdata(test_ip): - """ - Returns the post VM creation script to be added into the VM's userdata - :param test_ip: the IP value to substitute into the script - :return: the bash script contents - """ - if test_ip: - return ("#!/bin/sh\n\n" - "while true; do\n" - " ping -c 1 %s 2>&1 >/dev/null\n" - " RES=$?\n" - " if [ \"Z$RES\" = \"Z0\" ] ; then\n" - " echo 'vPing OK'\n" - " break\n" - " else\n" - " echo 'vPing KO'\n" - " fi\n" - " sleep 1\n" - "done\n" % str(test_ip)) - return None + def _get_userdata(self): + """ + Returns the post VM creation script to be added into the VM's userdata + :param test_ip: the IP value to substitute into the script + :return: the shell script contents + """ + ip4 = self.vm1.private_v4 or self.vm1.addresses[ + self.network.name][0].addr + if self.vm1.private_v4 or self.vm1.addresses[ + self.network.name][0].addr: + return ("#!/bin/sh\n\n" + "while true; do\n" + f" ping -c 1 {ip4} 2>&1 >/dev/null\n" + " RES=$?\n" + " if [ \"Z$RES\" = \"Z0\" ] ; then\n" + " echo 'vPing OK'\n" + " break\n" + " else\n" + " echo 'vPing KO'\n" + " fi\n" + " sleep 1\n" + "done\n") + return None + + def clean(self): + assert self.cloud + if self.vm1: + self.cloud.delete_server( + self.vm1, wait=True, + timeout=getattr(config.CONF, 'vping_vm_delete_timeout')) + if self.vm2: + self.cloud.delete_server( + self.vm2, wait=True, + timeout=getattr(config.CONF, 'vping_vm_delete_timeout')) + super().clean() diff --git a/functest/opnfv_tests/sdn/odl/odl.py b/functest/opnfv_tests/sdn/odl/odl.py index 6c05c0181..72c38ce2c 100644 --- a/functest/opnfv_tests/sdn/odl/odl.py +++ b/functest/opnfv_tests/sdn/odl/odl.py @@ -25,11 +25,12 @@ import os import re import sys +import os_client_config from six.moves import urllib +from xtesting.core import robotframework -from functest.core import robotframework -from functest.utils import constants -import functest.utils.openstack_utils as op_utils +from functest.utils import config +from functest.utils import env __author__ = "Cedric Ollivier <cedric.ollivier@orange.com>" @@ -37,7 +38,7 @@ __author__ = "Cedric Ollivier <cedric.ollivier@orange.com>" class ODLTests(robotframework.RobotFramework): """ODL test runner.""" - odl_test_repo = constants.CONST.__getattribute__('dir_repo_odl_test') + odl_test_repo = getattr(config.CONF, 'dir_repo_odl_test') neutron_suite_dir = os.path.join( odl_test_repo, "csit/suites/openstack/neutron") basic_suite_dir = os.path.join( @@ -48,9 +49,9 @@ class ODLTests(robotframework.RobotFramework): __logger = logging.getLogger(__name__) def __init__(self, **kwargs): - super(ODLTests, self).__init__(**kwargs) + super().__init__(**kwargs) self.res_dir = os.path.join( - constants.CONST.__getattribute__('dir_results'), 'odl') + getattr(config.CONF, 'dir_results'), 'odl') self.xml_file = os.path.join(self.res_dir, 'output.xml') @classmethod @@ -65,10 +66,10 @@ class ODLTests(robotframework.RobotFramework): try: for line in fileinput.input(cls.odl_variables_file, inplace=True): - print(re.sub("@{AUTH}.*", - "@{{AUTH}} {} {}".format( - odlusername, odlpassword), - line.rstrip())) + print(re.sub( + "@{AUTH}.*", + f"@{{AUTH}} {odlusername} {odlpassword}", + line.rstrip())) return True except Exception: # pylint: disable=broad-except cls.__logger.exception("Cannot set ODL creds:") @@ -110,9 +111,8 @@ class ODLTests(robotframework.RobotFramework): odlusername = kwargs['odlusername'] odlpassword = kwargs['odlpassword'] osauthurl = kwargs['osauthurl'] - keystoneurl = "{}://{}".format( - urllib.parse.urlparse(osauthurl).scheme, - urllib.parse.urlparse(osauthurl).netloc) + keystoneurl = (f"{urllib.parse.urlparse(osauthurl).scheme}://" + f"{urllib.parse.urlparse(osauthurl).netloc}") variable = ['KEYSTONEURL:' + keystoneurl, 'NEUTRONURL:' + kwargs['neutronurl'], 'OS_AUTH_URL:"' + osauthurl + '"', @@ -134,12 +134,12 @@ class ODLTests(robotframework.RobotFramework): else: if not self.set_robotframework_vars(odlusername, odlpassword): return self.EX_RUN_ERROR - return super(ODLTests, self).run(variable=variable, suites=suites) + return super().run(variable=variable, suites=suites) def run(self, **kwargs): """Run suites in OPNFV environment - It basically check env vars to call main() with the keywords + It basically checks env vars to call main() with the keywords required. Args: @@ -155,17 +155,19 @@ class ODLTests(robotframework.RobotFramework): suites = kwargs["suites"] except KeyError: pass - kwargs = {'neutronurl': op_utils.get_endpoint( - service_type='network')} - kwargs['odlip'] = urllib.parse.urlparse( - kwargs['neutronurl']).hostname - kwargs['odlwebport'] = '8080' - kwargs['odlrestconfport'] = '8181' - kwargs['odlusername'] = 'admin' - kwargs['odlpassword'] = 'admin' - installer_type = None - if 'INSTALLER_TYPE' in os.environ: - installer_type = os.environ['INSTALLER_TYPE'] + cloud = os_client_config.make_shade() + neutron_id = cloud.search_services('neutron')[0].id + endpoint = cloud.search_endpoints( + filters={ + 'interface': os.environ.get( + 'OS_INTERFACE', 'public').replace('URL', ''), + 'service_id': neutron_id})[0].url + kwargs = {'neutronurl': endpoint} + kwargs['odlip'] = env.get('SDN_CONTROLLER_IP') + kwargs['odlwebport'] = env.get('SDN_CONTROLLER_WEBPORT') + kwargs['odlrestconfport'] = env.get('SDN_CONTROLLER_RESTCONFPORT') + kwargs['odlusername'] = env.get('SDN_CONTROLLER_USER') + kwargs['odlpassword'] = env.get('SDN_CONTROLLER_PASSWORD') kwargs['osusername'] = os.environ['OS_USERNAME'] kwargs['osuserdomainname'] = os.environ.get( 'OS_USER_DOMAIN_NAME', 'Default') @@ -174,27 +176,10 @@ class ODLTests(robotframework.RobotFramework): 'OS_PROJECT_DOMAIN_NAME', 'Default') kwargs['osauthurl'] = os.environ['OS_AUTH_URL'] kwargs['ospassword'] = os.environ['OS_PASSWORD'] - if installer_type == 'fuel': - kwargs['odlwebport'] = '8181' - kwargs['odlrestconfport'] = '8282' - elif installer_type == 'apex' or installer_type == 'netvirt': - kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP'] - kwargs['odlwebport'] = '8081' - kwargs['odlrestconfport'] = '8081' - elif installer_type == 'joid': - kwargs['odlip'] = os.environ['SDN_CONTROLLER'] - elif installer_type == 'compass': - kwargs['odlrestconfport'] = '8080' - elif installer_type == 'daisy': - kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP'] - kwargs['odlwebport'] = '8181' - kwargs['odlrestconfport'] = '8087' - else: - kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP'] + assert kwargs['odlip'] except KeyError as ex: - self.__logger.error("Cannot run ODL testcases. " - "Please check env var: " - "%s", str(ex)) + self.__logger.error( + "Cannot run ODL testcases. Please check env var: %s", str(ex)) return self.EX_RUN_ERROR except Exception: # pylint: disable=broad-except self.__logger.exception("Cannot run ODL testcases.") @@ -203,7 +188,7 @@ class ODLTests(robotframework.RobotFramework): return self.run_suites(suites, **kwargs) -class ODLParser(object): # pylint: disable=too-few-public-methods +class ODLParser(): # pylint: disable=too-few-public-methods """Parser to run ODL test suites.""" def __init__(self): @@ -274,7 +259,6 @@ def main(): return result if args['pushtodb']: return odl.push_to_db() - else: - return result + return result except Exception: # pylint: disable=broad-except return robotframework.RobotFramework.EX_RUN_ERROR diff --git a/functest/opnfv_tests/vnf/epc/juju_epc.py b/functest/opnfv_tests/vnf/epc/juju_epc.py index 3146b935c..1cf240b80 100644 --- a/functest/opnfv_tests/vnf/epc/juju_epc.py +++ b/functest/opnfv_tests/vnf/epc/juju_epc.py @@ -8,159 +8,220 @@ # http://www.apache.org/licenses/LICENSE-2.0 """Juju testcase implementation.""" +import errno import logging -import shutil import os import time import json +import re import sys -from copy import deepcopy -from urlparse import urljoin - -import functest.core.vnf as vnf -from functest.opnfv_tests.openstack.snaps import snaps_utils -from functest.utils.constants import CONST -import functest.utils.openstack_utils as os_utils +from copy import deepcopy import pkg_resources -from snaps.openstack.os_credentials import OSCreds -from snaps.openstack.create_network import (NetworkSettings, - SubnetSettings, OpenStackNetwork) -from snaps.openstack.create_router import (RouterSettings, OpenStackRouter) -from snaps.openstack.create_flavor import (FlavorSettings, OpenStackFlavor) -from snaps.openstack.create_image import (ImageSettings, OpenStackImage) -from snaps.openstack.tests import openstack_tests -from snaps.openstack.utils import keystone_utils -import yaml +import scp + +from functest.core import singlevm +from functest.utils import config +from functest.utils import env +from functest.utils import functest_utils __author__ = "Amarendra Meher <amarendra@rebaca.com>" __author__ = "Soumaya K Nayek <soumaya.nayek@rebaca.com>" +CLOUD_TEMPLATE = """clouds: + abot-epc: + type: openstack + auth-types: [userpass] + endpoint: {url} + regions: + {region}: + endpoint: {url}""" + +CREDS_TEMPLATE2 = """credentials: + abot-epc: + default-credential: abot-epc + abot-epc: + auth-type: userpass + password: '{pass}' + project-domain-name: {project_domain_n} + tenant-name: {tenant_n}""" + +CREDS_TEMPLATE = """credentials: + abot-epc: + default-credential: abot-epc + abot-epc: + auth-type: userpass + password: '{pass}' + project-domain-name: {project_domain_n} + tenant-name: {tenant_n} + user-domain-name: {user_domain_n} + username: {user_n}""" -class JujuEpc(vnf.VnfOnBoarding): + +class JujuEpc(singlevm.SingleVm2): # pylint:disable=too-many-instance-attributes """Abot EPC deployed with JUJU Orchestrator Case""" __logger = logging.getLogger(__name__) - default_region_name = "RegionOne" + cidr = '192.168.120.0/24' + + filename = ('/home/opnfv/functest/images/' + 'ubuntu-16.04-server-cloudimg-amd64-disk1.img') + filename_alt = ('/home/opnfv/functest/images/' + 'ubuntu-14.04-server-cloudimg-amd64-disk1.img') + + flavor_ram = 2048 + flavor_vcpus = 1 + flavor_disk = 10 + flavor_alt_ram = 4096 + flavor_alt_vcpus = 1 + flavor_alt_disk = 10 + username = 'ubuntu' + juju_timeout = '4800' def __init__(self, **kwargs): if "case_name" not in kwargs: kwargs["case_name"] = "juju_epc" - super(JujuEpc, self).__init__(**kwargs) + super().__init__(**kwargs) # Retrieve the configuration self.case_dir = pkg_resources.resource_filename( 'functest', 'opnfv_tests/vnf/epc') try: - self.config = CONST.__getattribute__( - 'vnf_{}_config'.format(self.case_name)) - except Exception: - raise Exception("VNF config file not found") - config_file = os.path.join(self.case_dir, self.config) + self.config = getattr( + config.CONF, f'vnf_{self.case_name}_config') + except Exception as exc: + raise Exception("VNF config file not found") from exc + self.config_file = os.path.join(self.case_dir, self.config) self.orchestrator = dict( - requirements=get_config("orchestrator.requirements", config_file), - ) + requirements=functest_utils.get_parameter_from_yaml( + "orchestrator.requirements", self.config_file)) self.created_object = [] - self.snaps_creds = '' - - self.os_creds = openstack_tests.get_credentials( - os_env_file=CONST.__getattribute__('openstack_creds')) - self.details['orchestrator'] = dict( - name=get_config("orchestrator.name", config_file), - version=get_config("orchestrator.version", config_file), + name=functest_utils.get_parameter_from_yaml( + "orchestrator.name", self.config_file), + version=functest_utils.get_parameter_from_yaml( + "orchestrator.version", self.config_file), status='ERROR', result='' ) self.vnf = dict( - descriptor=get_config("vnf.descriptor", config_file), - requirements=get_config("vnf.requirements", config_file) + descriptor=functest_utils.get_parameter_from_yaml( + "vnf.descriptor", self.config_file), + requirements=functest_utils.get_parameter_from_yaml( + "vnf.requirements", self.config_file) ) self.details['vnf'] = dict( descriptor_version=self.vnf['descriptor']['version'], - name=get_config("vnf.name", config_file), - version=get_config("vnf.version", config_file), + name=functest_utils.get_parameter_from_yaml( + "vnf.name", self.config_file), + version=functest_utils.get_parameter_from_yaml( + "vnf.version", self.config_file), ) self.__logger.debug("VNF configuration: %s", self.vnf) self.details['test_vnf'] = dict( - name=get_config("vnf_test_suite.name", config_file), - version=get_config("vnf_test_suite.version", config_file), - tag_name=get_config("vnf_test_suite.tag_name", config_file) + name=functest_utils.get_parameter_from_yaml( + "vnf_test_suite.name", self.config_file), + version=functest_utils.get_parameter_from_yaml( + "vnf_test_suite.version", self.config_file), + tag_name=functest_utils.get_parameter_from_yaml( + "vnf_test_suite.tag_name", self.config_file) ) - self.images = get_config("tenant_images", config_file) - self.__logger.info("Images needed for vEPC: %s", self.images) - self.keystone_client = os_utils.get_keystone_client() - self.glance_client = os_utils.get_glance_client() - self.neutron_client = os_utils.get_neutron_client() - self.nova_client = os_utils.get_nova_client() - self.sec_group_id = None - self.public_auth_url = None - self.creds = None - self.filename = None - - def prepare(self): - """Prepare testcase (Additional pre-configuration steps).""" - self.__logger.debug("OS Credentials: %s", os_utils.get_credentials()) - super(JujuEpc, self).prepare() - - self.__logger.info("Additional pre-configuration steps") - self.public_auth_url = keystone_utils.get_endpoint( - self.snaps_creds, 'identity') - # it enforces a versioned public identity endpoint as juju simply - # adds /auth/tokens wich fails vs an unversioned endpoint. - if not self.public_auth_url.endswith(('v3', 'v3/', 'v2.0', 'v2.0/')): - self.public_auth_url = urljoin(self.public_auth_url, 'v3') - - self.creds = { - "tenant": self.tenant_name, - "username": self.tenant_name, - "password": self.tenant_name, - "auth_url": os_utils.get_credentials()['auth_url'] - } - - self.snaps_creds = OSCreds( - username=self.creds['username'], - password=self.creds['password'], - auth_url=self.creds['auth_url'], - project_name=self.creds['tenant'], - identity_api_version=int(os_utils.get_keystone_client_version())) + self.res_dir = os.path.join( + getattr(config.CONF, 'dir_results'), self.case_name) + try: + self.public_auth_url = self.get_public_auth_url(self.orig_cloud) + if not self.public_auth_url.endswith(('v3', 'v3/')): + self.public_auth_url = f"{self.public_auth_url}/v3" + except Exception: # pylint: disable=broad-except + self.public_auth_url = None + self.sec = None + self.image_alt = None + self.flavor_alt = None + + def _install_juju(self): + (_, stdout, stderr) = self.ssh.exec_command( + 'sudo snap install juju --channel=2.3/stable --classic') + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + return not stdout.channel.recv_exit_status() + + def _install_juju_wait(self): + (_, stdout, stderr) = self.ssh.exec_command( + 'sudo apt-get update && sudo apt-get install python3-pip -y && ' + 'sudo pip3 install juju_wait===2.6.4') + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + return not stdout.channel.recv_exit_status() + + def _register_cloud(self): + assert self.public_auth_url + self.__logger.info("Creating Cloud for Abot-epc .....") + clouds_yaml = os.path.join(self.res_dir, "clouds.yaml") cloud_data = { 'url': self.public_auth_url, - 'pass': self.tenant_name, - 'tenant_n': self.tenant_name, - 'user_n': self.tenant_name, - 'region': os.environ.get( - "OS_REGION_NAME", self.default_region_name) - } - self.__logger.info("Cloud DATA: %s", cloud_data) - self.filename = os.path.join(self.case_dir, 'abot-epc.yaml') - self.__logger.info("Create %s to add cloud info", self.filename) - write_config(self.filename, CLOUD_TEMPLATE, **cloud_data) - - if self.snaps_creds.identity_api_version == 3: - append_config(self.filename, '{}'.format( - os_utils.get_credentials()['project_domain_name']), - '{}'.format(os_utils.get_credentials()['user_domain_name'])) - - self.__logger.info("Upload some OS images if it doesn't exist") - for image_name, image_file in self.images.iteritems(): - self.__logger.info("image: %s, file: %s", image_name, image_file) - if image_file and image_name: - image_creator = OpenStackImage( - self.snaps_creds, - ImageSettings(name=image_name, - image_user='cloud', - img_format='qcow2', - image_file=image_file)) - image_creator.create() - self.created_object.append(image_creator) + 'region': self.cloud.region_name if self.cloud.region_name else ( + 'RegionOne')} + with open(clouds_yaml, 'w', encoding='utf-8') as yfile: + yfile.write(CLOUD_TEMPLATE.format(**cloud_data)) + scpc = scp.SCPClient(self.ssh.get_transport()) + scpc.put(clouds_yaml, remote_path='~/') + (_, stdout, stderr) = self.ssh.exec_command( + '/snap/bin/juju add-cloud abot-epc -f clouds.yaml --replace') + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + return not stdout.channel.recv_exit_status() + + def _register_credentials(self): + self.__logger.info("Creating Credentials for Abot-epc .....") + credentials_yaml = os.path.join(self.res_dir, "credentials.yaml") + creds_data = { + 'pass': self.project.password, + 'tenant_n': self.project.project.name, + 'user_n': self.project.user.name, + 'project_domain_n': self.cloud.auth.get( + "project_domain_name", "Default"), + 'user_domain_n': self.cloud.auth.get( + "user_domain_name", "Default")} + with open(credentials_yaml, 'w', encoding='utf-8') as yfile: + yfile.write(CREDS_TEMPLATE.format(**creds_data)) + scpc = scp.SCPClient(self.ssh.get_transport()) + scpc.put(credentials_yaml, remote_path='~/') + (_, stdout, stderr) = self.ssh.exec_command( + '/snap/bin/juju add-credential abot-epc -f credentials.yaml ' + ' --replace --debug') + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + return not stdout.channel.recv_exit_status() + + def _publish_image(self): + region_name = self.cloud.region_name if self.cloud.region_name else ( + 'RegionOne') + (_, stdout, stderr) = self.ssh.exec_command( + '/snap/bin/juju metadata generate-image -d /home/ubuntu ' + f'-i {self.image.id} -s xenial -r {region_name} ' + f'-u {self.public_auth_url}') + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + return not stdout.channel.recv_exit_status() + + def publish_image_alt(self, name=None): + image_alt = super().publish_image_alt(name) + region_name = self.cloud.region_name if self.cloud.region_name else ( + 'RegionOne') + (_, stdout, stderr) = self.ssh.exec_command( + '/snap/bin/juju metadata generate-image -d /home/ubuntu ' + f'-i {image_alt.id} -s trusty -r {region_name} ' + f'-u {self.public_auth_url}') + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + return image_alt def deploy_orchestrator(self): # pylint: disable=too-many-locals """ @@ -168,235 +229,181 @@ class JujuEpc(vnf.VnfOnBoarding): Bootstrap juju """ - self.__logger.info("Deployed Orchestrator") - private_net_name = CONST.__getattribute__( - 'vnf_{}_private_net_name'.format(self.case_name)) - private_subnet_name = CONST.__getattribute__( - 'vnf_{}_private_subnet_name'.format(self.case_name)) - private_subnet_cidr = CONST.__getattribute__( - 'vnf_{}_private_subnet_cidr'.format(self.case_name)) - abot_router = CONST.__getattribute__( - 'vnf_{}_external_router'.format(self.case_name)) - dns_nameserver = CONST.__getattribute__( - 'vnf_{}_dns_nameserver'.format(self.case_name)) - ext_net_name = CONST.__getattribute__( - 'vnf_{}_external_network_name'.format(self.case_name)) - - self.__logger.info("Creating full network ...") - subnet_settings = SubnetSettings(name=private_subnet_name, - cidr=private_subnet_cidr, - dns_nameservers=dns_nameserver) - network_settings = NetworkSettings(name=private_net_name, - subnet_settings=[subnet_settings]) - network_creator = OpenStackNetwork(self.snaps_creds, network_settings) - network_creator.create() - self.created_object.append(network_creator) - - ext_net_name = snaps_utils.get_ext_net_name(self.snaps_creds) - self.__logger.info("Creating network Router ....") - router_creator = OpenStackRouter( - self.snaps_creds, - RouterSettings( - name=abot_router, - external_gateway=ext_net_name, - internal_subnets=[subnet_settings.name])) - router_creator.create() - self.created_object.append(router_creator) - self.__logger.info("Creating Flavor ....") - flavor_settings = FlavorSettings( - name=self.orchestrator['requirements']['flavor']['name'], - ram=self.orchestrator['requirements']['flavor']['ram_min'], - disk=10, - vcpus=1) - flavor_creator = OpenStackFlavor(self.snaps_creds, flavor_settings) - self.__logger.info("Juju Bootstrap: Skip creation of flavors") - flavor_creator.create() - self.created_object.append(flavor_creator) - self.__logger.info("Installing Dependency Packages .......") - source_dir = "/src/epc-requirements/juju_bin_build" - if os.path.exists(source_dir): - shutil.rmtree(source_dir) - os.makedirs(source_dir) - os.environ['GOPATH'] = str(source_dir) - os.environ['GOBIN'] = str(source_dir) + "/bin" - os.environ['PATH'] = ((os.path.expandvars('$GOPATH')) + ":" + - (os.path.expandvars('$GOBIN')) + ":" + - (os.path.expandvars('$PATH'))) - os.system('go get -d -v github.com/juju/juju/...') - os.chdir(source_dir + "/src" + "/github.com" + "/juju" + "/juju") - os.system('git checkout tags/juju-2.2.5') - os.system('go get github.com/rogpeppe/godeps') - os.system('godeps -u dependencies.tsv') - os.system('go install -v github.com/juju/juju/...') - self.__logger.info("Creating Cloud for Abot-epc .....") - os.system('juju add-cloud abot-epc -f {}'.format(self.filename)) - os.system('juju add-credential abot-epc -f {}'.format(self.filename)) - for image_name in self.images.keys(): - self.__logger.info("Generating Metadata for %s", image_name) - image_id = os_utils.get_image_id(self.glance_client, image_name) - os.system( - 'juju metadata generate-image -d ~ -i {} -s {} -r ' - '{} -u {}'.format( - image_id, image_name, - os.environ.get("OS_REGION_NAME", self.default_region_name), - self.public_auth_url)) - net_id = os_utils.get_network_id(self.neutron_client, private_net_name) - self.__logger.info("Credential information : %s", net_id) - juju_bootstrap_command = ('juju bootstrap abot-epc abot-controller ' - '--config network={} --metadata-source ~ ' - '--config ssl-hostname-verification=false ' - '--constraints mem=2G --bootstrap-series ' - 'xenial ' - '--config use-floating-ip=true --debug'. - format(net_id)) - os.system(juju_bootstrap_command) + self._publish_image() + self.image_alt = self.publish_image_alt() + self.flavor_alt = self.create_flavor_alt() + self.__logger.info("Starting Juju Bootstrap process...") + region_name = self.cloud.region_name if self.cloud.region_name else ( + 'RegionOne') + (_, stdout, stderr) = self.ssh.exec_command( + f'timeout {JujuEpc.juju_timeout} ' + f'/snap/bin/juju bootstrap abot-epc/{region_name} abot-controller ' + '--agent-version 2.3.9 --metadata-source /home/ubuntu ' + '--constraints mem=2G --bootstrap-series xenial ' + f'--config network={self.network.id} ' + '--config ssl-hostname-verification=false ' + f'--config external-network={self.ext_net.id} ' + '--config use-floating-ip=true ' + '--config use-default-secgroup=true ' + '--debug') + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + return not stdout.channel.recv_exit_status() + + def check_app(self, name='abot-epc-basic', status='active'): + """Check application status.""" + for i in range(10): + (_, stdout, stderr) = self.ssh.exec_command( + f'/snap/bin/juju status --format short {name}') + output = stdout.read().decode("utf-8") + self.__logger.debug("stdout:\n%s", output) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + if stdout.channel.recv_exit_status(): + continue + ret = re.search( + rf'(?=workload:({status})\))', output) + if ret: + self.__logger.info("%s workload is %s", name, status) + break + self.__logger.info( + "loop %d: %s workload differs from %s", i + 1, name, status) + time.sleep(60) + else: + self.__logger.error("%s workload differs from %s", name, status) + return False return True def deploy_vnf(self): """Deploy ABOT-OAI-EPC.""" self.__logger.info("Upload VNFD") - descriptor = self.vnf['descriptor'] - self.__logger.info("Get or create flavor for all Abot-EPC") - flavor_settings = FlavorSettings( - name=self.vnf['requirements']['flavor']['name'], - ram=self.vnf['requirements']['flavor']['ram_min'], - disk=10, - vcpus=1) - flavor_creator = OpenStackFlavor(self.snaps_creds, flavor_settings) - flavor_creator.create() - self.created_object.append(flavor_creator) + scpc = scp.SCPClient(self.ssh.get_transport()) + scpc.put( + '/src/epc-requirements/abot_charm', remote_path='~/', + recursive=True) self.__logger.info("Deploying Abot-epc bundle file ...") - os.system('juju deploy {}'.format('/' + descriptor.get('file_name'))) - self.__logger.info("Waiting for instances .....") - status = os.system('juju-wait') - self.__logger.info("juju wait completed: %s", status) - self.__logger.info("Deployed Abot-epc on Openstack") - if status == 0: - instances = os_utils.get_instances(self.nova_client) - for items in instances: - metadata = get_instance_metadata(self.nova_client, items) - if 'juju-units-deployed' in metadata: - sec_group = ('juju-' + metadata['juju-controller-uuid'] + - '-' + metadata['juju-model-uuid']) - self.sec_group_id = os_utils.get_security_group_id( - self.neutron_client, sec_group) - break - self.__logger.info("Adding Security group rule....") - os_utils.create_secgroup_rule(self.neutron_client, - self.sec_group_id, 'ingress', 132) - self.__logger.info("Copying the feature files to Abot_node ") - os.system('juju scp -- -r {}/featureFiles abot-' - 'epc-basic/0:~/'.format(self.case_dir)) - self.__logger.info("Copying the feature files in Abot_node ") - os.system("juju ssh abot-epc-basic/0 'sudo rsync -azvv " - "~/featureFiles /etc/rebaca-test-suite" - "/featureFiles'") - count = 0 - while count < 10: - epcstatus = os.system('juju status oai-epc | ' - 'grep {} | grep {} | grep {}' - .format('EPC', 'is', 'running')) - if epcstatus == 0: - break - else: - time.sleep(60) - count = count + 1 - os.system('juju-wait') - return True - return False + (_, stdout, stderr) = self.ssh.exec_command( + 'sudo mkdir -p /src/epc-requirements && ' + 'sudo mv abot_charm /src/epc-requirements/abot_charm && ' + '/snap/bin/juju deploy ' + '/src/epc-requirements/abot_charm/functest-abot-epc-bundle/' + 'bundle.yaml') + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + if stdout.channel.recv_exit_status(): + return not stdout.channel.recv_exit_status() + (_, stdout, stderr) = self.ssh.exec_command( + 'PATH=/snap/bin/:$PATH ' + f'timeout {JujuEpc.juju_timeout} juju-wait') + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + if stdout.channel.recv_exit_status(): + return not stdout.channel.recv_exit_status() + self.__logger.info("Checking status of ABot and EPC units ...") + (_, stdout, stderr) = self.ssh.exec_command('/snap/bin/juju status') + output = stdout.read().decode("utf-8") + self.__logger.debug("stdout:\n%s", output) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + if stdout.channel.recv_exit_status(): + return not stdout.channel.recv_exit_status() + for app in ['abot-epc-basic', 'oai-epc', 'oai-hss']: + if not self.check_app(app): + return False + scpc = scp.SCPClient(self.ssh.get_transport()) + scpc.put( + f'{self.case_dir}/featureFiles', remote_path='~/', + recursive=True) + (_, stdout, stderr) = self.ssh.exec_command( + f'timeout {JujuEpc.juju_timeout} /snap/bin/juju scp -- -r -v ' + '~/featureFiles abot-epc-basic/0:/etc/rebaca-test-suite/') + output = stdout.read().decode("utf-8") + self.__logger.debug("stdout:\n%s", output) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + return not stdout.channel.recv_exit_status() def test_vnf(self): """Run test on ABoT.""" start_time = time.time() - self.__logger.info("Running VNF Test cases....") - os.system('juju run-action abot-epc-basic/0 run ' - 'tagnames={}'.format(self.details['test_vnf']['tag_name'])) - os.system('juju-wait') + (_, stdout, stderr) = self.ssh.exec_command( + "/snap/bin/juju run-action abot-epc-basic/0 " + f"run tagnames={self.details['test_vnf']['tag_name']}") + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + if stdout.channel.recv_exit_status(): + return not stdout.channel.recv_exit_status() + (_, stdout, stderr) = self.ssh.exec_command( + 'PATH=/snap/bin/:$PATH ' + f'timeout {JujuEpc.juju_timeout} juju-wait') + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + if stdout.channel.recv_exit_status(): + return not stdout.channel.recv_exit_status() duration = time.time() - start_time self.__logger.info("Getting results from Abot node....") - os.system('juju scp abot-epc-basic/0:/var/lib/abot-' - 'epc-basic/artifacts/TestResults.json {}/.' - .format(self.case_dir)) + (_, stdout, stderr) = self.ssh.exec_command( + f'timeout {JujuEpc.juju_timeout} /snap/bin/juju scp ' + '-- -v abot-epc-basic/0:' + '/var/lib/abot-epc-basic/artifacts/TestResults.json .') + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + if stdout.channel.recv_exit_status(): + return not stdout.channel.recv_exit_status() + scpc = scp.SCPClient(self.ssh.get_transport()) + scpc.get('TestResults.json', self.res_dir) self.__logger.info("Parsing the Test results...") - res = (process_abot_test_result('{}/TestResults.' - 'json'.format(self.case_dir))) + res = process_abot_test_result(f'{self.res_dir}/TestResults.json') short_result = sig_test_format(res) self.__logger.info(short_result) - self.details['test_vnf'].update(status='PASS', - result=short_result, - full_result=res, - duration=duration) - - self.__logger.info("Test VNF result: Passed: %d, Failed:" - "%d, Skipped: %d", short_result['passed'], - short_result['failures'], short_result['skipped']) + self.details['test_vnf'].update( + status='PASS', result=short_result, full_result=res, + duration=duration) + self.__logger.info( + "Test VNF result: Passed: %d, Failed:%d, Skipped: %d", + short_result['passed'], + short_result['failures'], short_result['skipped']) return True - def clean(self): - """Clean created objects/functions.""" + def execute(self): + """Prepare testcase (Additional pre-configuration steps).""" + assert self.public_auth_url + self.__logger.info("Additional pre-configuration steps") + try: + os.makedirs(self.res_dir) + except OSError as ex: + if ex.errno != errno.EEXIST: + self.__logger.exception("Cannot create %s", self.res_dir) + raise Exception from ex + self.__logger.info("ENV:\n%s", env.string()) try: - if not self.orchestrator['requirements']['preserve_setup']: - self.__logger.info("Removing deployment files...") - testresult = os.path.join(self.case_dir, 'TestResults.json') - if os.path.exists(testresult): - os.remove(testresult) - self.__logger.info("Removing %s file ", self.filename) - if os.path.exists(self.filename): - os.remove(self.filename) - self.__logger.info("Destroying Orchestrator...") - os.system('juju destroy-controller -y abot-controller ' - '--destroy-all-models') + assert self._install_juju() + assert self._install_juju_wait() + assert self._register_cloud() + assert self._register_credentials() + assert self.deploy_orchestrator() + assert self.deploy_vnf() + assert self.test_vnf() except Exception: # pylint: disable=broad-except - self.__logger.warn("Some issue during the undeployment ..") - self.__logger.warn("Tenant clean continue ..") - - if not self.orchestrator['requirements']['preserve_setup']: - self.__logger.info('Remove the Abot_epc OS object ..') - for creator in reversed(self.created_object): - try: - creator.clean() - except Exception as exc: # pylint: disable=broad-except - self.__logger.error('Unexpected error cleaning - %s', exc) - - self.__logger.info("Releasing all the floating IPs") - floating_ips = os_utils.get_floating_ips(self.neutron_client) - tenant_id = os_utils.get_tenant_id(self.keystone_client, - self.tenant_name) - self.__logger.info("TENANT ID : %s", tenant_id) - for item in floating_ips: - if item['tenant_id'] == tenant_id: - os_utils.delete_floating_ip(self.neutron_client, - item['id']) - self.__logger.info("Cleaning Projects and Users") - for creator in reversed(self.created_object): - try: - creator.clean() - except Exception as exc: # pylint: disable=broad-except - self.__logger.error('Unexpected error cleaning - %s', exc) - return True - + self.__logger.exception("juju_epc failed") + return 1 + return 0 -# ---------------------------------------------------------- -# -# YAML UTILS -# -# ----------------------------------------------------------- -def get_config(parameter, file_path): - """ - Returns the value of a given parameter in file.yaml - parameter must be given in string format with dots - Example: general.openstack.image_name - """ - with open(file_path) as config_file: - file_yaml = yaml.safe_load(config_file) - config_file.close() - value = file_yaml - for element in parameter.split("."): - value = value.get(element) - if value is None: - raise ValueError("The parameter %s is not defined in" - " reporting.yaml" % parameter) - return value + def clean(self): + """Clean created objects/functions.""" + (_, stdout, stderr) = self.ssh.exec_command( + '/snap/bin/juju debug-log --replay --no-tail') + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + (_, stdout, stderr) = self.ssh.exec_command( + '/snap/bin/juju destroy-controller -y abot-controller ' + '--destroy-all-models') + self.__logger.debug("stdout:\n%s", stdout.read().decode("utf-8")) + self.__logger.debug("stderr:\n%s", stderr.read().decode("utf-8")) + for fip in self.cloud.list_floating_ips(): + self.cloud.delete_floating_ip(fip.id) + if self.image_alt: + self.cloud.delete_image(self.image_alt) + if self.flavor_alt: + self.orig_cloud.delete_flavor(self.flavor_alt.id) + super().clean() def sig_test_format(sig_test): @@ -422,7 +429,7 @@ def sig_test_format(sig_test): def process_abot_test_result(file_path): """ Process ABoT Result """ - with open(file_path) as test_result: + with open(file_path, encoding='utf-8') as test_result: data = json.load(test_result) res = [] for tests in data: @@ -432,7 +439,7 @@ def process_abot_test_result(file_path): for steps in flatten_steps: steps['result'] = steps['step_status'] res.append(steps) - except: + except Exception: # pylint: disable=broad-except logging.error("Could not post data to ElasticSearch host") raise return res @@ -474,49 +481,3 @@ def update_data(obj): raise return obj - - -def get_instance_metadata(nova_client, instance): - """ Get instance Metadata - Instance ID """ - try: - instance = nova_client.servers.get(instance.id) - return instance.metadata - except Exception as exc: # pylint: disable=broad-except - logging.error("Error [get_instance_status(nova_client)]: %s", exc) - return None - - -CLOUD_TEMPLATE = """clouds: - abot-epc: - type: openstack - auth-types: [userpass] - endpoint: {url} - regions: - {region}: - endpoint: {url} -credentials: - abot-epc: - abot-epc: - auth-type: userpass - password: {pass} - tenant-name: {tenant_n} - username: {user_n}""" - - -def write_config(fname, template, **kwargs): - """ Generate yaml from template for addinh cloud in juju """ - with open(fname, 'w') as yfile: - yfile.write(template.format(**kwargs)) - - -def append_config(file_name, p_domain, u_domain): - """ Append values into a yaml file """ - with open(file_name) as yfile: - doc = yaml.load(yfile) - doc['credentials']['abot-epc']['abot-epc']['project-domain-name'] = ( - p_domain) - doc['credentials']['abot-epc']['abot-epc']['user-domain-name'] = ( - u_domain) - - with open(file_name, 'w') as yfile: - yaml.safe_dump(doc, yfile, default_flow_style=False) diff --git a/functest/opnfv_tests/vnf/ims/clearwater.py b/functest/opnfv_tests/vnf/ims/clearwater.py new file mode 100644 index 000000000..4c143fd70 --- /dev/null +++ b/functest/opnfv_tests/vnf/ims/clearwater.py @@ -0,0 +1,190 @@ +#!/usr/bin/env python +# +# Copyright (c) 2017 All rights reserved +# This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# +# http://www.apache.org/licenses/LICENSE-2.0 + +"""Ease testing any Clearwater deployment""" + +import logging +import os +import re +import time + +import pkg_resources +import requests + +from functest.utils import config +import functest.utils.functest_utils as ft_utils + +__author__ = ("Valentin Boucher <valentin.boucher@orange.com>, " + "Helen Yao <helanyao@gmail.com>") + + +class ClearwaterTesting(): + """vIMS clearwater base usable by several orchestrators""" + + def __init__(self, case_name, bono_ip, ellis_ip): + self.logger = logging.getLogger(__name__) + self.case_dir = pkg_resources.resource_filename( + 'functest', 'opnfv_tests/vnf/ims') + self.data_dir = getattr(config.CONF, 'dir_ims_data') + self.result_dir = os.path.join( + getattr(config.CONF, 'dir_results'), case_name) + self.test_dir = getattr(config.CONF, 'dir_repo_vims_test') + + if not os.path.exists(self.data_dir): + os.makedirs(self.data_dir) + if not os.path.exists(self.result_dir): + os.makedirs(self.result_dir) + + self.ellis_ip = ellis_ip + self.bono_ip = bono_ip + + def availability_check(self, signup_code='secret', two_numbers=False): + """Create one or two numbers""" + assert self.ellis_ip + output_dict = {} + self.logger.debug('Ellis IP: %s', self.ellis_ip) + output_dict['ellis_ip'] = self.ellis_ip + account_url = f'http://{self.ellis_ip}/accounts' + params = {"password": "functest", + "full_name": "opnfv functest user", + "email": "functest@opnfv.org", + "signup_code": signup_code} + output_dict['login'] = params + + number_res = self._create_ellis_account(account_url, params) + output_dict['number'] = number_res + + session_url = f'http://{self.ellis_ip}/session' + session_data = { + 'username': params['email'], + 'password': params['password'], + 'email': params['email'] + } + cookies = self._get_ellis_session_cookies(session_url, session_data) + + number_url = ( + f"http://{self.ellis_ip}/accounts/{params['email']}/numbers") + self.logger.debug('Create 1st calling number on Ellis') + number_res = self._create_ellis_number(number_url, cookies) + + if two_numbers: + self.logger.debug('Create 2nd calling number on Ellis') + number_res = self._create_ellis_number(number_url, cookies) + output_dict['number2'] = number_res + + return output_dict + + def _create_ellis_account(self, account_url, params): + i = 80 + for iloop in range(i): + try: + req = requests.post(account_url, data=params) + if req.status_code == 201: + account_res = req.json() + self.logger.info( + 'Account %s is created on Ellis\n%s', + params.get('full_name'), account_res) + return account_res + raise Exception("Cannot create ellis account") + except Exception: # pylint: disable=broad-except + self.logger.info( + "try %s: cannot create ellis account", iloop + 1) + time.sleep(30) + raise Exception( + f"Unable to create an account {params.get('full_name')}") + + def _get_ellis_session_cookies(self, session_url, params): + i = 15 + for iloop in range(i): + try: + req = requests.post(session_url, data=params) + if req.status_code == 201: + cookies = req.cookies + self.logger.debug('cookies: %s', cookies) + return cookies + raise Exception('Failed to get cookies for Ellis') + except Exception: # pylint: disable=broad-except + self.logger.info( + "try %s: cannot get cookies for Ellis", iloop + 1) + time.sleep(10) + raise Exception('Failed to get cookies for Ellis') + + def _create_ellis_number(self, number_url, cookies): + i = 30 + for iloop in range(i): + try: + req = requests.post(number_url, cookies=cookies) + if req.status_code == 200: + number_res = req.json() + self.logger.info( + 'Calling number is created: %s', number_res) + return number_res + if req and req.json(): + reason = req.json()['reason'] + else: + reason = req + self.logger.info("cannot create a number: %s", reason) + raise Exception('Failed to create a number') + except Exception: # pylint: disable=broad-except + self.logger.info( + "try %s: cannot create a number", iloop + 1) + time.sleep(25) + raise Exception('Failed to create a number') + + def run_clearwater_live_test(self, public_domain, signup_code='secret'): + """Run the Clearwater live tests + + It first runs dnsmasq to reach clearwater services by FQDN and then the + Clearwater live tests. All results are saved in ims_test_output.txt. + + Returns: + - a dict containing the overall results + - None on error + """ + # pylint: disable=too-many-locals,too-many-arguments + self.logger.info('Run Clearwater live test') + script = (f'cd {self.test_dir};' + f'rake test[{public_domain}] SIGNUP_CODE={signup_code}') + if self.bono_ip and self.ellis_ip: + subscript = f' PROXY={self.bono_ip} ELLIS={self.ellis_ip}' + script = f'{script}{subscript}' + script = f'{script} --trace' + cmd = f"/bin/sh -c '{script}'" + self.logger.debug('Live test cmd: %s', cmd) + output_file = os.path.join(self.result_dir, "ims_test_output.txt") + ft_utils.execute_command(cmd, + error_msg='Clearwater live test failed', + output_file=output_file) + + with open(output_file, 'r', encoding='utf-8') as ofile: + result = ofile.read() + + if result != "": + self.logger.debug(result) + + vims_test_result = {} + try: + grp = re.search( + r'^(\d+) failures out of (\d+) tests run.*\n' + r'(\d+) tests skipped$', result, re.MULTILINE | re.DOTALL) + assert grp + vims_test_result["failures"] = int(grp.group(1)) + vims_test_result["total"] = int(grp.group(2)) + vims_test_result["skipped"] = int(grp.group(3)) + vims_test_result['passed'] = ( + int(grp.group(2)) - int(grp.group(3)) - int(grp.group(1))) + if vims_test_result['total'] - vims_test_result['skipped'] > 0: + vnf_test_rate = vims_test_result['passed'] / ( + vims_test_result['total'] - vims_test_result['skipped']) + else: + vnf_test_rate = 0 + except Exception: # pylint: disable=broad-except + self.logger.exception("Cannot parse live tests results") + return None, 0 + return vims_test_result, vnf_test_rate diff --git a/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py b/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py deleted file mode 100644 index 8851f7a48..000000000 --- a/functest/opnfv_tests/vnf/ims/clearwater_ims_base.py +++ /dev/null @@ -1,165 +0,0 @@ -#!/usr/bin/env python -# -# Copyright (c) 2017 All rights reserved -# This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# -# http://www.apache.org/licenses/LICENSE-2.0 -import json -import logging -import os -import pkg_resources -import shlex -import shutil -import subprocess -import time - -import requests - -import functest.core.vnf as vnf -from functest.utils.constants import CONST -import functest.utils.functest_utils as ft_utils - -__author__ = ("Valentin Boucher <valentin.boucher@orange.com>, " - "Helen Yao <helanyao@gmail.com>") - - -class ClearwaterOnBoardingBase(vnf.VnfOnBoarding): - """ vIMS clearwater base usable by several orchestrators""" - - def __init__(self, **kwargs): - self.logger = logging.getLogger(__name__) - super(ClearwaterOnBoardingBase, self).__init__(**kwargs) - self.case_dir = pkg_resources.resource_filename( - 'functest', 'opnfv_tests/vnf/ims') - self.data_dir = CONST.__getattribute__('dir_ims_data') - self.result_dir = os.path.join(CONST.__getattribute__('dir_results'), - self.case_name) - self.test_dir = CONST.__getattribute__('dir_repo_vims_test') - - if not os.path.exists(self.data_dir): - os.makedirs(self.data_dir) - if not os.path.exists(self.result_dir): - os.makedirs(self.result_dir) - - def config_ellis(self, ellis_ip, signup_code='secret', two_numbers=False): - output_dict = {} - self.logger.debug('Configure Ellis: %s', ellis_ip) - output_dict['ellis_ip'] = ellis_ip - account_url = 'http://{0}/accounts'.format(ellis_ip) - params = {"password": "functest", - "full_name": "opnfv functest user", - "email": "functest@opnfv.org", - "signup_code": signup_code} - rq = requests.post(account_url, data=params) - output_dict['login'] = params - if rq.status_code != 201 and rq.status_code != 409: - raise Exception("Unable to create an account for number provision") - self.logger.debug('Account is created on Ellis: %s', params) - - session_url = 'http://{0}/session'.format(ellis_ip) - session_data = { - 'username': params['email'], - 'password': params['password'], - 'email': params['email'] - } - rq = requests.post(session_url, data=session_data) - if rq.status_code != 201: - raise Exception('Failed to get cookie for Ellis') - cookies = rq.cookies - self.logger.debug('Cookies: %s', cookies) - - number_url = 'http://{0}/accounts/{1}/numbers'.format( - ellis_ip, - params['email']) - self.logger.debug('Create 1st calling number on Ellis') - i = 30 - while rq.status_code != 200 and i > 0: - try: - number_res = self.create_ellis_number(number_url, cookies) - break - except: - if i == 1: - raise Exception("Unable to create a number") - self.logger.warn("Unable to create a number. Retry ..") - time.sleep(25) - i = i - 1 - output_dict['number'] = number_res - - if two_numbers: - self.logger.debug('Create 2nd calling number on Ellis') - number_res = self.create_ellis_number(number_url, cookies) - output_dict['number2'] = number_res - - return output_dict - - def create_ellis_number(self, number_url, cookies): - rq = requests.post(number_url, cookies=cookies) - - if rq.status_code != 200: - if rq and rq.json(): - reason = rq.json()['reason'] - else: - reason = rq - raise Exception("Unable to create a number: %s" % reason) - number_res = rq.json() - self.logger.info('Calling number is created: %s', number_res) - return number_res - - def run_clearwater_live_test(self, dns_ip, public_domain, - bono_ip=None, ellis_ip=None, - signup_code='secret'): - self.logger.info('Run Clearwater live test') - dns_file = '/etc/resolv.conf' - dns_file_bak = '/etc/resolv.conf.bak' - self.logger.debug('Backup %s -> %s', dns_file, dns_file_bak) - shutil.copy(dns_file, dns_file_bak) - cmd = ("dnsmasq -d -u root --server=/clearwater.opnfv/{0} " - "-r /etc/resolv.conf.bak".format(dns_ip)) - dnsmasq_process = subprocess.Popen(shlex.split(cmd)) - script = ('echo -e "nameserver {0}" > {1};' - 'cd {2};' - 'rake test[{3}] SIGNUP_CODE={4}' - .format('127.0.0.1', - dns_file, - self.test_dir, - public_domain, - signup_code)) - if bono_ip and ellis_ip: - subscript = ' PROXY={0} ELLIS={1}'.format(bono_ip, ellis_ip) - script = '{0}{1}'.format(script, subscript) - script = ('{0}{1}'.format(script, ' --trace')) - cmd = "/bin/bash -c '{0}'".format(script) - self.logger.debug('Live test cmd: %s', cmd) - output_file = os.path.join(self.result_dir, "ims_test_output.txt") - ft_utils.execute_command(cmd, - error_msg='Clearwater live test failed', - output_file=output_file) - dnsmasq_process.kill() - with open(dns_file_bak, 'r') as bak_file: - result = bak_file.read() - with open(dns_file, 'w') as f: - f.write(result) - - f = open(output_file, 'r') - result = f.read() - if result != "": - self.logger.debug(result) - - vims_test_result = "" - tempFile = os.path.join(self.test_dir, "temp.json") - try: - self.logger.debug("Trying to load test results") - with open(tempFile) as f: - vims_test_result = json.load(f) - f.close() - except Exception: - self.logger.error("Unable to retrieve test results") - - try: - os.remove(tempFile) - except Exception: - self.logger.error("Deleting file failed") - - return vims_test_result diff --git a/functest/opnfv_tests/vnf/ims/cloudify_ims.py b/functest/opnfv_tests/vnf/ims/cloudify_ims.py index b8a815c28..b93af7d6d 100644 --- a/functest/opnfv_tests/vnf/ims/cloudify_ims.py +++ b/functest/opnfv_tests/vnf/ims/cloudify_ims.py @@ -9,525 +9,254 @@ """CloudifyIms testcase implementation.""" +from __future__ import division + import logging import os import time -from cloudify_rest_client import CloudifyClient -from cloudify_rest_client.executions import Execution -from scp import SCPClient -import yaml - -from functest.energy import energy -from functest.opnfv_tests.openstack.snaps import snaps_utils -import functest.opnfv_tests.vnf.ims.clearwater_ims_base as clearwater_ims_base -from functest.utils.constants import CONST - -from snaps.config.flavor import FlavorConfig -from snaps.config.image import ImageConfig -from snaps.config.keypair import KeypairConfig -from snaps.config.network import NetworkConfig, PortConfig, SubnetConfig -from snaps.config.router import RouterConfig -from snaps.config.security_group import ( - Direction, Protocol, SecurityGroupConfig, SecurityGroupRuleConfig) -from snaps.config.vm_inst import FloatingIpConfig, VmInstanceConfig - -from snaps.openstack.create_flavor import OpenStackFlavor -from snaps.openstack.create_image import OpenStackImage -from snaps.openstack.create_instance import OpenStackVmInstance -from snaps.openstack.create_keypairs import OpenStackKeypair -from snaps.openstack.create_network import OpenStackNetwork -from snaps.openstack.create_router import OpenStackRouter -from snaps.openstack.create_security_group import OpenStackSecurityGroup -from snaps.openstack.utils import keystone_utils +import pkg_resources +import six +from functest.core import cloudify +from functest.opnfv_tests.vnf.ims import clearwater +from functest.utils import config +from functest.utils import env +from functest.utils import functest_utils __author__ = "Valentin Boucher <valentin.boucher@orange.com>" -class CloudifyIms(clearwater_ims_base.ClearwaterOnBoardingBase): +class CloudifyIms(cloudify.Cloudify): """Clearwater vIMS deployed with Cloudify Orchestrator Case.""" __logger = logging.getLogger(__name__) + filename_alt = ('/home/opnfv/functest/images/' + 'ubuntu-14.04-server-cloudimg-amd64-disk1.img') + + flavor_alt_ram = 1024 + flavor_alt_vcpus = 1 + flavor_alt_disk = 3 + + quota_security_group = 20 + quota_security_group_rule = 100 + quota_port = 50 + + cop_yaml = ("https://github.com/cloudify-cosmo/cloudify-openstack-plugin/" + "releases/download/2.14.7/plugin.yaml") + cop_wgn = ("https://github.com/cloudify-cosmo/cloudify-openstack-plugin/" + "releases/download/2.14.7/cloudify_openstack_plugin-2.14.7-py27" + "-none-linux_x86_64-centos-Core.wgn") + def __init__(self, **kwargs): """Initialize CloudifyIms testcase object.""" if "case_name" not in kwargs: kwargs["case_name"] = "cloudify_ims" - super(CloudifyIms, self).__init__(**kwargs) + super().__init__(**kwargs) # Retrieve the configuration try: - self.config = CONST.__getattribute__( - 'vnf_{}_config'.format(self.case_name)) - except Exception: - raise Exception("VNF config file not found") - - self.snaps_creds = '' + self.config = getattr( + config.CONF, f'vnf_{self.case_name}_config') + except Exception as exc: + raise Exception("VNF config file not found") from exc + self.case_dir = pkg_resources.resource_filename( + 'functest', 'opnfv_tests/vnf/ims') config_file = os.path.join(self.case_dir, self.config) - self.orchestrator = dict( - requirements=get_config("orchestrator.requirements", config_file), - ) + self.details['orchestrator'] = dict( - name=get_config("orchestrator.name", config_file), - version=get_config("orchestrator.version", config_file), + name=functest_utils.get_parameter_from_yaml( + "orchestrator.name", config_file), + version=functest_utils.get_parameter_from_yaml( + "orchestrator.version", config_file), status='ERROR', result='' ) - self.__logger.debug("Orchestrator configuration %s", self.orchestrator) + self.vnf = dict( - descriptor=get_config("vnf.descriptor", config_file), - inputs=get_config("vnf.inputs", config_file), - requirements=get_config("vnf.requirements", config_file) + descriptor=functest_utils.get_parameter_from_yaml( + "vnf.descriptor", config_file), + inputs=functest_utils.get_parameter_from_yaml( + "vnf.inputs", config_file) ) self.details['vnf'] = dict( descriptor_version=self.vnf['descriptor']['version'], - name=get_config("vnf.name", config_file), - version=get_config("vnf.version", config_file), + name=functest_utils.get_parameter_from_yaml( + "vnf.name", config_file), + version=functest_utils.get_parameter_from_yaml( + "vnf.version", config_file), ) self.__logger.debug("VNF configuration: %s", self.vnf) self.details['test_vnf'] = dict( - name=get_config("vnf_test_suite.name", config_file), - version=get_config("vnf_test_suite.version", config_file) + name=functest_utils.get_parameter_from_yaml( + "vnf_test_suite.name", config_file), + version=functest_utils.get_parameter_from_yaml( + "vnf_test_suite.version", config_file) ) - self.images = get_config("tenant_images", config_file) - self.__logger.info("Images needed for vIMS: %s", self.images) - - def prepare(self): - """Prepare testscase (Additional pre-configuration steps).""" - super(CloudifyIms, self).prepare() - - self.__logger.info("Additional pre-configuration steps") - - compute_quotas = self.os_project.get_compute_quotas() - network_quotas = self.os_project.get_network_quotas() - - for key, value in ( - self.vnf['requirements']['compute_quotas'].items()): - setattr(compute_quotas, key, value) - - for key, value in ( - self.vnf['requirements']['network_quotas'].items()): - setattr(network_quotas, key, value) - - compute_quotas = self.os_project.update_compute_quotas(compute_quotas) - network_quotas = self.os_project.update_network_quotas(network_quotas) - - # needs some images - self.__logger.info("Upload some OS images if it doesn't exist") - for image_name, image_file in self.images.iteritems(): - self.__logger.info("image: %s, file: %s", image_name, image_file) - if image_file and image_name: - image_creator = OpenStackImage( - self.snaps_creds, - ImageConfig( - name=image_name, image_user='cloud', - img_format='qcow2', image_file=image_file)) - image_creator.create() - # self.created_object.append(image_creator) - - def deploy_orchestrator(self): + + self.image_alt = None + self.flavor_alt = None + self.clearwater = None + + def check_requirements(self): + if env.get('NEW_USER_ROLE').lower() == "admin": + self.__logger.warning( + "Defining NEW_USER_ROLE=admin will easily break the testcase " + "because Cloudify doesn't manage tenancy (e.g. subnet " + "overlapping)") + + def execute(self): """ Deploy Cloudify Manager. network, security group, fip, VM creation """ - # network creation - + assert super().execute() == 0 start_time = time.time() - self.__logger.info("Creating keypair ...") - kp_file = os.path.join(self.data_dir, "cloudify_ims.pem") - keypair_settings = KeypairConfig(name='cloudify_ims_kp', - private_filepath=kp_file) - keypair_creator = OpenStackKeypair(self.snaps_creds, keypair_settings) - keypair_creator.create() - self.created_object.append(keypair_creator) - - self.__logger.info("Creating full network ...") - subnet_settings = SubnetConfig(name='cloudify_ims_subnet', - cidr='10.67.79.0/24') - network_settings = NetworkConfig(name='cloudify_ims_network', - subnet_settings=[subnet_settings]) - network_creator = OpenStackNetwork(self.snaps_creds, network_settings) - network_creator.create() - self.created_object.append(network_creator) - ext_net_name = snaps_utils.get_ext_net_name(self.snaps_creds) - router_creator = OpenStackRouter( - self.snaps_creds, - RouterConfig( - name='cloudify_ims_router', - external_gateway=ext_net_name, - internal_subnets=[subnet_settings.name])) - router_creator.create() - self.created_object.append(router_creator) - - # security group creation - self.__logger.info("Creating security group for cloudify manager vm") - sg_rules = list() - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name="sg-cloudify-manager", - direction=Direction.ingress, protocol=Protocol.tcp, - port_range_min=1, port_range_max=65535)) - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name="sg-cloudify-manager", - direction=Direction.ingress, protocol=Protocol.udp, - port_range_min=1, port_range_max=65535)) - - securit_group_creator = OpenStackSecurityGroup( - self.snaps_creds, - SecurityGroupConfig( - name="sg-cloudify-manager", - rule_settings=sg_rules)) - - securit_group_creator.create() - self.created_object.append(securit_group_creator) - - # orchestrator VM flavor - self.__logger.info("Get or create flavor for cloudify manager vm ...") - - flavor_settings = FlavorConfig( - name=self.orchestrator['requirements']['flavor']['name'], - ram=self.orchestrator['requirements']['flavor']['ram_min'], - disk=50, - vcpus=2) - flavor_creator = OpenStackFlavor(self.snaps_creds, flavor_settings) - flavor_creator.create() - self.created_object.append(flavor_creator) - image_settings = ImageConfig( - name=self.orchestrator['requirements']['os_image'], - image_user='centos', - exists=True) - - port_settings = PortConfig(name='cloudify_manager_port', - network_name=network_settings.name) - - manager_settings = VmInstanceConfig( - name='cloudify_manager', - flavor=flavor_settings.name, - port_settings=[port_settings], - security_group_names=[securit_group_creator.sec_grp_settings.name], - floating_ip_settings=[FloatingIpConfig( - name='cloudify_manager_fip', - port_name=port_settings.name, - router_name=router_creator.router_settings.name)]) - - manager_creator = OpenStackVmInstance(self.snaps_creds, - manager_settings, - image_settings, - keypair_settings) - - self.__logger.info("Creating cloudify manager VM") - manager_creator.create() - self.created_object.append(manager_creator) - - public_auth_url = keystone_utils.get_endpoint( - self.snaps_creds, 'identity') - - self.__logger.info("Set creds for cloudify manager") - cfy_creds = dict(keystone_username=self.tenant_name, - keystone_password=self.tenant_name, - keystone_tenant_name=self.tenant_name, - keystone_url=public_auth_url) - - cfy_client = CloudifyClient(host=manager_creator.get_floating_ip().ip, - username='admin', - password='admin', - tenant='default_tenant') - - self.orchestrator['object'] = cfy_client - - self.__logger.info("Attemps running status of the Manager") - cfy_status = None - retry = 10 - while str(cfy_status) != 'running' and retry: + self.orig_cloud.set_network_quotas( + self.project.project.name, + security_group=self.quota_security_group, + security_group_rule=self.quota_security_group_rule, + port=self.quota_port) + self.__logger.info("Put OpenStack creds in manager") + cfy_creds = dict( + keystone_username=self.project.user.name, + keystone_password=self.project.password, + keystone_tenant_name=self.project.project.name, + keystone_url=self.get_public_auth_url(self.orig_cloud), + region=os.environ.get('OS_REGION_NAME', 'RegionOne'), + user_domain_name=os.environ.get( + 'OS_USER_DOMAIN_NAME', 'Default'), + project_domain_name=os.environ.get( + 'OS_PROJECT_DOMAIN_NAME', 'Default')) + self.__logger.info("Set creds for cloudify manager %s", cfy_creds) + + for loop in range(10): try: - cfy_status = cfy_client.manager.get_status()['status'] - self.__logger.debug("The current manager status is %s", - cfy_status) + secrets_list = self.cfy_client.secrets.list() + for k, val in six.iteritems(cfy_creds): + if not any(d.get('key', None) == k for d in secrets_list): + self.cfy_client.secrets.create(k, val) + else: + self.cfy_client.secrets.update(k, val) + break except Exception: # pylint: disable=broad-except - self.__logger.warning("Cloudify Manager isn't " + - "up and running. Retrying ...") - retry = retry - 1 - time.sleep(30) - - if str(cfy_status) == 'running': - self.__logger.info("Cloudify Manager is up and running") + self.__logger.info( + "try %s: Cannot create secrets", loop + 1) + time.sleep(30) else: - raise Exception("Cloudify Manager isn't up and running") - - self.__logger.info("Put OpenStack creds in manager") - secrets_list = cfy_client.secrets.list() - for k, val in cfy_creds.iteritems(): - if not any(d.get('key', None) == k for d in secrets_list): - cfy_client.secrets.create(k, val) - else: - cfy_client.secrets.update(k, val) + self.__logger.error("Cannot create secrets") + return 1 duration = time.time() - start_time - self.__logger.info("Put private keypair in manager") - if manager_creator.vm_ssh_active(block=True): - ssh = manager_creator.ssh_client() - scp = SCPClient(ssh.get_transport(), socket_timeout=15.0) - scp.put(kp_file, '~/') - cmd = "sudo cp ~/cloudify_ims.pem /etc/cloudify/" - run_blocking_ssh_command(ssh, cmd) - cmd = "sudo chmod 444 /etc/cloudify/cloudify_ims.pem" - run_blocking_ssh_command(ssh, cmd) - cmd = "sudo yum install -y gcc python-devel" - run_blocking_ssh_command(ssh, cmd, "Unable to install packages \ - on manager") + self.put_private_key() + self.upload_cfy_plugins(self.cop_yaml, self.cop_wgn) self.details['orchestrator'].update(status='PASS', duration=duration) self.vnf['inputs'].update(dict( - external_network_name=ext_net_name, - network_name=network_settings.name + external_network_name=self.ext_net.name, + network_name=self.network.name, + key_pair_name=self.keypair.name )) + if self.deploy_vnf() and self.test_vnf(): + self.result = 100 + return 0 self.result = 1/3 * 100 - return True + return 1 def deploy_vnf(self): """Deploy Clearwater IMS.""" start_time = time.time() + secgroups = self.cloud.list_security_groups( + filters={'name': 'default', + 'project_id': self.project.project.id}) + if secgroups: + secgroup = secgroups[0] + else: + self.__logger.error("No 'default' security group in project %s", + self.project.project.name) + return False + + self.cloud.create_security_group_rule( + secgroup.id, port_range_min=22, port_range_max=22, + protocol='tcp', direction='ingress') + self.__logger.info("Upload VNFD") - cfy_client = self.orchestrator['object'] descriptor = self.vnf['descriptor'] - cfy_client.blueprints.publish_archive(descriptor.get('url'), - descriptor.get('name'), - descriptor.get('file_name')) - - self.__logger.info("Get or create flavor for all clearwater vm") - flavor_settings = FlavorConfig( - name=self.vnf['requirements']['flavor']['name'], - ram=self.vnf['requirements']['flavor']['ram_min'], - disk=25, - vcpus=1) - flavor_creator = OpenStackFlavor(self.snaps_creds, flavor_settings) - flavor_creator.create() - self.created_object.append(flavor_creator) + self.cfy_client.blueprints.upload( + descriptor.get('file_name'), descriptor.get('name')) + self.image_alt = self.publish_image_alt() + self.flavor_alt = self.create_flavor_alt() self.vnf['inputs'].update(dict( - flavor_id=self.vnf['requirements']['flavor']['name'], + image_id=self.image_alt.id, + flavor_id=self.flavor_alt.id, )) self.__logger.info("Create VNF Instance") - cfy_client.deployments.create(descriptor.get('name'), - descriptor.get('name'), - self.vnf.get('inputs')) + self.cfy_client.deployments.create( + descriptor.get('name'), descriptor.get('name'), + self.vnf.get('inputs')) - wait_for_execution(cfy_client, - _get_deployment_environment_creation_execution( - cfy_client, descriptor.get('name')), - self.__logger, - timeout=300) + cloudify.wait_for_execution( + self.cfy_client, + cloudify.get_execution_id(self.cfy_client, descriptor.get('name')), + self.__logger, timeout=300) self.__logger.info("Start the VNF Instance deployment") - execution = cfy_client.executions.start(descriptor.get('name'), - 'install') + execution = self.cfy_client.executions.start( + descriptor.get('name'), 'install') # Show execution log - execution = wait_for_execution(cfy_client, execution, self.__logger) - - duration = time.time() - start_time + execution = cloudify.wait_for_execution( + self.cfy_client, execution, self.__logger, timeout=3600) self.__logger.info(execution) - if execution.status == 'terminated': - self.details['vnf'].update(status='PASS', duration=duration) - self.result += 1/3 * 100 - result = True - else: - self.details['vnf'].update(status='FAIL', duration=duration) - result = False - return result + if execution.status != 'terminated': + self.details['vnf'].update(status='FAIL', + duration=time.time() - start_time) + return False + + ellis_ip = self.cfy_client.deployments.outputs.get( + self.vnf['descriptor'].get('name'))['outputs']['ellis_ip'] + bono_ip = self.cfy_client.deployments.outputs.get( + self.vnf['descriptor'].get('name'))['outputs']['bono_ip'] + self.clearwater = clearwater.ClearwaterTesting( + self.case_name, bono_ip, ellis_ip) + self.clearwater.availability_check() + + self.details['vnf'].update(status='PASS', + duration=time.time() - start_time) + self.result += 1/3 * 100 + return True def test_vnf(self): """Run test on clearwater ims instance.""" start_time = time.time() - - cfy_client = self.orchestrator['object'] - - outputs = cfy_client.deployments.outputs.get( - self.vnf['descriptor'].get('name'))['outputs'] - dns_ip = outputs['dns_ip'] - ellis_ip = outputs['ellis_ip'] - self.config_ellis(ellis_ip) - + dns_ip = self.cfy_client.deployments.outputs.get( + self.vnf['descriptor'].get('name'))['outputs']['dns_ip'] if not dns_ip: return False - - vims_test_result = self.run_clearwater_live_test( - dns_ip=dns_ip, + short_result, vnf_test_rate = self.clearwater.run_clearwater_live_test( public_domain=self.vnf['inputs']["public_domain"]) duration = time.time() - start_time - short_result, nb_test = sig_test_format(vims_test_result) self.__logger.info(short_result) - self.details['test_vnf'].update(result=short_result, - full_result=vims_test_result, - duration=duration) - try: - vnf_test_rate = short_result['passed'] / nb_test - # orchestrator + vnf + test_vnf - self.result += vnf_test_rate / 3 * 100 - except ZeroDivisionError: - self.__logger.error("No test has been executed") + self.details['test_vnf'].update(result=short_result, duration=duration) + self.result += vnf_test_rate / 3 * 100 + if vnf_test_rate == 0: self.details['test_vnf'].update(status='FAIL') - return False - - return True + return bool(vnf_test_rate > 0) def clean(self): """Clean created objects/functions.""" - try: - cfy_client = self.orchestrator['object'] - dep_name = self.vnf['descriptor'].get('name') - # kill existing execution - self.__logger.info('Deleting the current deployment') - exec_list = cfy_client.executions.list(dep_name) - for execution in exec_list: - if execution['status'] == "started": - try: - cfy_client.executions.cancel(execution['id'], - force=True) - except: # pylint: disable=broad-except - self.__logger.warn("Can't cancel the current exec") - - execution = cfy_client.executions.start( - dep_name, - 'uninstall', - parameters=dict(ignore_failure=True), - force=True) - - wait_for_execution(cfy_client, execution, self.__logger) - cfy_client.deployments.delete(self.vnf['descriptor'].get('name')) - cfy_client.blueprints.delete(self.vnf['descriptor'].get('name')) - except: # pylint: disable=broad-except - self.__logger.warn("Some issue during the undeployment ..") - self.__logger.warn("Tenant clean continue ..") - - super(CloudifyIms, self).clean() - - @energy.enable_recording - def run(self, **kwargs): - """Execute CloudifyIms test case.""" - return super(CloudifyIms, self).run(**kwargs) - - -# ---------------------------------------------------------- -# -# YAML UTILS -# -# ----------------------------------------------------------- -def get_config(parameter, file_path): - """ - Get config parameter. - - Returns the value of a given parameter in file.yaml - parameter must be given in string format with dots - Example: general.openstack.image_name - """ - with open(file_path) as config_file: - file_yaml = yaml.safe_load(config_file) - config_file.close() - value = file_yaml - for element in parameter.split("."): - value = value.get(element) - if value is None: - raise ValueError("The parameter %s is not defined in" - " reporting.yaml" % parameter) - return value - - -def wait_for_execution(client, execution, logger, timeout=1500, ): - """Wait for a workflow execution on Cloudify Manager.""" - # if execution already ended - return without waiting - if execution.status in Execution.END_STATES: - return execution - - if timeout is not None: - deadline = time.time() + timeout - - # Poll for execution status and execution logs, until execution ends - # and we receive an event of type in WORKFLOW_END_TYPES - offset = 0 - batch_size = 50 - event_list = [] - execution_ended = False - while True: - event_list = client.events.list( - execution_id=execution.id, - _offset=offset, - _size=batch_size, - include_logs=False, - sort='@timestamp').items - - offset = offset + len(event_list) - for event in event_list: - logger.debug(event.get('message')) - - if timeout is not None: - if time.time() > deadline: - raise RuntimeError( - 'execution of operation {0} for deployment {1} ' - 'timed out'.format(execution.workflow_id, - execution.deployment_id)) - else: - # update the remaining timeout - timeout = deadline - time.time() - - if not execution_ended: - execution = client.executions.get(execution.id) - execution_ended = execution.status in Execution.END_STATES - - if execution_ended: - break - - time.sleep(5) - - return execution - - -def _get_deployment_environment_creation_execution(client, deployment_id): - """ - Get the execution id of a env preparation. - - network, security group, fip, VM creation - """ - executions = client.executions.list(deployment_id=deployment_id) - for execution in executions: - if execution.workflow_id == 'create_deployment_environment': - return execution - raise RuntimeError('Failed to get create_deployment_environment ' - 'workflow execution.' - 'Available executions: {0}'.format(executions)) - - -def sig_test_format(sig_test): - """Process the signaling result to have a short result.""" - nb_passed = 0 - nb_failures = 0 - nb_skipped = 0 - for data_test in sig_test: - if data_test['result'] == "Passed": - nb_passed += 1 - elif data_test['result'] == "Failed": - nb_failures += 1 - elif data_test['result'] == "Skipped": - nb_skipped += 1 - short_sig_test_result = {} - short_sig_test_result['passed'] = nb_passed - short_sig_test_result['failures'] = nb_failures - short_sig_test_result['skipped'] = nb_skipped - nb_test = nb_passed + nb_skipped - return (short_sig_test_result, nb_test) - - -def run_blocking_ssh_command(ssh, cmd, error_msg="Unable to run this command"): - """Command to run ssh command with the exit status.""" - stdin, stdout, stderr = ssh.exec_command(cmd) - if stdout.channel.recv_exit_status() != 0: - raise Exception(error_msg) + self.kill_existing_execution(self.vnf['descriptor'].get('name')) + if self.image_alt: + self.cloud.delete_image(self.image_alt) + if self.flavor_alt: + self.orig_cloud.delete_flavor(self.flavor_alt.id) + super().clean() diff --git a/functest/opnfv_tests/vnf/ims/cloudify_ims.yaml b/functest/opnfv_tests/vnf/ims/cloudify_ims.yaml index e1a7bf316..869281a20 100644 --- a/functest/opnfv_tests/vnf/ims/cloudify_ims.yaml +++ b/functest/opnfv_tests/vnf/ims/cloudify_ims.yaml @@ -1,46 +1,23 @@ --- -tenant_images: - ubuntu_14.04: - /home/opnfv/functest/images/trusty-server-cloudimg-amd64-disk1.img - cloudify_manager_4.0: - /home/opnfv/functest/images/cloudify-manager-premium-4.0.1.qcow2 orchestrator: name: cloudify version: '4.0' - requirements: - flavor: - name: m1.medium - ram_min: 4096 - os_image: 'cloudify_manager_4.0' vnf: name: clearwater - version: '107' + version: '129' descriptor: - file_name: openstack-blueprint.yaml + file_name: /src/cloudify_vims/openstack-blueprint.yaml name: clearwater-opnfv - url: - https://github.com/Orange-OpenSource/opnfv-cloudify-clearwater/archive/master.zip - version: '122' - requirements: - flavor: - name: m1.small - ram_min: 2048 - compute_quotas: - cores: 50 - instances: 15 - network_quotas: - security_group: 20 - security_group_rule: 100 - port: 50 + version: '129' inputs: image_id: 'ubuntu_14.04' - flavor_id: 'm1.small' + flavor_id: 'cloudify.small' agent_user: ubuntu key_pair_name: cloudify_ims_kp private_key_path: '/etc/cloudify/cloudify_ims.pem' external_network_name: '' public_domain: clearwater.opnfv - release: repo122 + release: repo129 bono_cluster_size: 1 sprout_cluster_size: 1 vellum_cluster_size: 1 @@ -48,4 +25,4 @@ vnf: homer_cluster_size: 1 vnf_test_suite: name: clearwater-live-test - version: "1.0" + version: '1.0' diff --git a/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py b/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py deleted file mode 100644 index 6d7428043..000000000 --- a/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py +++ /dev/null @@ -1,498 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2017 Orange, IXIA and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 - -"""CloudifyImsPerf testcase implementation.""" - -import logging -import os -import time - -import json -import yaml -import paramiko -import dns.resolver -from jinja2 import Environment, FileSystemLoader - -from functest.energy import energy -from functest.opnfv_tests.openstack.snaps import snaps_utils -from functest.opnfv_tests.vnf.ims import cloudify_ims -from functest.opnfv_tests.vnf.ims.ixia.utils import IxChassisUtils -from functest.opnfv_tests.vnf.ims.ixia.utils import IxLoadUtils -from functest.opnfv_tests.vnf.ims.ixia.utils import IxRestUtils -from functest.utils.constants import CONST - -from snaps.config.flavor import FlavorConfig -from snaps.config.image import ImageConfig -from snaps.config.network import NetworkConfig, PortConfig, SubnetConfig -from snaps.config.router import RouterConfig -from snaps.config.security_group import ( - Direction, Protocol, SecurityGroupConfig, SecurityGroupRuleConfig) -from snaps.config.vm_inst import FloatingIpConfig, VmInstanceConfig -from snaps.openstack.create_flavor import OpenStackFlavor -from snaps.openstack.create_instance import OpenStackVmInstance -from snaps.openstack.create_network import OpenStackNetwork -from snaps.openstack.create_router import OpenStackRouter -from snaps.openstack.create_security_group import OpenStackSecurityGroup - - -__author__ = "Valentin Boucher <valentin.boucher@orange.com>" - - -class CloudifyImsPerf(cloudify_ims.CloudifyIms): - """Clearwater vIMS deployed with Cloudify Orchestrator Case.""" - - __logger = logging.getLogger(__name__) - - def __init__(self, **kwargs): - """Initialize CloudifyIms testcase object.""" - if "case_name" not in kwargs: - kwargs["case_name"] = "cloudify_ims_perf" - super(CloudifyImsPerf, self).__init__(**kwargs) - - # Retrieve the configuration - try: - self.config = CONST.__getattribute__( - 'vnf_{}_config'.format(self.case_name)) - except Exception: - raise Exception("VNF config file not found") - - self.snaps_creds = '' - self.created_object = [] - - config_file = os.path.join(self.case_dir, self.config) - self.orchestrator = dict( - requirements=get_config("orchestrator.requirements", config_file), - ) - self.details['orchestrator'] = dict( - name=get_config("orchestrator.name", config_file), - version=get_config("orchestrator.version", config_file), - status='ERROR', - result='' - ) - self.__logger.debug("Orchestrator configuration %s", self.orchestrator) - self.vnf = dict( - descriptor=get_config("vnf.descriptor", config_file), - inputs=get_config("vnf.inputs", config_file), - requirements=get_config("vnf.requirements", config_file) - ) - self.details['vnf'] = dict( - descriptor_version=self.vnf['descriptor']['version'], - name=get_config("vnf.name", config_file), - version=get_config("vnf.version", config_file), - ) - self.__logger.debug("VNF configuration: %s", self.vnf) - - self.test = dict( - version=get_config("vnf_test_suite.version", config_file), - inputs=get_config("vnf_test_suite.inputs", config_file), - requirements=get_config("vnf_test_suite.requirements", config_file) - ) - - self.details['test_vnf'] = dict( - name=get_config("vnf_test_suite.name", config_file), - version=get_config("vnf_test_suite.version", config_file), - requirements=get_config("vnf_test_suite.requirements", config_file) - ) - self.images = get_config("tenant_images", config_file) - self.__logger.info("Images needed for vIMS: %s", self.images) - - def test_vnf(self): - """Run IXIA Stress test on clearwater ims instance.""" - start_time = time.time() - - cfy_client = self.orchestrator['object'] - - outputs = cfy_client.deployments.outputs.get( - self.vnf['descriptor'].get('name'))['outputs'] - dns_ip = outputs['dns_ip'] - ellis_ip = outputs['ellis_ip'] - - self.__logger.info("Creating full IXIA network ...") - subnet_settings = SubnetConfig(name='ixia_management_subnet', - cidr='10.10.10.0/24') - network_settings = NetworkConfig(name='ixia_management_network', - subnet_settings=[subnet_settings]) - network_creator = OpenStackNetwork(self.snaps_creds, network_settings) - network_creator.create() - self.created_object.append(network_creator) - ext_net_name = snaps_utils.get_ext_net_name(self.snaps_creds) - router_creator = OpenStackRouter( - self.snaps_creds, - RouterConfig( - name='ixia_management_router', - external_gateway=ext_net_name, - internal_subnets=[subnet_settings.name])) - router_creator.create() - self.created_object.append(router_creator) - - # security group creation - self.__logger.info("Creating security groups for IXIA VMs") - sg_rules = list() - sg_rules.append( - SecurityGroupRuleConfig(sec_grp_name="ixia_management", - direction=Direction.ingress, - protocol=Protocol.tcp, port_range_min=1, - port_range_max=65535)) - sg_rules.append( - SecurityGroupRuleConfig(sec_grp_name="ixia_management", - direction=Direction.ingress, - protocol=Protocol.udp, port_range_min=1, - port_range_max=65535)) - sg_rules.append( - SecurityGroupRuleConfig(sec_grp_name="ixia_management", - direction=Direction.ingress, - protocol=Protocol.icmp)) - - ixia_managment_sg_settings = SecurityGroupConfig( - name="ixia_management", rule_settings=sg_rules) - securit_group_creator = OpenStackSecurityGroup( - self.snaps_creds, - ixia_managment_sg_settings) - - securit_group_creator.create() - self.created_object.append(securit_group_creator) - - sg_rules = list() - sg_rules.append( - SecurityGroupRuleConfig(sec_grp_name="ixia_ssh_http", - direction=Direction.ingress, - protocol=Protocol.tcp, port_range_min=1, - port_range_max=65535)) - - ixia_ssh_http_sg_settings = SecurityGroupConfig( - name="ixia_ssh_http", rule_settings=sg_rules) - securit_group_creator = OpenStackSecurityGroup( - self.snaps_creds, - ixia_ssh_http_sg_settings) - - securit_group_creator.create() - self.created_object.append(securit_group_creator) - - chassis_flavor_settings = FlavorConfig( - name="ixia_vChassis", - ram=4096, - disk=40, - vcpus=2) - flavor_creator = OpenStackFlavor(self.snaps_creds, - chassis_flavor_settings) - flavor_creator.create() - self.created_object.append(flavor_creator) - - card_flavor_settings = FlavorConfig( - name="ixia_vCard", - ram=4096, - disk=4, - vcpus=2) - flavor_creator = OpenStackFlavor(self.snaps_creds, - card_flavor_settings) - flavor_creator.create() - self.created_object.append(flavor_creator) - - load_flavor_settings = FlavorConfig( - name="ixia_vLoad", - ram=8192, - disk=100, - vcpus=4) - flavor_creator = OpenStackFlavor(self.snaps_creds, - load_flavor_settings) - flavor_creator.create() - self.created_object.append(flavor_creator) - - chassis_image_settings = ImageConfig( - name=self.test['requirements']['chassis']['image'], - image_user='admin', - exists=True) - - card_image_settings = ImageConfig( - name=self.test['requirements']['card']['image'], - image_user='admin', - exists=True) - - load_image_settings = ImageConfig( - name=self.test['requirements']['load']['image'], - image_user='admin', - exists=True) - - chassis_port_settings = PortConfig( - name='ixia_chassis_port', network_name=network_settings.name) - - card1_port1_settings = PortConfig( - name='ixia_card1_port1', network_name=network_settings.name) - - card2_port1_settings = PortConfig( - name='ixia_card2_port1', network_name=network_settings.name) - - card1_port2_settings = PortConfig( - name='ixia_card1_port2', network_name="cloudify_ims_network") - - card2_port2_settings = PortConfig( - name='ixia_card2_port2', network_name="cloudify_ims_network") - - load_port_settings = PortConfig( - name='ixia_load_port', network_name=network_settings.name) - - chassis_settings = VmInstanceConfig( - name='ixia_vChassis', - flavor=chassis_flavor_settings.name, - port_settings=[chassis_port_settings], - security_group_names=[ixia_ssh_http_sg_settings.name, - ixia_managment_sg_settings.name], - floating_ip_settings=[FloatingIpConfig( - name='ixia_vChassis_fip', - port_name=chassis_port_settings.name, - router_name=router_creator.router_settings.name)]) - - vm_creator = OpenStackVmInstance(self.snaps_creds, - chassis_settings, - chassis_image_settings) - - self.__logger.info("Creating Ixia vChassis VM") - vm_creator.create() - fip_chassis = vm_creator.get_floating_ip().ip - self.created_object.append(vm_creator) - - card1_settings = VmInstanceConfig( - name='ixia_vCard1', - flavor=card_flavor_settings.name, - port_settings=[card1_port1_settings, card1_port2_settings], - security_group_names=[ixia_managment_sg_settings.name]) - - vm_creator = OpenStackVmInstance(self.snaps_creds, - card1_settings, - card_image_settings) - - self.__logger.info("Creating Ixia vCard1 VM") - vm_creator.create() - vcard_ips = list() - vcard_ips_p2 = list() - vcard_ips.append(vm_creator.get_port_ip('ixia_card1_port1')) - vcard_ips_p2.append(vm_creator.get_port_ip('ixia_card1_port2')) - self.created_object.append(vm_creator) - - card2_settings = VmInstanceConfig( - name='ixia_vCard2', - flavor=card_flavor_settings.name, - port_settings=[card2_port1_settings, card2_port2_settings], - security_group_names=[ixia_managment_sg_settings.name]) - - vm_creator = OpenStackVmInstance(self.snaps_creds, - card2_settings, - card_image_settings) - - self.__logger.info("Creating Ixia vCard2 VM") - vm_creator.create() - vcard_ips.append(vm_creator.get_port_ip('ixia_card2_port1')) - vcard_ips_p2.append(vm_creator.get_port_ip('ixia_card2_port2')) - self.created_object.append(vm_creator) - - load_settings = VmInstanceConfig( - name='ixia_vLoad', - flavor=load_flavor_settings.name, - port_settings=[load_port_settings], - security_group_names=[ixia_ssh_http_sg_settings.name, - ixia_managment_sg_settings.name], - floating_ip_settings=[FloatingIpConfig( - name='ixia_vLoad_fip', - port_name=load_port_settings.name, - router_name=router_creator.router_settings.name)]) - - vm_creator = OpenStackVmInstance(self.snaps_creds, - load_settings, - load_image_settings) - - self.__logger.info("Creating Ixia vLoad VM") - vm_creator.create() - fip_load = vm_creator.get_floating_ip().ip - self.created_object.append(vm_creator) - - self.__logger.info("Chassis IP is: %s", fip_chassis) - login_url = "https://" + str(fip_chassis) + "/api/v1/auth/session" - cards_url = "https://" + str(fip_chassis) + "/api/v2/ixos/cards/" - - payload = json.dumps({"username": "admin", - "password": "admin", - "rememberMe": "false"}) - api_key = json.loads(( - IxChassisUtils.ChassisRestAPI.postWithPayload( - login_url, payload)))["apiKey"] - - self.__logger.info("Adding 2 card back inside the ixia chassis...") - - for ip in vcard_ips: - payload = {"ipAddress": str(ip)} - response = json.loads(IxChassisUtils.ChassisRestAPI.postOperation( - cards_url, api_key, payload)) - count = 0 - while (int( - IxChassisUtils.ChassisRestAPI.getWithHeaders( - response['url'], api_key)['progress']) != 100): - self.__logger.debug("Operation did not finish yet. \ - Waiting for 1 more second..") - time.sleep(1) - if count > 60: - raise Exception("Adding card take more than 60 seconds") - count += 1 - - ssh = paramiko.SSHClient() - ssh.set_missing_host_key_policy(paramiko.MissingHostKeyPolicy()) - ssh.connect(fip_chassis, username="admin", password="admin") - cmd = "set license-check disable" - run_blocking_ssh_command(ssh, cmd) - cmd = "restart-service ixServer" - run_blocking_ssh_command(ssh, cmd) - - self.config_ellis(ellis_ip) - - # Get IPs of P-CSCF - resolver = dns.resolver.Resolver() - resolver.nameservers = [dns_ip] - result = resolver.query("bono.clearwater.local") - - iplistims = '' - i = 0 - for rdata in result: - i = i + 1 - print rdata.address - iplistims += str(rdata.address) - if i != len(result): - iplistims += ';' - - kResourcesUrl = 'http://%s:%s/api/v0/resources' % (fip_load, 8080) - - kRxfPath = r"REG_CALL_OPNFV_v13.rxf" - test_filname = self.test['inputs']['test_filname'] - kGatewaySharedFolder = '/mnt/ixload-share/' - kRxfRelativeUploadPath = 'uploads/%s' % os.path.split(kRxfPath)[1] - kRxfAbsoluteUploadPath = os.path.join(kGatewaySharedFolder, - kRxfRelativeUploadPath) - kChassisList = [str(fip_chassis)] - dataFileNameList = [test_filname, - 'Registration_only_LPS.tst', - 'SIPCall.tst'] - - kPortListPerCommunityCommunity = {"VoIP1@VM1": [(1, 1, 1)], - "VoIP2@VM2": [(1, 2, 1)]} - - kStatsToDisplayDict = self.test['inputs']['stats'] - connection = IxRestUtils.getConnection(fip_load, 8080) - - self.__logger.info("Creating a new session...") - sessionUrl = IxLoadUtils.createSession(connection, - self.test['version']) - - license_server = self.test['inputs']['licenseServer'] - IxLoadUtils.configureLicenseServer(connection, - sessionUrl, - license_server) - - files_dir = os.path.join(self.case_dir, 'ixia/files') - target_file = open(os.path.join(files_dir, test_filname), 'w') - j2_env = Environment(loader=FileSystemLoader(files_dir), - trim_blocks=True) - self.test['inputs'].update(dict( - ipchassis=fip_chassis, ipcard1=vcard_ips_p2[0], - ipcard2=vcard_ips_p2[1], iplistims=iplistims - )) - - target_file.write( - j2_env.get_template(test_filname + '.template').render( - self.test['inputs'] - )) - target_file.close() - - self.__logger.info('Uploading files %s...' % kRxfPath) - for dataFile in dataFileNameList: - localFilePath = os.path.join(files_dir, dataFile) - remoteFilePath = os.path.join(kGatewaySharedFolder, - 'uploads/%s' % dataFile) - IxLoadUtils.uploadFile(connection, kResourcesUrl, - localFilePath, remoteFilePath) - self.__logger.info('Upload file finished.') - - self.__logger.info("Loading repository %s..." % kRxfAbsoluteUploadPath) - IxLoadUtils.loadRepository(connection, sessionUrl, - kRxfAbsoluteUploadPath) - - self.__logger.info("Clearing chassis list...") - IxLoadUtils.clearChassisList(connection, sessionUrl) - - self.__logger.info("Adding chassis %s..." % (kChassisList)) - IxLoadUtils.addChassisList(connection, sessionUrl, kChassisList) - - self.__logger.info("Assigning new ports...") - IxLoadUtils.assignPorts(connection, sessionUrl, - kPortListPerCommunityCommunity) - - self.__logger.info("Starting the test...") - IxLoadUtils.runTest(connection, sessionUrl) - - self.__logger.info( - "Polling values for stats %s..." % (kStatsToDisplayDict)) - result = IxLoadUtils.pollStats(connection, sessionUrl, - kStatsToDisplayDict) - self.__logger.info("Test finished.") - self.__logger.info("Checking test status...") - testRunError = IxLoadUtils.getTestRunError(connection, sessionUrl) - - self.__logger.info(result) - duration = time.time() - start_time - self.details['test_vnf'].update(status='PASS', - result=result, - duration=duration) - if testRunError: - self.__logger.info( - "The test exited with following error: %s" % (testRunError)) - self.details['test_vnf'].update(status='FAIL', duration=duration) - return False - else: - self.__logger.info("The test completed successfully.") - self.details['test_vnf'].update(status='PASS', duration=duration) - self.result += 1/3 * 100 - return True - - def clean(self): - """Clean created objects/functions.""" - super(CloudifyImsPerf, self).clean() - - @energy.enable_recording - def run(self, **kwargs): - """Execute CloudifyIms test case.""" - return super(CloudifyImsPerf, self).run(**kwargs) - - -# ---------------------------------------------------------- -# -# YAML UTILS -# -# ----------------------------------------------------------- -def get_config(parameter, file_path): - """ - Get config parameter. - - Returns the value of a given parameter in file.yaml - parameter must be given in string format with dots - Example: general.openstack.image_name - """ - with open(file_path) as config_file: - file_yaml = yaml.safe_load(config_file) - config_file.close() - value = file_yaml - for element in parameter.split("."): - value = value.get(element) - if value is None: - raise ValueError("The parameter %s is not defined in" - " reporting.yaml" % parameter) - return value - - -def run_blocking_ssh_command(ssh, cmd, error_msg="Unable to run this command"): - """Command to run ssh command with the exit status.""" - stdin, stdout, stderr = ssh.exec_command(cmd) - if stdout.channel.recv_exit_status() != 0: - raise Exception(error_msg) diff --git a/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.yaml b/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.yaml deleted file mode 100644 index 77b295d0a..000000000 --- a/functest/opnfv_tests/vnf/ims/cloudify_ims_perf.yaml +++ /dev/null @@ -1,91 +0,0 @@ ---- -tenant_images: - ubuntu_14.04: - http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img - cloudify_manager_4.0: - http://repository.cloudifysource.org/cloudify/4.0.1/sp-release/cloudify-manager-premium-4.0.1.qcow2 - # PATH of the virtual chassis image. - IXIA_CHASSIS: # Ixia_Virtual_Chassis_8.30_EA_KVM.qcow2 - # PATH of the virtual card image. - IXIA_CARD: # Ixia_Virtual_Load_Module_8.30_EA_KVM.qcow2 - # PATH of the virtual loader image. - IXIA_LOAD: # Ixia_Virtual_Loader_8.30_EA_KVM.qcow2 -orchestrator: - name: cloudify - version: '4.0' - requirements: - flavor: - name: m1.medium - ram_min: 4096 - os_image: 'cloudify_manager_4.0' -vnf: - name: clearwater - version: '107' - descriptor: - file_name: openstack-blueprint-with-numbers.yaml - name: clearwater-opnfv - url: - https://github.com/Orange-OpenSource/opnfv-cloudify-clearwater/archive/master.zip - version: '122' - requirements: - flavor: - name: m1.small - ram_min: 2048 - compute_quotas: - cores: 150 - instances: 100 - ram: 256000 - network_quotas: - security_group: 25 - security_group_rule: 100 - port: 150 - inputs: - image_id: 'ubuntu_14.04' - flavor_id: 'm1.small' - agent_user: ubuntu - key_pair_name: cloudify_ims_kp - private_key_path: '/etc/cloudify/cloudify_ims.pem' - external_network_name: '' - public_domain: clearwater.opnfv - release: repo122 - bono_cluster_size: 2 - sprout_cluster_size: 2 - vellum_cluster_size: 2 - dime_cluster_size: 2 - homer_cluster_size: 2 - number_of_subscribers: 50000 -vnf_test_suite: - name: ixia - version: "8.30.0.161" - requirements: - chassis: - image: IXIA_CHASSIS - card: - image: IXIA_CARD - load: - image: IXIA_LOAD - inputs: - ipgw: '10.67.79.1' - pnregistering: '201001[0000-]' - pncalling: '201000[0000-]' - pncalled: '201000[5000-]' - sipportregistering: '[5060-]' - sipportcalling: '[5061-]' - sipportcalled: '[5062-]' - domainname: 'clearwater.opnfv' - authpassword: 'toto' - registeringtotalcalls: '1000' - registeringduration: '180' - activecalls: '1000' - testduration: '360' - test_filname: 'REG_CALL_OPNFV_v13.rxf' - licenseServer: '' # IP of YOUR IXIA LICENSE SERVER - stats: - 'Signaling(VoIPSip)': - - 'Successful Registrations' - - 'Failed Registrations' - - 'Active Calls' - - 'Attempted Calls' - - 'Received Calls' - - 'Failed Attempted Calls' - - 'Failed Received Calls' diff --git a/functest/opnfv_tests/vnf/ims/heat_ims.py b/functest/opnfv_tests/vnf/ims/heat_ims.py new file mode 100644 index 000000000..0d4e345a0 --- /dev/null +++ b/functest/opnfv_tests/vnf/ims/heat_ims.py @@ -0,0 +1,253 @@ +#!/usr/bin/env python + +# Copyright (c) 2018 Kontron, Orange and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 + +"""HeatIms testcase implementation.""" + +from __future__ import division + +import logging +import os +import re +import time +import tempfile + +import paramiko +import pkg_resources +from xtesting.core import testcase + +from functest.core import singlevm +from functest.opnfv_tests.vnf.ims import clearwater +from functest.utils import config +from functest.utils import env +from functest.utils import functest_utils + +__author__ = "Valentin Boucher <valentin.boucher@kontron.com>" + + +class HeatIms(singlevm.VmReady2): + # pylint: disable=too-many-instance-attributes + """Clearwater vIMS deployed with Heat Orchestrator Case.""" + + __logger = logging.getLogger(__name__) + + filename = ('/home/opnfv/functest/images/' + 'ubuntu-14.04-server-cloudimg-amd64-disk1.img') + + flavor_ram = 1024 + flavor_vcpus = 1 + flavor_disk = 3 + + quota_security_group = 20 + quota_security_group_rule = 100 + quota_port = 50 + + parameters = { + 'private_mgmt_net_cidr': '192.168.100.0/24', + 'private_mgmt_net_gateway': '192.168.100.254', + 'private_mgmt_net_pool_start': '192.168.100.1', + 'private_mgmt_net_pool_end': '192.168.100.253'} + + def __init__(self, **kwargs): + """Initialize HeatIms testcase object.""" + if "case_name" not in kwargs: + kwargs["case_name"] = "heat_ims" + super().__init__(**kwargs) + + # Retrieve the configuration + try: + self.config = getattr( + config.CONF, f'vnf_{self.case_name}_config') + except Exception as exc: + raise Exception("VNF config file not found") from exc + + self.case_dir = pkg_resources.resource_filename( + 'functest', 'opnfv_tests/vnf/ims') + config_file = os.path.join(self.case_dir, self.config) + + self.vnf = dict( + descriptor=functest_utils.get_parameter_from_yaml( + "vnf.descriptor", config_file), + parameters=functest_utils.get_parameter_from_yaml( + "vnf.inputs", config_file) + ) + self.details['vnf'] = dict( + descriptor_version=self.vnf['descriptor']['version'], + name=functest_utils.get_parameter_from_yaml( + "vnf.name", config_file), + version=functest_utils.get_parameter_from_yaml( + "vnf.version", config_file), + ) + self.__logger.debug("VNF configuration: %s", self.vnf) + self.keypair = None + self.stack = None + self.clearwater = None + self.role = None + (_, self.key_filename) = tempfile.mkstemp() + + def create_network_resources(self): + pass + + def execute(self): + # pylint: disable=too-many-locals,too-many-statements + """ + Prepare Tenant/User + + network, security group, fip, VM creation + """ + self.orig_cloud.set_network_quotas( + self.project.project.name, + security_group=self.quota_security_group, + security_group_rule=self.quota_security_group_rule, + port=self.quota_port) + if not self.orig_cloud.get_role("heat_stack_owner"): + self.role = self.orig_cloud.create_role("heat_stack_owner") + self.orig_cloud.grant_role( + "heat_stack_owner", user=self.project.user.id, + project=self.project.project.id, + domain=self.project.domain.id) + self.keypair = self.cloud.create_keypair( + f'{self.case_name}-kp_{self.guid}') + self.__logger.info("keypair:\n%s", self.keypair.private_key) + with open( + self.key_filename, 'w', encoding='utf-8') as private_key_file: + private_key_file.write(self.keypair.private_key) + + if self.deploy_vnf() and self.test_vnf(): + self.result = 100 + return 0 + self.result = 1/3 * 100 + return 1 + + def run(self, **kwargs): + """Deploy and test clearwater + + Here are the main actions: + - deploy clearwater stack via heat + - test the vnf instance + + Returns: + - TestCase.EX_OK + - TestCase.EX_RUN_ERROR on error + """ + status = testcase.TestCase.EX_RUN_ERROR + try: + assert self.cloud + assert super().run( + **kwargs) == testcase.TestCase.EX_OK + self.result = 0 + if not self.execute(): + self.result = 100 + status = testcase.TestCase.EX_OK + except Exception: # pylint: disable=broad-except + self.__logger.exception('Cannot run %s', self.case_name) + finally: + self.stop_time = time.time() + return status + + def _monit(self, username="ubuntu", timeout=60): + servers = self.cloud.list_servers(detailed=True) + self.__logger.debug("servers: %s", servers) + for server in servers: + if 'ns' in server.name: + break + self.__logger.info("server:\n%s", server.name) + ssh = paramiko.SSHClient() + ssh.set_missing_host_key_policy(paramiko.client.AutoAddPolicy()) + ssh.connect( + server.public_v4, username=username, + key_filename=self.key_filename, timeout=timeout) + (_, stdout, _) = ssh.exec_command('sudo monit summary') + self.__logger.info("output:\n%s", stdout.read().decode("utf-8")) + ssh.close() + + def deploy_vnf(self): + """Deploy Clearwater IMS.""" + start_time = time.time() + descriptor = self.vnf['descriptor'] + parameters = self.vnf['parameters'] + + parameters['public_mgmt_net_id'] = self.ext_net.id + parameters['flavor'] = self.flavor.name + parameters['image'] = self.image.name + parameters['key_name'] = self.keypair.name + parameters['external_mgmt_dns_ip'] = env.get('NAMESERVER') + parameters.update(self.parameters) + + self.__logger.info("Create Heat Stack") + self.stack = self.cloud.create_stack( + name=descriptor.get('name'), + template_file=descriptor.get('file_name'), + wait=True, **parameters) + self.__logger.debug("stack: %s", self.stack) + + self._monit() + + servers = self.cloud.list_servers(detailed=True) + self.__logger.debug("servers: %s", servers) + for server in servers: + if not self.check_regex_in_console( + server.name, regex='Cloud-init .* finished at ', loop=1): + return False + if 'ellis' in server.name: + self.__logger.debug("ellis: %s", server) + ellis_ip = server.public_v4 + elif 'bono' in server.name: + self.__logger.debug("bono: %s", server) + bono_ip = server.public_v4 + + assert ellis_ip + assert bono_ip + self.clearwater = clearwater.ClearwaterTesting( + self.case_name, bono_ip, ellis_ip) + # This call can take time and many retry because Heat is + # an infrastructure orchestrator so when Heat say "stack created" + # it means that all OpenStack ressources are created but not that + # Clearwater are up and ready (Cloud-Init script still running) + self.clearwater.availability_check() + + duration = time.time() - start_time + + self.details['vnf'].update(status='PASS', duration=duration) + self.result += 1/3 * 100 + + return True + + def test_vnf(self): + """Run test on clearwater ims instance.""" + start_time = time.time() + outputs = self.cloud.get_stack(self.stack.id).outputs + self.__logger.debug("stack outputs: %s", outputs) + dns_ip = re.findall(r'[0-9]+(?:\.[0-9]+){3}', str(outputs))[0] + if not dns_ip: + return False + short_result, vnf_test_rate = self.clearwater.run_clearwater_live_test( + public_domain=self.vnf['parameters']["zone"]) + duration = time.time() - start_time + self.__logger.info(short_result) + self.details['test_vnf'] = dict(result=short_result, duration=duration) + self.result += vnf_test_rate / 3 * 100 + if vnf_test_rate == 0: + self.details['test_vnf'].update(status='FAIL') + self._monit() + return bool(vnf_test_rate > 0) + + def clean(self): + """Clean created objects/functions.""" + assert self.cloud + try: + if self.stack: + self.cloud.delete_stack(self.stack.id, wait=True) + except TypeError: + # shade raises TypeError exceptions when checking stack status + pass + except Exception: # pylint: disable=broad-except + self.__logger.exception("Cannot clean stack ressources") + super().clean() + if self.role: + self.orig_cloud.delete_role(self.role.id) diff --git a/functest/opnfv_tests/vnf/ims/heat_ims.yaml b/functest/opnfv_tests/vnf/ims/heat_ims.yaml new file mode 100644 index 000000000..2ccdc0bf7 --- /dev/null +++ b/functest/opnfv_tests/vnf/ims/heat_ims.yaml @@ -0,0 +1,22 @@ +--- +orchestrator: + name: heat + version: '4.0' +vnf: + name: clearwater + version: '130' + descriptor: + file_name: /src/heat_vims/clearwater.yaml + name: clearwater-opnfv + version: '130' + inputs: + zone: clearwater.opnfv + dn_range_start: "6505550000" + dn_range_length: "1000" + bono_cluster_size: 1 + sprout_cluster_size: 1 + vellum_cluster_size: 1 + dime_cluster_size: 1 + homer_cluster_size: 1 + dnssec_key: + GkBraPnditvP2Em4oXV5wUTawmZaGGuO+Jt3ZnFkznGV3zFoQ+Ak13nuuOnO0JV5FqAr/KitdW6siqjXSjROXg== diff --git a/functest/opnfv_tests/vnf/ims/ixia/files/REG_CALL_OPNFV_v13.rxf.template b/functest/opnfv_tests/vnf/ims/ixia/files/REG_CALL_OPNFV_v13.rxf.template deleted file mode 100644 index 279362810..000000000 --- a/functest/opnfv_tests/vnf/ims/ixia/files/REG_CALL_OPNFV_v13.rxf.template +++ /dev/null @@ -1,16731 +0,0 @@ -<?xml version="1.0" ?> -<root ver="[21, [1, [0, [0]]]]" type="ixRepository"> - <_smSessionXml ver="[0, [1, [0, [0]]]]" type="ixSMSessionXML"> - <xml type="str"><rpf> <Ixia.Aptixia.StackManager.SMSession type="Ixia.Aptixia.StackManager.SMSession" objectid="d0db76dc-f224-429f-91ba-e207cd4711db" version="6.70.420"> <doWaitLinkUp type="Bool">0</doWaitLinkUp> <doGratArp type="Bool">0</doGratArp> <subscribeToGratArpNotifications type="Bool">0</subscribeToGratArpNotifications> <doInterfaceCheck type="Bool">0</doInterfaceCheck> <rebootPortsBeforeConfigure type="Bool">0</rebootPortsBeforeConfigure> <testDuration type="Int">10000</testDuration> <checkLinkState type="Bool">0</checkLinkState> <portGroupList type="ListNode"> <Ixia.Aptixia.StackManager.PortGroup type="Ixia.Aptixia.StackManager.PortGroup" objectid="e7fa1f9e-23d9-4742-96b2-6edce6c4424e" version="6.70.420"> <name type="String">VM1</name> <category type="String" /> <stack type="Ixia.Aptixia.StackManager.L1EthernetPlugin" objectid="45426251-0720-4316-b8a5-d6bce32e3d2e" version="6.70.420"> <autoNegotiate type="Bool">1</autoNegotiate> <speed type="String">k100FD</speed> <advertise10Half type="Bool">1</advertise10Half> <advertise10Full type="Bool">1</advertise10Full> <advertise100Half type="Bool">1</advertise100Half> <advertise100Full type="Bool">1</advertise100Full> <advertise1000Full type="Bool">1</advertise1000Full> <advertise2500Full type="Bool">1</advertise2500Full> <advertise5000Full type="Bool">1</advertise5000Full> <advertise10000Full type="Bool">0</advertise10000Full> <cardDualPhy type="Ixia.Aptixia.StackManager.DualPhyPlugin" objectid="836ee0d6-1957-42eb-a7a4-53bcfbdd36e0" version="6.70.420"> <medium type="String">copper</medium> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </cardDualPhy> <cardElm type="Ixia.Aptixia.StackManager.EthernetELMPlugin" objectid="8387c005-0df9-4fd2-977e-1c234c7be0cc" version="6.70.420"> <negotiateMasterSlave type="Bool">1</negotiateMasterSlave> <negotiationType type="String">master</negotiationType> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </cardElm> <enableFlowControl type="Bool">0</enableFlowControl> <directedAddress type="String">01:80:C2:00:00:01</directedAddress> <dataCenter type="Ixia.Aptixia.StackManager.DataCenterSettings" objectid="df9be2ec-31d8-47f0-babe-79a1710303f3" version="6.70.420"> <dcSupported type="Bool">1</dcSupported> <dcEnabled type="Bool">0</dcEnabled> <dcFlowControl type="Ixia.Aptixia.StackManager.DataCenterSettingsSkeleton+eFlowControlType">0</dcFlowControl> <dcMode type="Ixia.Aptixia.StackManager.DataCenterSettingsSkeleton+eDataCenterMode">2</dcMode> <dcPfcMapping type="IntList" /> <dcPfcPauseEnable type="Bool">0</dcPfcPauseEnable> <dcPfcPauseDelay type="Int">1</dcPfcPauseDelay> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </dataCenter> <childrenList type="ListNode"> <Ixia.Aptixia.StackManager.L2EthernetPlugin type="Ixia.Aptixia.StackManager.L2EthernetPlugin" objectid="166a11b6-4d30-40ea-b9e1-ac4fb44f112b" version="6.70.420"> <macRangeList type="ListNode"> <Ixia.Aptixia.StackManager.MacRange type="Ixia.Aptixia.StackManager.MacRange" objectid="ba896971-1d78-4e03-8f2a-28c65417612e" version="6.70.420"> <enabled type="Bool">1</enabled> <name type="String">MAC-R11</name> <mac type="String">00:0A:43:4F:1B:00</mac> <incrementBy type="String">00:00:00:00:00:01</incrementBy> <mtu type="Int">1410</mtu> <count type="Int">1</count> <vlanRange type="Ixia.Aptixia.StackManager.VlanIdRange" objectid="2b81e36c-9cbb-4d78-a70c-904da8d41b28" version="6.70.420"> <name type="String">VLAN-R11</name> <enabled type="Bool">0</enabled> <firstId type="Int">1</firstId> <incrementStep type="Int">1</incrementStep> <increment type="Int">1</increment> <uniqueCount type="Int">4094</uniqueCount> <priority type="Int">1</priority> <tpid type="String">0x8100</tpid> <innerEnable type="Bool">0</innerEnable> <innerFirstId type="Int">1</innerFirstId> <innerIncrementStep type="Int">1</innerIncrementStep> <innerIncrement type="Int">1</innerIncrement> <innerUniqueCount type="Int">4094</innerUniqueCount> <innerPriority type="Int">1</innerPriority> <idIncrMode type="Int">2</idIncrMode> <innerTpid type="String">0x8100</innerTpid> <ixLoadRestObjectId type="Int">9</ixLoadRestObjectId> </vlanRange> <ixLoadRestObjectId type="Int">9</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.MacRange> </macRangeList> <vlanRangeList type="ListNode"> <Ixia.Aptixia.StackManager.VlanIdRange type="Ixia.Aptixia.StackManager.VlanIdRange" objectid="2b81e36c-9cbb-4d78-a70c-904da8d41b28" version="6.70.420" /> </vlanRangeList> <childrenList type="ListNode"> <Ixia.Aptixia.StackManager.IpV4V6Plugin type="Ixia.Aptixia.StackManager.IpV4V6Plugin" objectid="9ea551b2-a0af-4a7d-9872-e9b94298d7bd" version="6.70.420"> <rangeList type="ListNode"> <Ixia.Aptixia.StackManager.IpV4V6Range type="Ixia.Aptixia.StackManager.IpV4V6Range" objectid="5affc0a7-68f6-46f6-b801-0e18e067a572" version="6.70.420"> <enabled type="Bool">1</enabled> <name type="String">IP-R13</name> <ipType type="String">IPv4</ipType> <ipAddress type="String">{{ipcard1}}</ipAddress> <prefix type="Int">16</prefix> <incrementBy type="String">0.0.0.1</incrementBy> <count type="Int">1</count> <autoCountEnabled type="Bool">0</autoCountEnabled> <gatewayAddress type="String">{{ipgw}}</gatewayAddress> <gatewayIncrement type="String">0.0.0.0</gatewayIncrement> <gatewayIncrementMode type="String">perSubnet</gatewayIncrementMode> <enableGatewayArp type="Bool">0</enableGatewayArp> <generateStatistics type="Bool">0</generateStatistics> <mss type="Int">1410</mss> <randomizeAddress type="Bool">0</randomizeAddress> <randomizeSeed type="Int">1007257123</randomizeSeed> <autoMacGeneration type="Bool">1</autoMacGeneration> <macRange type="Ixia.Aptixia.StackManager.MacRange" objectid="ba896971-1d78-4e03-8f2a-28c65417612e" version="6.70.420" /> <vlanRange type="Ixia.Aptixia.StackManager.VlanIdRange" objectid="2b81e36c-9cbb-4d78-a70c-904da8d41b28" version="6.70.420" /> <atmRange type="Ixia.Aptixia.StackManager.AtmRange" objectid="00000000-0000-0000-0000-000000000000" /> <pvcRange type="Ixia.Aptixia.StackManager.PvcRange" objectid="00000000-0000-0000-0000-000000000000" /> <autoIpTypeEnabled type="Bool">0</autoIpTypeEnabled> <ixLoadRestObjectId type="Int">9</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IpV4V6Range> </rangeList> <rangeGroups type="ListNode"> <Ixia.Aptixia.StackManager.RangeGroup type="Ixia.Aptixia.StackManager.RangeGroup" objectid="abf2b6e4-a102-4cbe-bf1b-a11f11b2faac" version="6.70.420"> <name type="String">Group1</name> <distribType type="Ixia.Aptixia.StackManager.RangeGroupSkeleton+eDistributionType">0</distribType> <rangeList type="ListNode"> <Ixia.Aptixia.StackManager.IpV4V6Range type="Ixia.Aptixia.StackManager.IpV4V6Range" objectid="5affc0a7-68f6-46f6-b801-0e18e067a572" version="6.70.420" /> </rangeList> <ixLoadRestObjectId type="Int">-1</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.RangeGroup> </rangeGroups> <childrenList type="ListNode" /> <extensionList type="ListNode" /> <dscMode type="Bool">0</dscMode> <name type="String">IP-8</name> <ixLoadRestObjectId type="Int">26</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IpV4V6Plugin> </childrenList> <extensionList type="ListNode" /> <dscMode type="Bool">0</dscMode> <name type="String">MAC/VLAN-8</name> <ixLoadRestObjectId type="Int">25</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.L2EthernetPlugin> </childrenList> <extensionList type="ListNode" /> <dscMode type="Bool">0</dscMode> <name type="String">Ethernet-1</name> <ixLoadRestObjectId type="Int">1</ixLoadRestObjectId> </stack> <globalPluginList type="ListNode"> <Ixia.Aptixia.StackManager.FilterPlugin type="Ixia.Aptixia.StackManager.FilterPlugin" objectid="976ba0fd-58ea-44d4-ae43-1b36c2556072" version="6.70.420"> <auto type="Bool">1</auto> <all type="Bool">0</all> <pppoecontrol type="Bool">0</pppoecontrol> <pppoenetwork type="Bool">0</pppoenetwork> <isis type="Bool">0</isis> <ip type="String" /> <tcp type="String" /> <udp type="String" /> <mac type="String" /> <icmp type="String" /> <name type="String">Filter-1</name> <ixLoadRestObjectId type="Int">1</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.FilterPlugin> <Ixia.Aptixia.StackManager.GratArpPlugin type="Ixia.Aptixia.StackManager.GratArpPlugin" objectid="3ebd05e7-88a6-49be-a50d-134908ac124c" version="6.70.420"> <enabled type="Bool">1</enabled> <forwardGratArp type="Bool">0</forwardGratArp> <rateControlEnabled type="Bool">0</rateControlEnabled> <maxFramesPerSecond type="Int">0</maxFramesPerSecond> <name type="String">GratARP-1</name> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.GratArpPlugin> <Ixia.Aptixia.StackManager.TCPPlugin type="Ixia.Aptixia.StackManager.TCPPlugin" objectid="1d9748c5-122e-4153-8ffd-67cd1309b8ce" version="6.70.420"> <bestPerfSettings type="Bool">0</bestPerfSettings> <accept_ra_all type="Bool">0</accept_ra_all> <tcp_abort_on_overflow type="Bool">0</tcp_abort_on_overflow> <tcp_adv_win_scale type="Int">2</tcp_adv_win_scale> <tcp_app_win type="Int">31</tcp_app_win> <tcp_bic type="Int">0</tcp_bic> <tcp_bic_fast_convergence type="Int">1</tcp_bic_fast_convergence> <tcp_bic_low_window type="Int">14</tcp_bic_low_window> <tcp_dsack type="Bool">1</tcp_dsack> <tcp_ecn type="Bool">0</tcp_ecn> <tcp_fack type="Bool">1</tcp_fack> <tcp_fin_timeout type="Int">60</tcp_fin_timeout> <tcp_frto type="Int">0</tcp_frto> <tcp_keepalive_intvl type="Int">75</tcp_keepalive_intvl> <tcp_keepalive_probes type="Int">9</tcp_keepalive_probes> <tcp_keepalive_time type="Int">7200</tcp_keepalive_time> <tcp_low_latency type="Int">0</tcp_low_latency> <tcp_max_orphans type="Int">8192</tcp_max_orphans> <tcp_max_syn_backlog type="Int">1024</tcp_max_syn_backlog> <tcp_max_tw_buckets type="Int">180000</tcp_max_tw_buckets> <tcp_mem_low type="Int">24576</tcp_mem_low> <tcp_mem_pressure type="Int">32768</tcp_mem_pressure> <tcp_mem_high type="Int">49152</tcp_mem_high> <tcp_moderate_rcvbuf type="Int">0</tcp_moderate_rcvbuf> <tcp_no_metrics_save type="Bool">0</tcp_no_metrics_save> <tcp_orphan_retries type="Int">0</tcp_orphan_retries> <tcp_reordering type="Int">3</tcp_reordering> <tcp_retrans_collapse type="Bool">1</tcp_retrans_collapse> <tcp_retries1 type="Int">3</tcp_retries1> <tcp_retries2 type="Int">5</tcp_retries2> <tcp_rfc1337 type="Bool">0</tcp_rfc1337> <tcp_rmem_min type="Int">4096</tcp_rmem_min> <tcp_rmem_default type="Int">8192</tcp_rmem_default> <tcp_rmem_max type="Int">262144</tcp_rmem_max> <tcp_sack type="Bool">1</tcp_sack> <tcp_stdurg type="Bool">0</tcp_stdurg> <tcp_synack_retries type="Int">5</tcp_synack_retries> <tcp_syn_retries type="Int">5</tcp_syn_retries> <tcp_timestamps type="Bool">1</tcp_timestamps> <tcp_tw_recycle type="Bool">1</tcp_tw_recycle> <tcp_tw_reuse type="Bool">0</tcp_tw_reuse> <tcp_vegas_alpha type="Int">2</tcp_vegas_alpha> <tcp_vegas_beta type="Int">6</tcp_vegas_beta> <tcp_vegas_cong_avoid type="Int">0</tcp_vegas_cong_avoid> <tcp_vegas_gamma type="Int">2</tcp_vegas_gamma> <tcp_westwood type="Int">0</tcp_westwood> <tcp_window_scaling type="Bool">0</tcp_window_scaling> <ip_no_pmtu_disc type="Bool">1</ip_no_pmtu_disc> <tcp_wmem_min type="Int">4096</tcp_wmem_min> <tcp_wmem_default type="Int">8192</tcp_wmem_default> <tcp_wmem_max type="Int">262144</tcp_wmem_max> <tcp_ipfrag_time type="Int">30</tcp_ipfrag_time> <tcp_port_min type="Int">1024</tcp_port_min> <tcp_port_max type="Int">65535</tcp_port_max> <tcp_rto_min type="Int">1000</tcp_rto_min> <tcp_rto_max type="Int">60000</tcp_rto_max> <tcp_tw_rfc1323_strict type="Bool">0</tcp_tw_rfc1323_strict> <udp_port_randomization type="Bool">0</udp_port_randomization> <disable_min_max_buffer_size type="Bool">1</disable_min_max_buffer_size> <llm_hdr_gap type="Int">8</llm_hdr_gap> <llm_hdr_gap_ns type="Int">10</llm_hdr_gap_ns> <inter_packet_granular_delay type="Double">0</inter_packet_granular_delay> <delayed_acks type="Bool">1</delayed_acks> <accept_ra_default type="Bool">0</accept_ra_default> <rps_needed type="Bool">0</rps_needed> <delayed_acks_segments type="Int">0</delayed_acks_segments> <delayed_acks_timeout type="Int">0</delayed_acks_timeout> <tcp_large_icwnd type="Int">0</tcp_large_icwnd> <tcp_mgmt_rmem type="Int">87380</tcp_mgmt_rmem> <tcp_mgmt_wmem type="Int">32768</tcp_mgmt_wmem> <adjust_tcp_buffers type="Bool">1</adjust_tcp_buffers> <name type="String">TCP-1</name> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.TCPPlugin> <Ixia.Aptixia.StackManager.DnsPlugin type="Ixia.Aptixia.StackManager.DnsPlugin" objectid="9cc60113-3e53-4cf2-b3b7-6fd7d3953bb4" version="6.70.420"> <domain type="String" /> <timeout type="Int">30</timeout> <nameServerList type="ListNode" /> <searchList type="ListNode" /> <hostList type="ListNode" /> <name type="String">DNS-1</name> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.DnsPlugin> <Ixia.Aptixia.StackManager.IxLoadSettingsPlugin type="Ixia.Aptixia.StackManager.IxLoadSettingsPlugin" objectid="399db714-47a8-445d-a24b-90d00d3f2e9e" version="1.0.0"> <teardownInterfaceWithUser type="Bool">0</teardownInterfaceWithUser> <interfaceBehavior type="Int">0</interfaceBehavior> <name type="String">Settings-1</name> <ixLoadRestObjectId type="Int">5</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IxLoadSettingsPlugin> <Ixia.Aptixia.StackManager.MeshingPlugin type="Ixia.Aptixia.StackManager.MeshingPlugin" objectid="39d2a556-cf85-4102-8461-b1f1413b2db5" version="6.70.420"> <trafficMaps type="ListNode"> <Ixia.Aptixia.StackManager.MeshingTrafficMap type="Ixia.Aptixia.StackManager.MeshingTrafficMap" objectid="cdca1e00-77a3-49ef-8fe5-afb321a51af2" version="6.70.420"> <name type="String">CALLING!VoIP2_CALLED#{{sipportcalled}}</name> <configMapFilename type="String">CALLINGScript.configmap</configMapFilename> <sourceActivityId type="Int">1</sourceActivityId> <ipPreference type="Ixia.Aptixia.StackManager.MeshingTrafficMapSkeleton+eIpPreference">0</ipPreference> <portRangesString type="String">{{sipportcalled}}</portRangesString> <meshingType type="Ixia.Aptixia.StackManager.MeshingTrafficMapSkeleton+eMeshingType">2</meshingType> <destinationActivityId type="Int">0</destinationActivityId> </Ixia.Aptixia.StackManager.MeshingTrafficMap> </trafficMaps> <activityRangeMapInfoList type="ListNode" /> <name type="String">Meshing-1</name> <ixLoadRestObjectId type="Int">11</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.MeshingPlugin> </globalPluginList> <portList type="Ixia.RpFramework.Server.Core.ShadowedPropertyStringList"> <String>{{ipchassis}};1;1</String> </portList> <typeSpecificData type="ListNode"> <Ixia.Aptixia.StackManager.IPSecPortGroupData type="Ixia.Aptixia.StackManager.IPSecPortGroupData" objectid="62e57abd-b4c6-45af-a720-7033259c203c" version="6.70.0"> <role type="String">Initiator</role> <associates type="ListNode" /> <overrideGlobalOptions type="Bool">0</overrideGlobalOptions> <useMaxInitiationRate type="Bool">0</useMaxInitiationRate> <maxInitiationRate type="Int">50</maxInitiationRate> <useMaxPendingTunnels type="Bool">0</useMaxPendingTunnels> <maxPendingTunnels type="Int">50</maxPendingTunnels> <teardownRate type="Int">10</teardownRate> <enableESPPerStreamStats type="Bool">0</enableESPPerStreamStats> <enableESPReplayStats type="Bool">0</enableESPReplayStats> <activities type="ListNode" /> <pcpuLogLevel type="String">0</pcpuLogLevel> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IPSecPortGroupData> </typeSpecificData> <virtualMode type="Bool">0</virtualMode> <allowedVirtualModeTypes type="Ixia.RpFramework.Server.Core.ShadowedPropertyStringList" /> <doOwnership type="Bool">0</doOwnership> <branchToNicMap type="ListNode" /> <cpuAggregation type="Bool">0</cpuAggregation> <activePort type="String" /> <networkLayersManager type="Ixia.Aptixia.StackManager.NetworkLayersManager" objectid="f7999b28-d3d6-4a69-bd61-ab5516b7c540" version="6.70.420"> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </networkLayersManager> <ixLoadRestObjectId type="Int">1</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.PortGroup> <Ixia.Aptixia.StackManager.PortGroup type="Ixia.Aptixia.StackManager.PortGroup" objectid="b1fbd381-b769-4ec1-8715-299508ecb458" version="6.70.420"> <name type="String">VM2</name> <category type="String" /> <stack type="Ixia.Aptixia.StackManager.L1EthernetPlugin" objectid="48f486a6-f09b-4770-a091-e9ce609e9bec" version="6.70.420"> <autoNegotiate type="Bool">1</autoNegotiate> <speed type="String">k100FD</speed> <advertise10Half type="Bool">1</advertise10Half> <advertise10Full type="Bool">1</advertise10Full> <advertise100Half type="Bool">1</advertise100Half> <advertise100Full type="Bool">1</advertise100Full> <advertise1000Full type="Bool">1</advertise1000Full> <advertise2500Full type="Bool">1</advertise2500Full> <advertise5000Full type="Bool">1</advertise5000Full> <advertise10000Full type="Bool">1</advertise10000Full> <cardDualPhy type="Ixia.Aptixia.StackManager.DualPhyPlugin" objectid="c500685a-4fcb-4335-abe0-70c98cf1ba43" version="6.70.420"> <medium type="String">auto</medium> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </cardDualPhy> <cardElm type="Ixia.Aptixia.StackManager.EthernetELMPlugin" objectid="92644bb5-bda6-4072-98f9-47b47e4597c7" version="6.70.420"> <negotiateMasterSlave type="Bool">1</negotiateMasterSlave> <negotiationType type="String">master</negotiationType> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </cardElm> <enableFlowControl type="Bool">0</enableFlowControl> <directedAddress type="String">01:80:C2:00:00:01</directedAddress> <dataCenter type="Ixia.Aptixia.StackManager.DataCenterSettings" objectid="3726f608-97b7-4bf2-b88e-4c0bf13b45a0" version="6.70.420"> <dcSupported type="Bool">1</dcSupported> <dcEnabled type="Bool">0</dcEnabled> <dcFlowControl type="Ixia.Aptixia.StackManager.DataCenterSettingsSkeleton+eFlowControlType">0</dcFlowControl> <dcMode type="Ixia.Aptixia.StackManager.DataCenterSettingsSkeleton+eDataCenterMode">2</dcMode> <dcPfcMapping type="IntList" /> <dcPfcPauseEnable type="Bool">0</dcPfcPauseEnable> <dcPfcPauseDelay type="Int">1</dcPfcPauseDelay> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </dataCenter> <childrenList type="ListNode"> <Ixia.Aptixia.StackManager.L2EthernetPlugin type="Ixia.Aptixia.StackManager.L2EthernetPlugin" objectid="820b0582-6a4c-4109-bd5d-587621a43ce2" version="6.70.420"> <macRangeList type="ListNode"> <Ixia.Aptixia.StackManager.MacRange type="Ixia.Aptixia.StackManager.MacRange" objectid="aa73bd95-9ffb-411e-8ab3-8a128767aacb" version="6.70.420"> <enabled type="Bool">1</enabled> <name type="String">MAC-R2</name> <mac type="String">00:0A:43:4F:2A:00</mac> <incrementBy type="String">00:00:00:00:00:01</incrementBy> <mtu type="Int">1410</mtu> <count type="Int">1</count> <vlanRange type="Ixia.Aptixia.StackManager.VlanIdRange" objectid="7024f4b3-1a75-491a-8da1-17a45a15d5cc" version="6.70.420"> <name type="String">VLAN-R2</name> <enabled type="Bool">0</enabled> <firstId type="Int">1</firstId> <incrementStep type="Int">1</incrementStep> <increment type="Int">1</increment> <uniqueCount type="Int">4094</uniqueCount> <priority type="Int">1</priority> <tpid type="String">0x8100</tpid> <innerEnable type="Bool">0</innerEnable> <innerFirstId type="Int">1</innerFirstId> <innerIncrementStep type="Int">1</innerIncrementStep> <innerIncrement type="Int">1</innerIncrement> <innerUniqueCount type="Int">4094</innerUniqueCount> <innerPriority type="Int">1</innerPriority> <idIncrMode type="Int">2</idIncrMode> <innerTpid type="String">0x8100</innerTpid> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </vlanRange> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.MacRange> </macRangeList> <vlanRangeList type="ListNode"> <Ixia.Aptixia.StackManager.VlanIdRange type="Ixia.Aptixia.StackManager.VlanIdRange" objectid="7024f4b3-1a75-491a-8da1-17a45a15d5cc" version="6.70.420" /> </vlanRangeList> <childrenList type="ListNode"> <Ixia.Aptixia.StackManager.IpV4V6Plugin type="Ixia.Aptixia.StackManager.IpV4V6Plugin" objectid="e53ae54e-ab21-4997-b532-e9bd58210050" version="6.70.420"> <rangeList type="ListNode"> <Ixia.Aptixia.StackManager.IpV4V6Range type="Ixia.Aptixia.StackManager.IpV4V6Range" objectid="c69dae97-f1c2-4505-aedb-3f9ca3f4d02a" version="6.70.420"> <enabled type="Bool">1</enabled> <name type="String">IP-R2</name> <ipType type="String">IPv4</ipType> <ipAddress type="String">{{ipcard2}}</ipAddress> <prefix type="Int">16</prefix> <incrementBy type="String">0.0.0.1</incrementBy> <count type="Int">1</count> <autoCountEnabled type="Bool">0</autoCountEnabled> <gatewayAddress type="String">{{ipgw}}</gatewayAddress> <gatewayIncrement type="String">0.0.0.0</gatewayIncrement> <gatewayIncrementMode type="String">perSubnet</gatewayIncrementMode> <enableGatewayArp type="Bool">0</enableGatewayArp> <generateStatistics type="Bool">0</generateStatistics> <mss type="Int">1410</mss> <randomizeAddress type="Bool">0</randomizeAddress> <randomizeSeed type="Int">3534372608</randomizeSeed> <autoMacGeneration type="Bool">1</autoMacGeneration> <macRange type="Ixia.Aptixia.StackManager.MacRange" objectid="aa73bd95-9ffb-411e-8ab3-8a128767aacb" version="6.70.420" /> <vlanRange type="Ixia.Aptixia.StackManager.VlanIdRange" objectid="7024f4b3-1a75-491a-8da1-17a45a15d5cc" version="6.70.420" /> <atmRange type="Ixia.Aptixia.StackManager.AtmRange" objectid="00000000-0000-0000-0000-000000000000" /> <pvcRange type="Ixia.Aptixia.StackManager.PvcRange" objectid="00000000-0000-0000-0000-000000000000" /> <autoIpTypeEnabled type="Bool">0</autoIpTypeEnabled> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IpV4V6Range> </rangeList> <rangeGroups type="ListNode"> <Ixia.Aptixia.StackManager.RangeGroup type="Ixia.Aptixia.StackManager.RangeGroup" objectid="de9d629b-e0dc-41f5-99cb-5aa8a808ceee" version="6.70.420"> <name type="String">DistGroup1</name> <distribType type="Ixia.Aptixia.StackManager.RangeGroupSkeleton+eDistributionType">0</distribType> <rangeList type="ListNode"> <Ixia.Aptixia.StackManager.IpV4V6Range type="Ixia.Aptixia.StackManager.IpV4V6Range" objectid="c69dae97-f1c2-4505-aedb-3f9ca3f4d02a" version="6.70.420" /> </rangeList> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.RangeGroup> </rangeGroups> <childrenList type="ListNode" /> <extensionList type="ListNode" /> <dscMode type="Bool">0</dscMode> <name type="String">IP-2</name> <ixLoadRestObjectId type="Int">6</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IpV4V6Plugin> </childrenList> <extensionList type="ListNode" /> <dscMode type="Bool">0</dscMode> <name type="String">MAC/VLAN-2</name> <ixLoadRestObjectId type="Int">5</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.L2EthernetPlugin> </childrenList> <extensionList type="ListNode" /> <dscMode type="Bool">0</dscMode> <name type="String">Ethernet-2</name> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </stack> <globalPluginList type="ListNode"> <Ixia.Aptixia.StackManager.IxLoadSettingsPlugin type="Ixia.Aptixia.StackManager.IxLoadSettingsPlugin" objectid="26685c48-95e7-4da5-a893-fc527b814b1c" version="1.0.0"> <teardownInterfaceWithUser type="Bool">0</teardownInterfaceWithUser> <interfaceBehavior type="Int">0</interfaceBehavior> <name type="String">Settings-2</name> <ixLoadRestObjectId type="Int">7</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IxLoadSettingsPlugin> <Ixia.Aptixia.StackManager.FilterPlugin type="Ixia.Aptixia.StackManager.FilterPlugin" objectid="3f42c205-a9ad-433b-b7af-19ea7ec76940" version="6.70.420"> <auto type="Bool">1</auto> <all type="Bool">0</all> <pppoecontrol type="Bool">0</pppoecontrol> <pppoenetwork type="Bool">0</pppoenetwork> <isis type="Bool">0</isis> <ip type="String" /> <tcp type="String" /> <udp type="String" /> <mac type="String" /> <icmp type="String" /> <name type="String">Filter-2</name> <ixLoadRestObjectId type="Int">8</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.FilterPlugin> <Ixia.Aptixia.StackManager.GratArpPlugin type="Ixia.Aptixia.StackManager.GratArpPlugin" objectid="fe43b342-829b-4ff4-8671-49ba1c4441e5" version="6.70.420"> <enabled type="Bool">1</enabled> <forwardGratArp type="Bool">0</forwardGratArp> <rateControlEnabled type="Bool">0</rateControlEnabled> <maxFramesPerSecond type="Int">0</maxFramesPerSecond> <name type="String">GratARP-2</name> <ixLoadRestObjectId type="Int">9</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.GratArpPlugin> <Ixia.Aptixia.StackManager.TCPPlugin type="Ixia.Aptixia.StackManager.TCPPlugin" objectid="57601116-d86b-4c04-856b-2241507a0378" version="6.70.420"> <bestPerfSettings type="Bool">0</bestPerfSettings> <accept_ra_all type="Bool">0</accept_ra_all> <tcp_abort_on_overflow type="Bool">0</tcp_abort_on_overflow> <tcp_adv_win_scale type="Int">2</tcp_adv_win_scale> <tcp_app_win type="Int">31</tcp_app_win> <tcp_bic type="Int">0</tcp_bic> <tcp_bic_fast_convergence type="Int">1</tcp_bic_fast_convergence> <tcp_bic_low_window type="Int">14</tcp_bic_low_window> <tcp_dsack type="Bool">1</tcp_dsack> <tcp_ecn type="Bool">0</tcp_ecn> <tcp_fack type="Bool">1</tcp_fack> <tcp_fin_timeout type="Int">60</tcp_fin_timeout> <tcp_frto type="Int">0</tcp_frto> <tcp_keepalive_intvl type="Int">75</tcp_keepalive_intvl> <tcp_keepalive_probes type="Int">9</tcp_keepalive_probes> <tcp_keepalive_time type="Int">7200</tcp_keepalive_time> <tcp_low_latency type="Int">0</tcp_low_latency> <tcp_max_orphans type="Int">8192</tcp_max_orphans> <tcp_max_syn_backlog type="Int">1024</tcp_max_syn_backlog> <tcp_max_tw_buckets type="Int">180000</tcp_max_tw_buckets> <tcp_mem_low type="Int">24576</tcp_mem_low> <tcp_mem_pressure type="Int">32768</tcp_mem_pressure> <tcp_mem_high type="Int">49152</tcp_mem_high> <tcp_moderate_rcvbuf type="Int">0</tcp_moderate_rcvbuf> <tcp_no_metrics_save type="Bool">0</tcp_no_metrics_save> <tcp_orphan_retries type="Int">0</tcp_orphan_retries> <tcp_reordering type="Int">3</tcp_reordering> <tcp_retrans_collapse type="Bool">1</tcp_retrans_collapse> <tcp_retries1 type="Int">3</tcp_retries1> <tcp_retries2 type="Int">5</tcp_retries2> <tcp_rfc1337 type="Bool">0</tcp_rfc1337> <tcp_rmem_min type="Int">4096</tcp_rmem_min> <tcp_rmem_default type="Int">4096</tcp_rmem_default> <tcp_rmem_max type="Int">262144</tcp_rmem_max> <tcp_sack type="Bool">1</tcp_sack> <tcp_stdurg type="Bool">0</tcp_stdurg> <tcp_synack_retries type="Int">5</tcp_synack_retries> <tcp_syn_retries type="Int">5</tcp_syn_retries> <tcp_timestamps type="Bool">1</tcp_timestamps> <tcp_tw_recycle type="Bool">1</tcp_tw_recycle> <tcp_tw_reuse type="Bool">0</tcp_tw_reuse> <tcp_vegas_alpha type="Int">2</tcp_vegas_alpha> <tcp_vegas_beta type="Int">6</tcp_vegas_beta> <tcp_vegas_cong_avoid type="Int">0</tcp_vegas_cong_avoid> <tcp_vegas_gamma type="Int">2</tcp_vegas_gamma> <tcp_westwood type="Int">0</tcp_westwood> <tcp_window_scaling type="Bool">0</tcp_window_scaling> <ip_no_pmtu_disc type="Bool">1</ip_no_pmtu_disc> <tcp_wmem_min type="Int">4096</tcp_wmem_min> <tcp_wmem_default type="Int">4096</tcp_wmem_default> <tcp_wmem_max type="Int">262144</tcp_wmem_max> <tcp_ipfrag_time type="Int">30</tcp_ipfrag_time> <tcp_port_min type="Int">1024</tcp_port_min> <tcp_port_max type="Int">65535</tcp_port_max> <tcp_rto_min type="Int">200</tcp_rto_min> <tcp_rto_max type="Int">120000</tcp_rto_max> <tcp_tw_rfc1323_strict type="Bool">0</tcp_tw_rfc1323_strict> <udp_port_randomization type="Bool">0</udp_port_randomization> <disable_min_max_buffer_size type="Bool">1</disable_min_max_buffer_size> <llm_hdr_gap type="Int">8</llm_hdr_gap> <llm_hdr_gap_ns type="Int">10</llm_hdr_gap_ns> <inter_packet_granular_delay type="Double">0</inter_packet_granular_delay> <delayed_acks type="Bool">1</delayed_acks> <accept_ra_default type="Bool">0</accept_ra_default> <rps_needed type="Bool">0</rps_needed> <delayed_acks_segments type="Int">0</delayed_acks_segments> <delayed_acks_timeout type="Int">0</delayed_acks_timeout> <tcp_large_icwnd type="Int">0</tcp_large_icwnd> <tcp_mgmt_rmem type="Int">87380</tcp_mgmt_rmem> <tcp_mgmt_wmem type="Int">32768</tcp_mgmt_wmem> <adjust_tcp_buffers type="Bool">1</adjust_tcp_buffers> <name type="String">TCP-2</name> <ixLoadRestObjectId type="Int">10</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.TCPPlugin> <Ixia.Aptixia.StackManager.DnsPlugin type="Ixia.Aptixia.StackManager.DnsPlugin" objectid="7682d113-cd50-4cc6-b23a-569c29f03886" version="6.70.420"> <domain type="String" /> <timeout type="Int">30</timeout> <nameServerList type="ListNode" /> <searchList type="ListNode" /> <hostList type="ListNode" /> <name type="String">DNS-2</name> <ixLoadRestObjectId type="Int">12</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.DnsPlugin> <Ixia.Aptixia.StackManager.MeshingPlugin type="Ixia.Aptixia.StackManager.MeshingPlugin" objectid="f5f1e4c2-eef8-4a34-ac13-e1e3eeb5328b" version="6.70.420"> <trafficMaps type="ListNode" /> <activityRangeMapInfoList type="ListNode" /> <name type="String">Meshing-2</name> <ixLoadRestObjectId type="Int">13</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.MeshingPlugin> </globalPluginList> <portList type="Ixia.RpFramework.Server.Core.ShadowedPropertyStringList"> <String>{{ipchassis}};2;1</String> </portList> <typeSpecificData type="ListNode"> <Ixia.Aptixia.StackManager.IPSecPortGroupData type="Ixia.Aptixia.StackManager.IPSecPortGroupData" objectid="c279f05c-d2a7-476d-b4af-9c8ff0d878dd" version="6.70.0"> <role type="String">Initiator</role> <associates type="ListNode" /> <overrideGlobalOptions type="Bool">0</overrideGlobalOptions> <useMaxInitiationRate type="Bool">0</useMaxInitiationRate> <maxInitiationRate type="Int">50</maxInitiationRate> <useMaxPendingTunnels type="Bool">0</useMaxPendingTunnels> <maxPendingTunnels type="Int">50</maxPendingTunnels> <teardownRate type="Int">10</teardownRate> <enableESPPerStreamStats type="Bool">0</enableESPPerStreamStats> <enableESPReplayStats type="Bool">0</enableESPReplayStats> <activities type="ListNode" /> <pcpuLogLevel type="String">0</pcpuLogLevel> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IPSecPortGroupData> </typeSpecificData> <virtualMode type="Bool">0</virtualMode> <allowedVirtualModeTypes type="Ixia.RpFramework.Server.Core.ShadowedPropertyStringList" /> <doOwnership type="Bool">0</doOwnership> <branchToNicMap type="ListNode" /> <cpuAggregation type="Bool">0</cpuAggregation> <activePort type="String" /> <networkLayersManager type="Ixia.Aptixia.StackManager.NetworkLayersManager" objectid="d581a4e6-0e4b-4692-a0e2-12fd25d7db35" version="6.70.420"> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </networkLayersManager> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.PortGroup> </portGroupList> <externalProperties type="Ixia.Aptixia.StackManager.ExternalPropertyManager" objectid="0c7c98dd-4e41-4fb8-adb7-918848d0ba3e" version="6.70.420"> <properties type="ListNode"> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="c7be9c3b-0335-4cf6-bbcb-d9a90d6b78a0" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">DHCPRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="d63defc3-039a-4af6-b0f6-19be5481d6bb" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">MobileSubscribersRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="d62b40dc-41c2-48b0-b3a6-4aa74e171a8c" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">DHCPServerRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="45eba56d-c42f-4bbf-830b-1f102bf83c92" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPUERange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="a9e91079-1215-444b-a0a0-59f8ff4e7746" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">GTPGRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="b91778ea-dac5-499a-8c54-b8ba0c78b44b" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPRange_SGW</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="13f113b2-8ce8-4742-ac72-f8ee04caa5d6" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">GTPSUERange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="f2723794-57ce-471c-b3ae-10cd5ee235a2" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IpV4V6Range</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="3e8d5274-5483-41ca-8f4d-b1fce291dad1" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">PppoxRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="85b44e1f-0689-4feb-a14d-b43a1b837c1d" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">L2tpRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="c0383f23-e15f-4a97-bbf8-6ade8f6f2b0c" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IxCatLTEUEUeRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="5912723b-fb9a-4e0a-bae4-38730c73cc0e" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">SixRdRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="9a6cb101-a624-4978-8d0c-85c5b6c26906" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPSgsnS3RangeUe</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="4f85b4a9-d55e-494e-beb6-5ef5b5d04cf8" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EmulatedRouterRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="489dbc18-55b5-4902-99ab-9a289a8c2e2b" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">GTPNGAPRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="2992f902-204b-4050-8798-0b24ee090922" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IxCatRNCIuPSUeRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="8b53f68d-6027-4150-9ca3-5a62606526bd" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">GTPNGUERange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="e85d740f-87a2-473a-a133-e08d5bb48ed2" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPUERange_S5S8_SGW</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="5a179c3f-82db-44b3-95fc-6e4dbfe17556" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPPcrfRange_S5S8_PGW</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="55d890fe-0faa-41bd-9fca-12463fd14b3d" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">DSLiteRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="8dc83b0a-45a9-46b7-9b52-731eb114d315" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPSGSNRangeUe</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="a0883ed3-63b7-47cb-ab77-7ceebb8212e1" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">SlaacRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="7bb58c6e-377f-46be-a2b1-7d86997b2fa1" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">AtmRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="8a4c92be-449a-4f0e-bcf3-55fdfcc369cc" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IxCatMMEApnRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="588aea0d-748b-4b82-9418-4f3a35185d2e" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IxCatENodeBUuApnRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="9046358f-dde4-4f17-b596-5903079d3bcf" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">MacRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="a28df47f-783e-4bc9-aa22-78636ceaf1b7" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">DualStackIPRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="19deb9c9-8aef-41e2-8b8b-f01a8b274266" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPUERange_S2a_TWAN</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="6abb9650-bc55-4e9e-9dfc-81964310e662" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IxCatSGSNIuPSApnRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="35dc8f8d-44fd-4c73-9771-6c62bd227435" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">IxCatENodeBSimUeRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="3c48b615-2c03-4c1b-8712-e83f63841d13" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">S6dRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="cd5080c1-8de4-4eb3-985a-3e9fe38ebed4" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">UERangeBase</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="24c2c3a6-f9fd-4b8e-bc9f-aeeac63bae01" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPMmeS10RangeUe</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="529a2786-eb8c-40cb-80b9-83415888012c" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">S6aRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="6593d153-2b87-4171-a8bf-8ae2b1907487" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">PptpRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="819a5c99-14bf-4efb-912a-5d2c985e97d1" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">BmScRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="83ff7bd6-95cf-4d75-91e4-3e2a9f5f6b7d" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">MBmsGwRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> <Ixia.Aptixia.StackManager.ExternalPropertyInfo type="Ixia.Aptixia.StackManager.ExternalPropertyInfo" objectid="022d8e72-36c8-4117-b901-baffb9d0805c" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <targetType type="String">EGTPPMIPHostRange</targetType> <valueType type="String">ExternalValueBoolean</valueType> <description type="String">Enable collection of interface statistics on this range</description> </Ixia.Aptixia.StackManager.ExternalPropertyInfo> </properties> <values type="ListNode"> <Ixia.Aptixia.StackManager.ExternalProperty type="Ixia.Aptixia.StackManager.ExternalProperty" objectid="57badb9d-afb8-4c05-9182-df7469457e4c" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <target type="Ixia.Aptixia.StackManager.IpV4V6Range" objectid="5affc0a7-68f6-46f6-b801-0e18e067a572" version="6.70.420" /> <value type="Ixia.Aptixia.StackManager.ExternalValueBoolean" objectid="1efc6993-1480-469a-a6af-38b4093fb102" version="6.70.420"> <value type="Bool">0</value> <ixLoadRestObjectId type="Int">13</ixLoadRestObjectId> </value> <enabled type="Bool">1</enabled> <ixLoadRestObjectId type="Int">13</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.ExternalProperty> <Ixia.Aptixia.StackManager.ExternalProperty type="Ixia.Aptixia.StackManager.ExternalProperty" objectid="22a742ae-d9bd-4548-83f1-84da6cc07c5f" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <target type="Ixia.Aptixia.StackManager.IpV4V6Range" objectid="c69dae97-f1c2-4505-aedb-3f9ca3f4d02a" version="6.70.420" /> <value type="Ixia.Aptixia.StackManager.ExternalValueBoolean" objectid="b664f3f9-4f42-48c1-a481-75ba76740055" version="6.70.420"> <value type="Bool">0</value> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </value> <enabled type="Bool">1</enabled> <ixLoadRestObjectId type="Int">2</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.ExternalProperty> <Ixia.Aptixia.StackManager.ExternalProperty type="Ixia.Aptixia.StackManager.ExternalProperty" objectid="77dd061e-b592-4d9e-9c38-24a46fec1121" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <target type="Ixia.Aptixia.StackManager.MacRange" objectid="aa73bd95-9ffb-411e-8ab3-8a128767aacb" version="6.70.420" /> <value type="Ixia.Aptixia.StackManager.ExternalValueBoolean" objectid="b5f138be-a18b-46a3-b3f8-c90fa5711597" version="6.70.420"> <value type="Bool">0</value> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </value> <enabled type="Bool">0</enabled> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.ExternalProperty> <Ixia.Aptixia.StackManager.ExternalProperty type="Ixia.Aptixia.StackManager.ExternalProperty" objectid="6dc25ae2-da26-4df6-8a25-cf296dd9430b" version="6.70.420"> <propertyName type="String">Publish Statistics</propertyName> <target type="Ixia.Aptixia.StackManager.MacRange" objectid="ba896971-1d78-4e03-8f2a-28c65417612e" version="6.70.420" /> <value type="Ixia.Aptixia.StackManager.ExternalValueBoolean" objectid="0858fb9d-2304-44d4-b413-569815c8b6a7" version="6.70.420"> <value type="Bool">0</value> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </value> <enabled type="Bool">0</enabled> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.ExternalProperty> </values> <ixLoadRestObjectId type="Int">1</ixLoadRestObjectId> </externalProperties> <availableNetworkTimelines type="ListNode" /> <typeSpecificData type="ListNode"> <Ixia.Aptixia.StackManager.IxLoadSessionData type="Ixia.Aptixia.StackManager.IxLoadSessionData" objectid="149d16d7-c594-4866-917f-fe1b44fac83f" version="1.0.0"> <portGroupList type="ListNode"> <Ixia.Aptixia.StackManager.PortGroup type="Ixia.Aptixia.StackManager.PortGroup" objectid="b1fbd381-b769-4ec1-8715-299508ecb458" version="6.70.420" /> <Ixia.Aptixia.StackManager.PortGroup type="Ixia.Aptixia.StackManager.PortGroup" objectid="e7fa1f9e-23d9-4742-96b2-6edce6c4424e" version="6.70.420" /> </portGroupList> <ixLoadRestObjectId type="Int">1</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IxLoadSessionData> <Ixia.Aptixia.StackManager.MacSessionData type="Ixia.Aptixia.StackManager.MacSessionData" objectid="7869d347-cce4-4cd3-9eed-88a3914ae956" version="6.70.420"> <duplicateCheckingScope type="Ixia.Aptixia.StackManager.MacSessionDataSkeleton+eMacValidationOptions">2</duplicateCheckingScope> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.MacSessionData> <Ixia.Aptixia.StackManager.IpSessionData type="Ixia.Aptixia.StackManager.IpSessionData" objectid="93416b84-eb4a-4637-ab56-4a4de6250c3b" version="6.70.420"> <duplicateCheckingScope type="Ixia.Aptixia.StackManager.IpSessionDataSkeleton+eIpValidationOptions">2</duplicateCheckingScope> <enableGatewayArp type="Bool">0</enableGatewayArp> <gatewayArpRequestRate type="Int">300</gatewayArpRequestRate> <maxOutstandingGatewayArpRequests type="Int">300</maxOutstandingGatewayArpRequests> <ignoreUnresolvedIPs type="Bool">0</ignoreUnresolvedIPs> <sendAllRequests type="Bool">0</sendAllRequests> <individualARPTimeOut type="Int">500</individualARPTimeOut> <ixLoadRestObjectId type="Int">4</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IpSessionData> <Ixia.Aptixia.StackManager.IPSecSessionData type="Ixia.Aptixia.StackManager.IPSecSessionData" objectid="8611fd36-7f8c-48bc-ac46-f6e2f0816cb5" version="6.70.0"> <ipsecTunnelSetup type="Ixia.Aptixia.StackManager.IPSecTunnelSetup" objectid="e08e1671-e189-4cba-8894-5dda9b24701a" version="6.70.0"> <tunnelSetupTimeout type="Int">30</tunnelSetupTimeout> <tunnelRetransmissionTimeout type="Int">30</tunnelRetransmissionTimeout> <numRetries type="Int">0</numRetries> <retryInterval type="Int">10</retryInterval> <retryDelay type="Int">10</retryDelay> <testType type="String">P2D</testType> <logLevel type="String">3</logLevel> <sendCiscoVid type="Bool">0</sendCiscoVid> <useMaxInitiationRate type="Bool">0</useMaxInitiationRate> <useMaxPendingTunnels type="Bool">0</useMaxPendingTunnels> <enableRekey type="Bool">1</enableRekey> <rekeyRetries type="Int">3</rekeyRetries> <rekeyFuzzPercentage type="Int">0</rekeyFuzzPercentage> <rekeyMargin type="Int">10</rekeyMargin> <ixLoadRestObjectId type="Int">7</ixLoadRestObjectId> </ipsecTunnelSetup> <ipsecCertificates type="Ixia.Aptixia.StackManager.IPSecCertificates" objectid="b53c8c74-6c81-4e4a-84cb-5beb05b38343" version="6.70.0"> <uniqueCert type="Bool">0</uniqueCert> <certSource type="String">kNewCert</certSource> <caURL type="String" /> <caDN type="String" /> <certSubjectDN type="String" /> <certSubjectAltDN type="String" /> <remoteIkeId type="String" /> <bitSize type="String">k512</bitSize> <saveCert type="Bool">1</saveCert> <cacheCertFolder type="String">C:\Program Files (x86)\Ixia\CachedCerts</cacheCertFolder> <certParentFolder type="String">C:\Program Files (x86)\Ixia\CachedCerts</certParentFolder> <certNumber type="String" /> <caCertNumber type="String" /> <earlyExpDate type="String" /> <lateExpDate type="String" /> <usePerRangeCertNameExp type="Bool">0</usePerRangeCertNameExp> <checkCrl type="Bool">0</checkCrl> <crlOverrideEnable type="Bool">0</crlOverrideEnable> <crlOverrideUrl type="String" /> <checkOcsp type="Bool">0</checkOcsp> <ocspOverrideEnable type="Bool">0</ocspOverrideEnable> <ocspOverrideUrl type="String" /> <unknownIsRevoked type="Bool">0</unknownIsRevoked> <certProto type="String">kSCEP</certProto> <ixLoadRestObjectId type="Int">7</ixLoadRestObjectId> </ipsecCertificates> <ipsecCertManager type="Ixia.Aptixia.StackManager.IPSecCertManager" objectid="21591e4a-9e87-48e6-8679-68685c5c8383" version="6.70.0"> <caURL type="String" /> <caDN type="String">CN=RootCA,C=RO,L=Bucharest,O=Ixia,OU=IxLoad,IP:201.121.87.2,email:ixia@ixiacom.com</caDN> <certSubjectDN type="String">CN=IxiaVPN,C=RO,L=Bucharest,O=Ixia</certSubjectDN> <keyGenAlgo type="String">kRSA_512</keyGenAlgo> <cacheCertFolder type="String">C:\Program Files (x86)\Ixia\CachedCerts</cacheCertFolder> <caKeyFile type="String">C:\Program Files (x86)\Ixia\ca-priv.key</caKeyFile> <caCrtFile type="String">C:\Program Files (x86)\Ixia\ca-cert.crt</caCrtFile> <certNumber type="Int">1</certNumber> <certProto type="String">kSCEP</certProto> <createRootCA type="Bool">0</createRootCA> <uniqueCert type="Bool">0</uniqueCert> <descFilePath type="String">C:\Program Files (x86)\Ixia\CachedCerts\sample.desc</descFilePath> <useDescFile type="Bool">0</useDescFile> <ixLoadRestObjectId type="Int">6</ixLoadRestObjectId> </ipsecCertManager> <eapSimTuples type="ListNode" /> <eapAkaTuples type="ListNode" /> <maxInitiationRate type="Int">50</maxInitiationRate> <maxPendingTunnels type="Int">50</maxPendingTunnels> <negotiationStartDelay type="Int">0</negotiationStartDelay> <teardownRate type="Int">10</teardownRate> <burstInitiation type="Bool">0</burstInitiation> <parallelInitiation type="Bool">0</parallelInitiation> <enableWildcardTsi type="Bool">0</enableWildcardTsi> <enableWildcardTsr type="Bool">0</enableWildcardTsr> <enablePlutoWildcardTsi type="Bool">0</enablePlutoWildcardTsi> <enablePlutoModeCfgWildcardTsr type="Bool">1</enablePlutoModeCfgWildcardTsr> <enablePlutoS2SWildcardTsr type="Bool">0</enablePlutoS2SWildcardTsr> <payloadAttrTypes type="ListNode" /> <ixLoadRestObjectId type="Int">3</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.IPSecSessionData> </typeSpecificData> <statViewManager type="Ixia.Aptixia.StackManager.StatViewManager" objectid="32b6a125-39ad-4da3-9710-e09cc94bf306" version="6.70.420"> <enableStats type="Bool">1</enableStats> <enableOverviewStats type="Bool">1</enableOverviewStats> <enablePerSessionStats type="Bool">1</enablePerSessionStats> </statViewManager> <waitForLinkUp type="Bool">0</waitForLinkUp> <overloadProtection type="Bool">1</overloadProtection> <ixLoadRestObjectId type="Int">1</ixLoadRestObjectId> </Ixia.Aptixia.StackManager.SMSession> </rpf></xml> - </_smSessionXml> - <_composerConfig ver="[0, [1, [0, [0]]]]" type="ixComposerConfig"> - <xml type="str"></xml> - </_composerConfig> - <_quickTestConfig ver="[0, [1, [0, [0]]]]" type="ixQuickTestConfig"> - <xml type="str"></xml> - </_quickTestConfig> - <lastApiUniqueId type="int">17217</lastApiUniqueId> - <version type="str">8.30.0.161</version> - <name type="str">REG_CALL_OPNFV_ORANGE_v13.rxf</name> - <comment type="str"></comment> - <path type="str">C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion</path> - <last type="str">REG_CALL_OPNFV_ORANGE_v9j.rxf</last> - <activeTest type="str">Test1</activeTest> - <chassisChain ver="[2, [1, [0, [0]]]]" oid="6" type="ixChassisChain"> - <chassisList ver="[0, [3, [0, [0, [0], [0]], [0]]]]" type="ixChassisSequenceContainer" itemtype="ixChassis"> - <item ver="[1, [1, [0, [0]]]]" oid="0" type="ixChassis"> - <name type="str">{{ipchassis}}</name> - <id type="int">1</id> - <hiddenCards type="NoneType">None</hiddenCards> - </item> - </chassisList> - <_apiUniqueId type="int">15685</_apiUniqueId> - <chassisMap type="dict"> - <item> - <key type="int">1</key> - <value ref="0"/> - </item> - </chassisMap> - <hiddenChassis type="str"></hiddenChassis> - </chassisChain> - <AfmPortPacketRewriteConfigList ver="[0, [3, [0, [0, [0], [0]], [0]]]]" type="ixAfmPortPacketRewriteConfigList" itemtype="ixAfmPortPacketRewriteConfig"/> - <networkList ver="[0, [0, [1, [0, [3, [0, [0, [0], [0]], [0]]]]]]]" type="ixRepositoryNetworkList" itemtype="ixNullNetwork"/> - <dutList ver="[0, [0, [1, [0, [3, [0, [0, [0], [0]], [0]]]]]]]" type="ixDutList" itemtype="ixDut"/> - <trafficList ver="[0, [0, [1, [0, [3, [0, [0, [0], [0]], [0]]]]]]]" type="ixTrafficList" itemtype="ixActivityModel"/> - <testList ver="[0, [0, [1, [0, [3, [0, [0, [0], [0]], [0]]]]]]]" type="ixTestList" itemtype="ixTestEnvelope"> - <item ver="[18, [1, [0, [0]]]]" type="ixTestEnvelope"> - <name type="str">Test1</name> - <comment type="str"></comment> - <enableForceOwnership type="bool">True</enableForceOwnership> - <enableResetPorts type="bool">False</enableResetPorts> - <statsRequired type="bool">True</statsRequired> - <enableConditionalView type="bool">False</enableConditionalView> - <conditionalViewType type="int">1</conditionalViewType> - <conditionalViewList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixConditionalViewList" itemtype="ixConditionalView"/> - <enableReleaseConfigAfterRun type="bool">False</enableReleaseConfigAfterRun> - <csvInterval type="int">4</csvInterval> - <networkFailureThreshold type="int">0</networkFailureThreshold> - <captureViewOptions ver="[1, [1, [0, [0]]]]" oid="12" type="ixViewOptions"> - <runMode type="int">1</runMode> - <collectScheme type="int">0</collectScheme> - <allocatedBufferMemoryPercentage type="long">30</allocatedBufferMemoryPercentage> - <captureRunAfter type="int">0</captureRunAfter> - <captureRunDuration type="int">0</captureRunDuration> - <_apiUniqueId type="int">15467</_apiUniqueId> - </captureViewOptions> - <scenarioList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixScenarioList" itemtype="ixScenario"> - <item ver="[3, [1, [0, [0]]]]" type="ixScenario"> - <name type="str">New Traffic Flow</name> - <columnList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixTrafficColumnList" itemtype="ixTrafficColumn"> - <item ver="[0, [1, [0, [0]]]]" type="ixTrafficColumn"> - <name type="str">Originate</name> - <elementList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixScenarioElementList" itemtype="ixScenarioElement"> - <item ver="[1, [23, [0, [1, [0, [0]]]]]]" oid="5" type="ixNetTraffic"> - <name type="str">VoIP1@VM1</name> - <column type="NoneType">None</column> - <scenarioElementType type="str">netTraffic</scenarioElementType> - <enable type="bool">True</enable> - <role type="str">Peer</role> - <networkType type="str">ethernet</networkType> - <activityFunction type="str">ipTrafficAgent</activityFunction> - <activeRole type="str">Both</activeRole> - <networkActivityList ver="[0, [0, [0, [3, [0, [0, [0], [0]], [0]]]]]]" type="ixNetworkActivityList" itemtype="ixNetworkActivity"/> - <activityGroupList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixActivityGroupList" itemtype="ixActivityGroup"/> - <traffic ver="[0, [6, [1, [0, [0]]]]]" type="ixTraffic"> - <resourceSyncTimeStamp type="NoneType">None</resourceSyncTimeStamp> - <name type="str">VoIP1</name> - <role type="str">Peer</role> - <activityFunction type="str">ipTrafficAgent</activityFunction> - <payload type="NoneType">None</payload> - <agentList ver="[2, [0, [0, [3, [0, [0, [0], [0]], [0]]]]]]" type="_agentListSequenceContainer" itemtype="ixAgent"> - <item ver="[34, [1, [0, [6, [1, [0, [0]]]], [0, [0]]], [0]]]" oid="18" type="#VoIP_Peer_plugin$Plugin"> - <enable type="bool">True</enable> - <name type="str">REGISTERING</name> - <activityFunction type="NoneType">None</activityFunction> - <needToRefreshStatViews type="bool">False</needToRefreshStatViews> - <activeRole type="str">Both</activeRole> - <cmdListLoops type="int">0</cmdListLoops> - <sources ver="[0, [3, [0, [0, [0], [0]], [0]]]]" type="ixSourceList" itemtype="ixSource"/> - <destinations ver="[1, [3, [0, [0, [0], [0]], [0]]]]" type="ixDestinationList" itemtype="ixDestination"/> - <flowPercentage type="float">100.0</flowPercentage> - <uniqueID type="int">27</uniqueID> - <pm ver="[0, [1, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyMap_VoIP"> - <szPluginVersion type="str">4.10</szPluginVersion> - <ceCommands ver="[1, [0, [0, [3, [0, [0, [0], [0]], [0]]]], [0, [0, [3, [0, [0, [0], [0]], [0]]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_VoIP_ceCommands" itemtype="ixConfig"> - <item ver="[0, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]], [0, [0, [0, [0, [1, [0, [0]]]]]]]]" type="#Pdk.ixPdkCommands$ixPropertyCommandStart"> - <commandId type="int">-2</commandId> - <commandType type="str">START</commandType> - <cmdName type="str">Start</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">Output1</name> - <outputType type="int">0</outputType> - <destCmdId type="int">2</destCmdId> - <objectID type="int">0</objectID> - <destinationCommandIdx type="int">2</destinationCommandIdx> - </item> - </outputList> - </item> - <item ver="[0, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]], [0, [0, [0, [0, [1, [0, [0]]]]]]]]" type="#Pdk.ixPdkCommands$ixPropertyCommandStop"> - <commandId type="int">-3</commandId> - <commandType type="str">STOP</commandType> - <cmdName type="str">Stop</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"/> - </item> - <item ver="[0, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Procedure"> - <commandId type="int">2</commandId> - <commandType type="str">Procedure</commandType> - <cmdName type="str">Register Complete (#4)</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">OK</name> - <outputType type="int">0</outputType> - <destCmdId type="int">47</destCmdId> - <objectID type="int">1</objectID> - <destinationCommandIdx type="int">3</destinationCommandIdx> - </item> - </outputList> - </item> - <item ver="[0, [1, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CommandEx"> - <commandId type="int">47</commandId> - <commandType type="str">CommandEx</commandType> - <cmdName type="str">Sleep (#2)</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">OK</name> - <outputType type="int">0</outputType> - <destCmdId type="int">-3</destCmdId> - <objectID type="int">1</objectID> - <destinationCommandIdx type="int">1</destinationCommandIdx> - </item> - </outputList> - <cmdType type="str">FlowSleep</cmdType> - </item> - </ceCommands> - <activityLink ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ActivityLinkInfo"> - <name type="str"><None></name> - <activitiesCount type="int">1</activitiesCount> - </activityLink> - <triggers ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TriggerConfig"> - <triggersInCount type="int">0</triggersInCount> - <triggersOutCount type="int">0</triggersOutCount> - </triggers> - <globalSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalSettings"> - <globalExecStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalExecSettings"> - <setAborted type="bool">False</setAborted> - <setAllFailed type="bool">False</setAllFailed> - <trigTimeout type="int">600000</trigTimeout> - <notAbortOnTimeout type="bool">False</notAbortOnTimeout> - <limitErrors type="bool">False</limitErrors> - <maxErrors type="int">1</maxErrors> - <limitArrayVarSize type="bool">False</limitArrayVarSize> - <maxArrayVarSize type="int">10</maxArrayVarSize> - </globalExecStg> - <globalSIPStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalSIPSettings"> - <disableTCP type="bool">False</disableTCP> - <prefQOP type="int">0</prefQOP> - <warnAsError type="bool">False</warnAsError> - <limitQueueSize type="bool">True</limitQueueSize> - <maxChannelsInQueue type="int">25</maxChannelsInQueue> - <enableSIPLogging type="bool">False</enableSIPLogging> - <limitSIPLoggingChannels type="bool">False</limitSIPLoggingChannels> - <maxSIPLoggingChannels type="int">10</maxSIPLoggingChannels> - <minSIPLoggingChannels type="int">0</minSIPLoggingChannels> - <voipPeerLogSettings type="int">0</voipPeerLogSettings> - <voipPeerLogExpForChannels type="str"></voipPeerLogExpForChannels> - <abortLoopOnTriggerTimeout type="bool">False</abortLoopOnTriggerTimeout> - </globalSIPStg> - <globalRTPStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalRTPSettings"> - <transmMode type="int">0</transmMode> - <playMode type="int">0</playMode> - <repeatCount type="int">1</repeatCount> - <repeatTime type="int">1000</repeatTime> - <timeUnit type="int">0</timeUnit> - <volume type="int">-20</volume> - <playModePathConf type="int">0</playModePathConf> - <repeatCountPathConf type="int">0</repeatCountPathConf> - <repeatTimePathConf type="int">10</repeatTimePathConf> - <timeUnitPathConf type="int">0</timeUnitPathConf> - <toneDurationPathConf type="int">200</toneDurationPathConf> - <interToneDelayPathConf type="int">200</interToneDelayPathConf> - <toneAmplitudePathConf type="int">-10</toneAmplitudePathConf> - <firstToneTimeoutPathConf type="int">4000</firstToneTimeoutPathConf> - <interToneTimeoutPathConf type="int">2000</interToneTimeoutPathConf> - <qovTalkExtraSilence type="int">500</qovTalkExtraSilence> - <qovListenExtraDuration type="int">2000</qovListenExtraDuration> - <downloadRTPCSV type="bool">True</downloadRTPCSV> - <waitQoVScore type="bool">False</waitQoVScore> - </globalRTPStg> - <globalSTUNStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalSTUNSettings"> - <keepAliveInterval type="int">15</keepAliveInterval> - </globalSTUNStg> - <globalSKINNYStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalSKINNYSettings"> - <softKeyCount type="int">25</softKeyCount> - <receiveVideo type="bool">False</receiveVideo> - <transmitVideo type="bool">False</transmitVideo> - </globalSKINNYStg> - <globalT38Stg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalT38Settings"> - <t30Log type="bool">False</t30Log> - <t38Log type="bool">False</t38Log> - <receivedImageLog type="bool">False</receivedImageLog> - <logType type="int">0</logType> - <logBegin type="int">1</logBegin> - <logEnd type="int">10</logEnd> - <channelRange type="str">[00-10]</channelRange> - </globalT38Stg> - </globalSettings> - <info ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Info"> - <userChannelsNo type="int">86534</userChannelsNo> - <portInstances type="int">3</portInstances> - <portInstanceIdx type="int">0</portInstanceIdx> - <objectiveType type="str">activeUsers</objectiveType> - <objectiveValue type="int">1000</objectiveValue> - <maxAllowedObjective type="long">9223372036854775807</maxAllowedObjective> - <firstSignalingFnID type="int">23</firstSignalingFnID> - <enableRTPDest type="bool">False</enableRTPDest> - <rtpPortDest type="str"></rtpPortDest> - <rtpObjectiveValue type="int">32000</rtpObjectiveValue> - <hasRtpFunction type="bool">False</hasRtpFunction> - <hasVideoFunction type="bool">False</hasVideoFunction> - <hasT38Function type="bool">False</hasT38Function> - <hasMSRPFunction type="bool">False</hasMSRPFunction> - <src ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ActivityInfo"> - <name type="str">REGISTERING</name> - <portCount type="int">1</portCount> - <portCountRtp type="int">1</portCountRtp> - <portCountT38 type="int">1</portCountT38> - <portCountMSRP type="int">1</portCountMSRP> - <ipRangeCount type="int">1</ipRangeCount> - <ipCount type="int">1</ipCount> - <ipRule type="int">0</ipRule> - <ipRuleCh type="int">1</ipRuleCh> - <port type="str">{{sipportregistering}}</port> - <portRule type="int">0</portRule> - <portRuleCh type="int">1</portRuleCh> - <phone type="str">{{pnregistering}}</phone> - <aliases type="int">1</aliases> - <phoneType type="int">0</phoneType> - <phoneRule type="int">1</phoneRule> - <phoneCount type="int">0</phoneCount> - <telPar type="str"></telPar> - <ipRangeCountRtp type="int">1</ipRangeCountRtp> - <ipCountRtp type="int">1</ipCountRtp> - <ipRuleRtp type="int">0</ipRuleRtp> - <ipRuleChRtp type="int">1</ipRuleChRtp> - <portRtp type="str">[10000-65535,4]</portRtp> - <portT38 type="str">40000</portT38> - <portMSRP type="str">2855</portMSRP> - <portRuleRtp type="int">0</portRuleRtp> - <portRuleChRtp type="int">1</portRuleChRtp> - <ipRangeCountT38 type="int">1</ipRangeCountT38> - <ipCountT38 type="int">1</ipCountT38> - <ipRangeCountMSRP type="int">1</ipRangeCountMSRP> - <ipCountMSRP type="int">1</ipCountMSRP> - <symType type="int">1</symType> - <enableTLS type="bool">False</enableTLS> - <enableDTLS type="bool">False</enableDTLS> - <enableTLS_MSRP type="bool">False</enableTLS_MSRP> - <enableTLS_HTTP type="bool">False</enableTLS_HTTP> - <tlsPort type="str">5061</tlsPort> - <tlsDisableUdpAndTcp type="bool">True</tlsDisableUdpAndTcp> - <nodeCount type="int">1</nodeCount> - <coreCount type="int">2</coreCount> - <nicCount type="int">1</nicCount> - <gtpEnabled type="bool">False</gtpEnabled> - <dcpEnabled type="bool">False</dcpEnabled> - <rangeType type="int">0</rangeType> - <calActivityID type="int">0</calActivityID> - <layerName type="str">aptixia-T.03440c56.4e1a.4def.8406.ec64db91d4c1-L2EthernetPlugin-166a11b6.4d30.40ea.b9e1.ac4fb44f112b-161.105.231.12;1;1default</layerName> - </src> - <dest ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ActivityInfo"> - <name type="str"></name> - <portCount type="int">1</portCount> - <portCountRtp type="int">1</portCountRtp> - <portCountT38 type="int">1</portCountT38> - <portCountMSRP type="int">1</portCountMSRP> - <ipRangeCount type="int">0</ipRangeCount> - <ipCount type="int">0</ipCount> - <ipRule type="int">0</ipRule> - <ipRuleCh type="int">0</ipRuleCh> - <port type="str"></port> - <portRule type="int">0</portRule> - <portRuleCh type="int">0</portRuleCh> - <phone type="str"></phone> - <aliases type="int">1</aliases> - <phoneType type="int">0</phoneType> - <phoneRule type="int">0</phoneRule> - <phoneCount type="int">0</phoneCount> - <telPar type="str"></telPar> - <ipRangeCountRtp type="int">0</ipRangeCountRtp> - <ipCountRtp type="int">0</ipCountRtp> - <ipRuleRtp type="int">0</ipRuleRtp> - <ipRuleChRtp type="int">0</ipRuleChRtp> - <portRtp type="str"></portRtp> - <portT38 type="str"></portT38> - <portMSRP type="str">2855</portMSRP> - <portRuleRtp type="int">0</portRuleRtp> - <portRuleChRtp type="int">0</portRuleChRtp> - <ipRangeCountT38 type="int">0</ipRangeCountT38> - <ipCountT38 type="int">0</ipCountT38> - <ipRangeCountMSRP type="int">1</ipRangeCountMSRP> - <ipCountMSRP type="int">12</ipCountMSRP> - <symType type="int">0</symType> - <enableTLS type="bool">False</enableTLS> - <enableDTLS type="bool">False</enableDTLS> - <enableTLS_MSRP type="bool">False</enableTLS_MSRP> - <enableTLS_HTTP type="bool">False</enableTLS_HTTP> - <tlsPort type="str"></tlsPort> - <tlsDisableUdpAndTcp type="bool">False</tlsDisableUdpAndTcp> - <nodeCount type="int">1</nodeCount> - <coreCount type="int">2</coreCount> - <nicCount type="int">1</nicCount> - <gtpEnabled type="bool">False</gtpEnabled> - <dcpEnabled type="bool">False</dcpEnabled> - <rangeType type="int">0</rangeType> - <calActivityID type="int">0</calActivityID> - <layerName type="str"></layerName> - </dest> - <useServerDest type="bool">False</useServerDest> - <srvDomainDest type="str"></srvDomainDest> - <srvAddrDest type="str"></srvAddrDest> - <srvPortDest type="str">5060</srvPortDest> - <cloudServerDest ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CloudServer"> - <name type="str"></name> - <ipAddr type="str"></ipAddr> - <rangeType type="str"></rangeType> - <ipType type="str"></ipType> - <port type="int">0</port> - <attachedInfo type="str"></attachedInfo> - <firstIp type="str"></firstIp> - <netMask type="str"></netMask> - <ipCount type="str"></ipCount> - <ipStep type="str"></ipStep> - </cloudServerDest> - <transfer ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ActivityInfo"> - <name type="str"></name> - <portCount type="int">0</portCount> - <portCountRtp type="int">0</portCountRtp> - <portCountT38 type="int">0</portCountT38> - <portCountMSRP type="int">0</portCountMSRP> - <ipRangeCount type="int">0</ipRangeCount> - <ipCount type="int">0</ipCount> - <ipRule type="int">0</ipRule> - <ipRuleCh type="int">0</ipRuleCh> - <port type="str"></port> - <portRule type="int">0</portRule> - <portRuleCh type="int">0</portRuleCh> - <phone type="str"></phone> - <aliases type="int">0</aliases> - <phoneType type="int">0</phoneType> - <phoneRule type="int">0</phoneRule> - <phoneCount type="int">0</phoneCount> - <telPar type="str"></telPar> - <ipRangeCountRtp type="int">0</ipRangeCountRtp> - <ipCountRtp type="int">0</ipCountRtp> - <ipRuleRtp type="int">0</ipRuleRtp> - <ipRuleChRtp type="int">0</ipRuleChRtp> - <portRtp type="str"></portRtp> - <portT38 type="str"></portT38> - <portMSRP type="str"></portMSRP> - <portRuleRtp type="int">0</portRuleRtp> - <portRuleChRtp type="int">0</portRuleChRtp> - <ipRangeCountT38 type="int">0</ipRangeCountT38> - <ipCountT38 type="int">0</ipCountT38> - <ipRangeCountMSRP type="int">0</ipRangeCountMSRP> - <ipCountMSRP type="int">0</ipCountMSRP> - <symType type="int">0</symType> - <enableTLS type="bool">False</enableTLS> - <enableDTLS type="bool">False</enableDTLS> - <enableTLS_MSRP type="bool">False</enableTLS_MSRP> - <enableTLS_HTTP type="bool">False</enableTLS_HTTP> - <tlsPort type="str"></tlsPort> - <tlsDisableUdpAndTcp type="bool">False</tlsDisableUdpAndTcp> - <nodeCount type="int">0</nodeCount> - <coreCount type="int">1</coreCount> - <nicCount type="int">1</nicCount> - <gtpEnabled type="bool">False</gtpEnabled> - <dcpEnabled type="bool">False</dcpEnabled> - <rangeType type="int">0</rangeType> - <calActivityID type="int">0</calActivityID> - <layerName type="str"></layerName> - </transfer> - <useServerTransfer type="bool">False</useServerTransfer> - <registrarSrvTransfer type="bool">False</registrarSrvTransfer> - <srvAddrTransfer type="str"></srvAddrTransfer> - <srvPortTransfer type="str">5060</srvPortTransfer> - <cloudServerTransfer ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CloudServer"> - <name type="str"></name> - <ipAddr type="str"></ipAddr> - <rangeType type="str"></rangeType> - <ipType type="str"></ipType> - <port type="int">0</port> - <attachedInfo type="str"></attachedInfo> - <firstIp type="str"></firstIp> - <netMask type="str"></netMask> - <ipCount type="str"></ipCount> - <ipStep type="str"></ipStep> - </cloudServerTransfer> - </info> - <scenarioSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ScenarioSettings"> - <scenarioFile type="str">.\Registration_only_LPS.tst</scenarioFile> - <activeScenarioChannel type="int">0</activeScenarioChannel> - <funcsCount type="int">48</funcsCount> - <isModified type="int">66</isModified> - <activityID type="int">2</activityID> - <exportToRM type="int">0</exportToRM> - </scenarioSettings> - <executionSettings ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ExecutionSettings"> - <loopMode type="int">0</loopMode> - <loopCount type="int">1</loopCount> - <loopPreDelay type="int">0</loopPreDelay> - <loopMidDelay type="int">0</loopMidDelay> - <gracefulRampDown type="bool">True</gracefulRampDown> - <rampdownSleep type="bool">False</rampdownSleep> - <aliases type="int">1</aliases> - <ipRule type="int">0</ipRule> - <ipRuleCh type="int">1</ipRuleCh> - <portRule type="int">0</portRule> - <portRuleCh type="int">1</portRuleCh> - <phoneRule type="int">1</phoneRule> - <multipleUsersPerIO type="bool">True</multipleUsersPerIO> - <rtpIpRule type="int">0</rtpIpRule> - <rtpIpRuleCh type="int">1</rtpIpRuleCh> - <rtpPortRule type="int">0</rtpPortRule> - <rtpPortRuleCh type="int">1</rtpPortRuleCh> - <dl_BUG type="bool">True</dl_BUG> - <dl_TRACE type="bool">False</dl_TRACE> - <dl_L_INFO type="bool">True</dl_L_INFO> - <dl_L_ADV type="bool">False</dl_L_ADV> - <dl_L_VRB type="bool">False</dl_L_VRB> - <dl_T_IO type="bool">False</dl_T_IO> - <dl_T_INFO type="bool">False</dl_T_INFO> - <dl_T_ADV type="bool">False</dl_T_ADV> - <dl_T_VRB type="bool">False</dl_T_VRB> - <dl_TG_ADV type="bool">False</dl_TG_ADV> - <dl_TG_VRB type="bool">False</dl_TG_VRB> - <dl_Q_ADV type="bool">False</dl_Q_ADV> - <dl_Q_VRB type="bool">False</dl_Q_VRB> - <dl_S_FSM type="bool">False</dl_S_FSM> - <dl_S_SER type="bool">False</dl_S_SER> - <dl_S_SUA type="bool">False</dl_S_SUA> - <dl_S_WAIT type="bool">False</dl_S_WAIT> - <dl_S_SEND type="bool">False</dl_S_SEND> - <dl_S_INFO type="bool">False</dl_S_INFO> - <dl_S_ADV type="bool">False</dl_S_ADV> - <dl_S_VRB type="bool">False</dl_S_VRB> - <dl_R_DD type="bool">False</dl_R_DD> - <dl_R_VRB type="bool">False</dl_R_VRB> - <dl_R_PAR type="bool">False</dl_R_PAR> - <dl_EE_VRB type="bool">False</dl_EE_VRB> - <dl_EE_DD type="bool">False</dl_EE_DD> - <dl_FLOW type="bool">False</dl_FLOW> - <dl_M_IO type="bool">False</dl_M_IO> - <dl_SDP_DD type="bool">False</dl_SDP_DD> - <dl_1 type="bool">False</dl_1> - <dl_2 type="bool">False</dl_2> - <dl_3 type="bool">False</dl_3> - <log_level type="int">9</log_level> - <log_in_memory type="int">1</log_in_memory> - <rtp_log_in_file type="int">1</rtp_log_in_file> - <log_filesize type="int">32</log_filesize> - <_gbDebugLogs type="bool">False</_gbDebugLogs> - <ccExportProfile type="bool">False</ccExportProfile> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_ipRule1</item> - <item ver="[0, [1, [0, [0]]]]" oid="2" type="ixPropertyState"> - <enable type="int">1</enable> - <show type="int">0</show> - </item> - </item> - <item type="tuple"> - <item type="str">dl_S_ADV</item> - <item ver="[0, [1, [0, [0]]]]" oid="1" type="ixPropertyState"> - <enable type="int">1</enable> - <show type="int">1</show> - </item> - </item> - <item type="tuple"> - <item type="str">loopMidDelay</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_T_IO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_T_INFO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_SEND</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_rtpIpRule1</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">_estimatedBacklog</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loopPreDelay</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_EE_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">log_filesize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtp_log_in_file</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loopCount</item> - <item ver="[0, [1, [0, [0]]]]" oid="3" type="ixPropertyState"> - <enable type="int">0</enable> - <show type="int">1</show> - </item> - </item> - <item type="tuple"> - <item type="str">dl_T_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">aliases</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_Q_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">multipleUsersPerIO</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">log_level</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpIpRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rampdownSleep</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_portRule1</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">dl_FLOW</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_SER</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">log_in_memory</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_R_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_Q_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">portRuleCh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpPortRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_M_IO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_EE_DD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpIpRuleCh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_FSM</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loopMode</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_rtpPortRule1</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">dl_BUG</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_SUA</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ipRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ipRuleCh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">phoneRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_INFO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_R_PAR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">gracefulRampDown</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_WAIT</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_SDP_DD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_TRACE</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbDebugLogs</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">rtpPortRuleCh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_TG_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">portRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_L_INFO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_TG_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_R_DD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_T_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ccExportProfile</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">dl_L_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_L_VRB</item> - <item ref="1"/> - </item> - </_dict> - </state> - </executionSettings> - <customActivityLinkSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ixCustomActivityParameters"> - <enableDbgLog type="bool">False</enableDbgLog> - <dbgLogChannels type="str">1-5</dbgLogChannels> - <bhcaType type="int">0</bhcaType> - <talkTime type="int">10000</talkTime> - <channelsNo type="int">1</channelsNo> - <callSetupTime type="int">500</callSetupTime> - <callTeardownTime type="int">500</callTeardownTime> - <interCallDuration type="int">4000</interCallDuration> - <bhcaObjectiveValue type="int">1</bhcaObjectiveValue> - <cpsOverwriteValueChecked type="int">0</cpsOverwriteValueChecked> - <cpsTotalChannelsChecked type="int">0</cpsTotalChannelsChecked> - <cpsOverwriteValue type="int">18</cpsOverwriteValue> - <cpsType type="int">1</cpsType> - <cpsTalkTime type="int">1500</cpsTalkTime> - <cpsChannelsNo type="int">5</cpsChannelsNo> - <cpsTotalChannelsNo type="int">2500</cpsTotalChannelsNo> - <cpsOverheadTime type="int">1500</cpsOverheadTime> - <cpsInterCallDuration type="int">2000</cpsInterCallDuration> - <cpsObjectiveValue type="int">1</cpsObjectiveValue> - <cpsRegisterTime type="int">40</cpsRegisterTime> - <cpsSplitTimeline type="int">0</cpsSplitTimeline> - <lpsType type="int">0</lpsType> - <lpsTalkTime type="int">800</lpsTalkTime> - <lpsChannelsNo type="int">2150</lpsChannelsNo> - <lpsOverheadTime type="int">1500</lpsOverheadTime> - <lpsInterLoopDuration type="int">2000</lpsInterLoopDuration> - <lpsObjectiveValue type="int">500</lpsObjectiveValue> - <lpsActiveChannel type="int">0</lpsActiveChannel> - <activeUsersTalkTime type="int">750</activeUsersTalkTime> - <activeUsersNo type="int">86534</activeUsersNo> - <activeUsersChannel type="int">0</activeUsersChannel> - <activeUsersObjectiveValue type="int">{{registeringtotalcalls}}</activeUsersObjectiveValue> - </customActivityLinkSettings> - <rtpWaveFiles ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_RTPWaveFiles"> - <wavesCount type="int">0</wavesCount> - </rtpWaveFiles> - <rtpTones ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_RTPTones"> - <usedTonesCount type="int">0</usedTonesCount> - <customTonesCount type="int">35</customTonesCount> - <seqCustTonesCount type="int">0</seqCustTonesCount> - </rtpTones> - <codecCustomPopup ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecCustomPopup"> - <captureFile type="str">Default.cap</captureFile> - <parseRTPPort type="bool">False</parseRTPPort> - <parseSSRC type="bool">False</parseSSRC> - <rtpPort type="int">10000</rtpPort> - <ssrc type="str">0x8078C5D3</ssrc> - </codecCustomPopup> - <codecCustomPropDlg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecCustomPropDlg"/> - <codecSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecSettings"> - <codecs ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_CodecSettings_codecs" itemtype="ixConfig"> - <item ver="[0, [0, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecG711u"> - <dPayloadIn type="int">0</dPayloadIn> - <dPayloadOut type="int">0</dPayloadOut> - <frameSize type="int">160</frameSize> - </item> - <item ver="[0, [0, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecG711a"> - <dPayloadIn type="int">8</dPayloadIn> - <dPayloadOut type="int">8</dPayloadOut> - <frameSize type="int">160</frameSize> - </item> - </codecs> - <codecs_number type="int">2</codecs_number> - <_gbVideoCodecs type="bool">False</_gbVideoCodecs> - <videoPayloadType type="int">96</videoPayloadType> - <_gbDataCodecs type="bool">False</_gbDataCodecs> - <dataCodecs ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_CodecSettings_dataCodecs" itemtype="ixConfig"> - <item ver="[0, [0, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Rtp2833Events"> - <dPayloadType type="int">100</dPayloadType> - </item> - <item ver="[0, [0, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Rtp2833Tones"> - <dPayloadType type="int">101</dPayloadType> - </item> - </dataCodecs> - <crtCustomCodecIndex type="int">-1</crtCustomCodecIndex> - </codecSettings> - <rtpSettings ver="[7, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_RTPSettings"> - <rtpPort type="str">[10000-65535,4]</rtpPort> - <enableAdvStatCalc type="bool">False</enableAdvStatCalc> - <enableRTCP type="bool">False</enableRTCP> - <enableRTCPMux type="bool">False</enableRTCPMux> - <chEnableHwAcc type="bool">False</chEnableHwAcc> - <chDisableHwAcc type="bool">False</chDisableHwAcc> - <enableHwAcc type="bool">False</enableHwAcc> - <enableIxStack type="bool">False</enableIxStack> - <enableNBExec type="bool">False</enableNBExec> - <enablePerStream type="bool">False</enablePerStream> - <enableMDI type="bool">False</enableMDI> - <enableRTP type="bool">False</enableRTP> - <enableMediaSDPParams type="bool">False</enableMediaSDPParams> - <audioB_option type="bool">False</audioB_option> - <audioB_value type="str">AS:48</audioB_value> - <audioRR_option type="bool">False</audioRR_option> - <audioRR_value type="str">800</audioRR_value> - <audioRS_option type="bool">False</audioRS_option> - <audioRS_value type="str">800</audioRS_value> - <videoB_option type="bool">False</videoB_option> - <videoB_value type="str">AS:384</videoB_value> - <videoRR_option type="bool">False</videoRR_option> - <videoRR_value type="str">6400</videoRR_value> - <videoRS_option type="bool">False</videoRS_option> - <videoRS_value type="str">6400</videoRS_value> - <textB_option type="bool">False</textB_option> - <textB_value type="str">AS:48</textB_value> - <textRR_option type="bool">False</textRR_option> - <textRR_value type="str">800</textRR_value> - <textRS_option type="bool">False</textRS_option> - <textRS_value type="str">800</textRS_value> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">videoRR_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbVideoSDPParams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textRS_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">channelsQoVPerZionPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbAudioSDPParams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">dedicatedCoreRange</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpTosVal</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">channelTypeQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableMediaSDPParams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTextSDPParams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">activityIdQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">serviceEnabledQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioRS_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useJitComp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">maxMosStreams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioB_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioB_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">portIPsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableHwAcc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableIxStack</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">jitMs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoRR_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableRTCPMux</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textRR_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">silenceMode</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbMediaSDPParams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textB_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">jitCMs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">valueQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableRTCP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dedicatedCoreRangeLength</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableMDI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">chEnableHwAcc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableOWD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">unitsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ixnamSupported</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">chDisableHwAcc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTosGroupBox</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioRR_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enablePerStream</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useSilence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useMos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textRR_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">audioRS_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">videoB_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">mosInterval</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableAdvStatCalc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useJitter</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">limitMos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">metricsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoRS_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoRS_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">jitCMaxDrop</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioRR_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textB_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableTosRtp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoB_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">activityNameQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textRS_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableNBExec</item> - <item ref="1"/> - </item> - </_dict> - </state> - </rtpSettings> - <rtcpSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_RTCPSettings"> - <rtcpIgnoreSSRC type="bool">False</rtcpIgnoreSSRC> - <rtcpCNAMEType type="int">0</rtcpCNAMEType> - <hasSDESName type="bool">False</hasSDESName> - <hasSDESTool type="bool">False</hasSDESTool> - <rtcpSDESTool type="str">IxLoad</rtcpSDESTool> - <rtcpReceiverTimer type="int">2000</rtcpReceiverTimer> - <rtcpSenderTimer type="int">2000</rtcpSenderTimer> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">rtcpSDESTool</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">rtcpSenderTimer</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtcpCNAMEType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">hasSDESTool</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtcpReceiverTimer</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtcpIgnoreSSRC</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">hasSDESName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableRTCPMux2</item> - <item ref="1"/> - </item> - </_dict> - </state> - </rtcpSettings> - <audioSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AudioSettings"> - <enableAudio type="bool">False</enableAudio> - <_gbEnableAudio type="bool">False</_gbEnableAudio> - <enableAudioOWD type="bool">False</enableAudioOWD> - <useJitter type="bool">False</useJitter> - <_JB1 type="bool">False</_JB1> - <jitMs type="int">20</jitMs> - <useJitComp type="bool">False</useJitComp> - <jitCMs type="int">1000</jitCMs> - <jitCMaxDrop type="int">7</jitCMaxDrop> - <dodName type="str">rtp_esmad-asordo-l_1224</dodName> - <useMos type="bool">False</useMos> - <useSilence type="bool">False</useSilence> - <silenceMode type="int">1</silenceMode> - <enableTosRtp type="bool">False</enableTosRtp> - <rtpTos type="int">1</rtpTos> - <customTosGroupBox type="bool">False</customTosGroupBox> - <customTos type="str">0x20</customTos> - <rtpTosVal type="int">32</rtpTosVal> - <_COV1 type="bool">False</_COV1> - <useQoV type="bool">False</useQoV> - <qovAnalize type="int">5</qovAnalize> - <qovSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_QoVSettings"> - <activityIdQoV type="int">0</activityIdQoV> - <enableQoV type="bool">False</enableQoV> - <_gbEnableQoV type="bool">False</_gbEnableQoV> - <serviceEnabledQoV type="bool">False</serviceEnabledQoV> - <activityNameQoV type="str"></activityNameQoV> - <portIPsQoV type="str"></portIPsQoV> - <unitsQoV type="int">0</unitsQoV> - <valueQoV type="int">100</valueQoV> - <channelTypeQoV type="int">0</channelTypeQoV> - <metricsQoV type="int">0</metricsQoV> - <channelsQoVPerZionPort type="int">0</channelsQoVPerZionPort> - <radioBtnQoVASR type="int">0</radioBtnQoVASR> - <languageASR type="str">English(US)</languageASR> - </qovSettings> - <activityIdQoV type="int">0</activityIdQoV> - <enableQoV type="bool">False</enableQoV> - <_gbEnableQoV type="bool">False</_gbEnableQoV> - <serviceEnabledQoV type="bool">False</serviceEnabledQoV> - <activityNameQoV type="str"></activityNameQoV> - <portIPsQoV type="str"></portIPsQoV> - <unitsQoV type="int">0</unitsQoV> - <valueQoV type="int">100</valueQoV> - <channelTypeQoV type="int">0</channelTypeQoV> - <metricsQoV type="int">0</metricsQoV> - <channelsQoVPerZionPort type="int">0</channelsQoVPerZionPort> - <radioBtnQoVASR type="int">0</radioBtnQoVASR> - <languageASR type="str">English(US)</languageASR> - <audioClip type="str">US_042.wav</audioClip> - <_audioFormat type="str">Format: PCM, Duration: 32785 ms, Size: 524556 bytes</_audioFormat> - <outputLevel type="int">-20</outputLevel> - <_gbOutputLevel type="bool">False</_gbOutputLevel> - <playTypeAudio type="int">0</playTypeAudio> - <audioDuration type="int">10</audioDuration> - <audioDurationUnit type="int">1</audioDurationUnit> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_gbEnableQoV</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">channelTypeQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">pesqPolqa</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enablePTT</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableP56</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">qovAnalize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">channelsQoVPerZionPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_COV1</item> - <item ver="[0, [1, [0, [0]]]]" oid="4" type="ixPropertyState"> - <enable type="int">0</enable> - <show type="int">0</show> - </item> - </item> - <item type="tuple"> - <item type="str">useTelchemy</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">activityIdQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpTosVal</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useJitComp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioDuration</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_JB1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">portIPsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbQoVMetrics</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dodName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">jitMs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbASRLanguage</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">rtpTos</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">radioBtnQoVASR</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">silenceMode</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">playTypeAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useQoV</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">activityNameQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">jitCMs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">valueQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbOutputLevel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">unitsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">serviceEnabledQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">languageASR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTosGroupBox</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">audioDurationUnit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">useMos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">channelsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTos</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">qovSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useJitter</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useSilence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">metricsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">jitCMaxDrop</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableTosRtp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableAudioOWD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_audioFormat</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableAudio</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">outputLevel</item> - <item ref="1"/> - </item> - </_dict> - </state> - </audioSettings> - <editTos ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_EditTos"> - <bits012 type="int">0</bits012> - <minDelay type="bool">False</minDelay> - <maxThroughput type="bool">False</maxThroughput> - <maxReliability type="bool">False</maxReliability> - <_gbBtnTosBit7_0 type="bool">False</_gbBtnTosBit7_0> - <_gbBtnTosBit7_1 type="bool">False</_gbBtnTosBit7_1> - <_gbBtnTosBit6_0 type="bool">False</_gbBtnTosBit6_0> - <_gbBtnTosBit6_1 type="bool">False</_gbBtnTosBit6_1> - <_gbBtnTosBit5_0 type="bool">False</_gbBtnTosBit5_0> - <_gbBtnTosBit5_1 type="bool">False</_gbBtnTosBit5_1> - <_gbBtnTosBit4_0 type="bool">False</_gbBtnTosBit4_0> - <_gbBtnTosBit4_1 type="bool">False</_gbBtnTosBit4_1> - <_gbBtnTosBit3_0 type="bool">False</_gbBtnTosBit3_0> - <_gbBtnTosBit3_1 type="bool">False</_gbBtnTosBit3_1> - <_gbBtnTosBit2_0 type="bool">False</_gbBtnTosBit2_0> - <_gbBtnTosBit2_1 type="bool">False</_gbBtnTosBit2_1> - <_gbDisabledBtns type="bool">False</_gbDisabledBtns> - </editTos> - <srtpSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SRTPSettings"> - <bEnableSRTP type="bool">False</bEnableSRTP> - <bEnableVideoSRTP type="bool">False</bEnableVideoSRTP> - <bEnableTextSRTP type="bool">False</bEnableTextSRTP> - <bDisableSRTCPEncryption type="bool">False</bDisableSRTCPEncryption> - <bDisableSRTPEncryption type="bool">False</bDisableSRTPEncryption> - <bDisableSRTPAuthentication type="bool">False</bDisableSRTPAuthentication> - <bDisableValidations type="bool">False</bDisableValidations> - <bAllowOnlySecureStreams type="bool">False</bAllowOnlySecureStreams> - <bIncludeMKI type="bool">False</bIncludeMKI> - <bEnablePreencryption type="bool">False</bEnablePreencryption> - <bDisableMasterSalt type="bool">False</bDisableMasterSalt> - <bStaticMasterKeySalt type="bool">False</bStaticMasterKeySalt> - <_masterKeySelection type="int">0</_masterKeySelection> - <staticSingleKeySalt type="str"></staticSingleKeySalt> - <staticKeyFile type="str"></staticKeyFile> - <_enableSRTP type="bool">False</_enableSRTP> - <_useStaticKey type="bool">False</_useStaticKey> - <_singleMasterKeyGrp type="bool">False</_singleMasterKeyGrp> - <_multipleMasterKeysGrp type="bool">False</_multipleMasterKeysGrp> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">bDisableSRTPAuthentication</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_singleMasterKeyGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bIncludeMKI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bEnableSRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableValidations</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_useStaticKey</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">bEnablePreencryption</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_multipleMasterKeysGrp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_enableSRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bStaticMasterKeySalt</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">staticKeyFile</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableMasterSalt</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">staticSingleKeySalt</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bAllowOnlySecureStreams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableSRTCPEncryption</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bEnableVideoSRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableSRTPEncryption</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bEnableTextSRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_masterKeySelection</item> - <item ref="1"/> - </item> - </_dict> - </state> - </srtpSettings> - <videoClips ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoClips"> - <videoClipsInfo ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_VideoClips_videoClipsInfo" itemtype="ixConfig"/> - <videoClipsInfoLength type="int">0</videoClipsInfoLength> - <H323MaxProfile type="int">0</H323MaxProfile> - <H323MaxLevel type="int">0</H323MaxLevel> - <H323MaxBitRate type="int">0</H323MaxBitRate> - <H323Packetization type="int">0</H323Packetization> - <MaxProfileIdc type="int">66</MaxProfileIdc> - <MaxProfileIop type="int">0</MaxProfileIop> - <MaxLevel type="int">1</MaxLevel> - </videoClips> - <advancedVideo ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AdvancedVideoSettings"> - <enableCustomMaxMBPS type="bool">False</enableCustomMaxMBPS> - <customMaxMBPS type="int">0</customMaxMBPS> - <enableCustomMaxFS type="bool">False</enableCustomMaxFS> - <customMaxFS type="int">0</customMaxFS> - <enableCustomMaxDPB type="bool">False</enableCustomMaxDPB> - <customMaxDPB type="int">0</customMaxDPB> - <enableCustomMaxBRandCPB type="bool">False</enableCustomMaxBRandCPB> - <customMaxBRandCPB type="int">0</customMaxBRandCPB> - <enableMaxStaticMBPS type="bool">False</enableMaxStaticMBPS> - <maxStaticMBPS type="int">0</maxStaticMBPS> - <enableMaxRcmdNalUnitSize type="bool">False</enableMaxRcmdNalUnitSize> - <maxRcmdNalUnitSize type="int">0</maxRcmdNalUnitSize> - <enableMaxNalUnitSize type="bool">False</enableMaxNalUnitSize> - <maxNalUnitSize type="int">0</maxNalUnitSize> - </advancedVideo> - <videoSettings ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoSettings"> - <enableVideo type="bool">False</enableVideo> - <enableVideoOWD type="bool">False</enableVideoOWD> - <videoMaxSessions type="int">1</videoMaxSessions> - <_gbEnableVideo type="bool">False</_gbEnableVideo> - <videoClip type="str">Fire_avc.mp4</videoClip> - <_videoFormat type="str">Codec: H264, Duration: 12800 ms, Size: 2012176 bytes, Bitrate: 1225 kbps</_videoFormat> - <playTypeVideo type="int">0</playTypeVideo> - <videoDuration type="int">5</videoDuration> - <videoDurationUnit type="int">1</videoDurationUnit> - <useConference type="bool">False</useConference> - <_gbUseConference type="bool">False</_gbUseConference> - <rotationScheme type="int">0</rotationScheme> - <confVideoDuration type="int">1</confVideoDuration> - <confVideoDurationUnit type="int">1</confVideoDurationUnit> - <confDuration type="int">1</confDuration> - <confDurationUnit type="int">1</confDurationUnit> - <btnTelepresence type="bool">False</btnTelepresence> - <_gbUseTelepresence type="bool">False</_gbUseTelepresence> - <tipSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoTelepresenceSettings"> - <tipEndpointType type="int">1</tipEndpointType> - <tipResolution type="int">1</tipResolution> - <tipVersion type="int">1</tipVersion> - <tipSyntheticPayload type="bool">False</tipSyntheticPayload> - <tipMoreClips type="bool">False</tipMoreClips> - <_gbTipMoreClips type="int">0</_gbTipMoreClips> - <tipVideoClip2 type="str">Fire_avc.mp4</tipVideoClip2> - <tipRotationScheme type="int">0</tipRotationScheme> - <tipConfDuration type="int">1</tipConfDuration> - <tipConfDurationUnit type="int">1</tipConfDurationUnit> - <tipAudioDuration type="int">1</tipAudioDuration> - <tipAudioDurationUnit type="int">1</tipAudioDurationUnit> - <_gbTipPresentation type="bool">False</_gbTipPresentation> - <tipUsePresentationStream type="bool">False</tipUsePresentationStream> - <tipVideoClip type="str">Fire_avc.mp4</tipVideoClip> - <tipAudioClip type="str">US_042.wav</tipAudioClip> - <tipStartAfter type="int">1</tipStartAfter> - <tipStartAfterUnit type="int">1</tipStartAfterUnit> - <tipDuration type="int">1</tipDuration> - <tipDurationUnit type="int">1</tipDurationUnit> - <tipPresentationRotation type="int">0</tipPresentationRotation> - <tipLegacyMode type="bool">False</tipLegacyMode> - <_gbTipLegacy type="int">0</_gbTipLegacy> - <tipLegacyClip type="str">Fire_avc.mp4</tipLegacyClip> - <tipLegacyModeAudio type="bool">False</tipLegacyModeAudio> - <_gbTipLegacyAudio type="int">0</_gbTipLegacyAudio> - <tipLegacyClipAudio type="str">US_042.wav</tipLegacyClipAudio> - <tipG722Legacy type="bool">False</tipG722Legacy> - <tipAudioActivityMetric type="bool">False</tipAudioActivityMetric> - <tipDinamicChannels type="bool">False</tipDinamicChannels> - <tipVideoRefresh type="bool">False</tipVideoRefresh> - <tipInbandSets type="bool">False</tipInbandSets> - <tipArithmetingCoding type="bool">False</tipArithmetingCoding> - <tipLTRP type="bool">False</tipLTRP> - <tipGDR type="bool">False</tipGDR> - <tipHighProfile type="bool">False</tipHighProfile> - <tipUnrestrictedMedia type="bool">False</tipUnrestrictedMedia> - <tipRtcpFeedback type="bool">True</tipRtcpFeedback> - </tipSettings> - <_gbTosVideo type="bool">False</_gbTosVideo> - <enableTosVideo type="bool">False</enableTosVideo> - <tosVideo type="int">1</tosVideo> - <customTosVideo type="str">0x20</customTosVideo> - <_gbCustomTosVideo type="bool">False</_gbCustomTosVideo> - <tosValVideo type="int">32</tosValVideo> - <useMosVideo type="bool">False</useMosVideo> - <enableAcceptSSRCChanges type="bool">False</enableAcceptSSRCChanges> - <ignoreHintTrack type="bool">False</ignoreHintTrack> - <hintTrackType type="int">1</hintTrackType> - <enablePACSI type="bool">True</enablePACSI> - <useSingleNALUnit type="bool">False</useSingleNALUnit> - <_gbH323AdvancedSettings type="bool">False</_gbH323AdvancedSettings> - <useH323AdvancedSettings type="bool">False</useH323AdvancedSettings> - <_gbUseH323AdvancedSettings type="bool">False</_gbUseH323AdvancedSettings> - <rtpmap type="str"></rtpmap> - <fmtp type="str"></fmtp> - <isMP4 type="bool">False</isMP4> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">hintTrackType</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">videoMaxSessions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useSingleNALUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableVideo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useConference</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTosVideo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">playTypeVideo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rotationScheme</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbUseH323AdvancedSettings</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">isMP4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confVideoDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tosValVideo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enablePACSI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_videoFormat</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tosVideo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbUseTelepresence</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableVideoOWD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTosVideo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">fmtp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoDurationUnit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbUseConference</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbH323AdvancedSettings</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">_gbTosVideo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbCustomTosVideo</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">ignoreHintTrack</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableAcceptSSRCChanges</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoDuration</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">useH323AdvancedSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confVideoDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpmap</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableVideo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">btnTelepresence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useMosVideo</item> - <item ref="1"/> - </item> - </_dict> - </state> - </videoSettings> - <videoConfSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoConfSettings"> - <rotationScheme type="int">0</rotationScheme> - <_gbRotationScheme type="int">0</_gbRotationScheme> - <confVideoDuration type="int">0</confVideoDuration> - <confVideoDurationUnit type="int">0</confVideoDurationUnit> - <confDuration type="int">0</confDuration> - <confDurationUnit type="int">0</confDurationUnit> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">rotationScheme</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confVideoDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbRotationScheme</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">confVideoDuration</item> - <item ref="1"/> - </item> - </_dict> - </state> - </videoConfSettings> - <videoTelepresenceSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoTelepresenceSettings"> - <tipEndpointType type="int">0</tipEndpointType> - <tipResolution type="int">0</tipResolution> - <tipVersion type="int">0</tipVersion> - <tipSyntheticPayload type="bool">False</tipSyntheticPayload> - <tipMoreClips type="bool">False</tipMoreClips> - <_gbTipMoreClips type="int">0</_gbTipMoreClips> - <tipVideoClip2 type="str">Fire_avc.mp4</tipVideoClip2> - <tipRotationScheme type="int">0</tipRotationScheme> - <tipConfDuration type="int">0</tipConfDuration> - <tipConfDurationUnit type="int">0</tipConfDurationUnit> - <tipAudioDuration type="int">0</tipAudioDuration> - <tipAudioDurationUnit type="int">0</tipAudioDurationUnit> - <_gbTipPresentation type="bool">False</_gbTipPresentation> - <tipUsePresentationStream type="bool">False</tipUsePresentationStream> - <tipVideoClip type="str">Fire_avc.mp4</tipVideoClip> - <tipAudioClip type="str">US_042.wav</tipAudioClip> - <tipStartAfter type="int">0</tipStartAfter> - <tipStartAfterUnit type="int">0</tipStartAfterUnit> - <tipDuration type="int">0</tipDuration> - <tipDurationUnit type="int">0</tipDurationUnit> - <tipPresentationRotation type="int">0</tipPresentationRotation> - <tipLegacyMode type="bool">False</tipLegacyMode> - <_gbTipLegacy type="int">0</_gbTipLegacy> - <tipLegacyClip type="str">Fire_avc.mp4</tipLegacyClip> - <tipLegacyModeAudio type="bool">False</tipLegacyModeAudio> - <_gbTipLegacyAudio type="int">0</_gbTipLegacyAudio> - <tipLegacyClipAudio type="str">US_042.wav</tipLegacyClipAudio> - <tipG722Legacy type="bool">False</tipG722Legacy> - <tipAudioActivityMetric type="bool">False</tipAudioActivityMetric> - <tipDinamicChannels type="bool">False</tipDinamicChannels> - <tipVideoRefresh type="bool">False</tipVideoRefresh> - <tipInbandSets type="bool">False</tipInbandSets> - <tipArithmetingCoding type="bool">False</tipArithmetingCoding> - <tipLTRP type="bool">False</tipLTRP> - <tipGDR type="bool">False</tipGDR> - <tipHighProfile type="bool">False</tipHighProfile> - <tipUnrestrictedMedia type="bool">False</tipUnrestrictedMedia> - <tipRtcpFeedback type="bool">True</tipRtcpFeedback> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">tipUnrestrictedMedia</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipLegacyClipAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipRotationScheme</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipLegacyMode</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipLegacyClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipVideoRefresh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipUsePresentationStream</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipRtcpFeedback</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipStartAfterUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipArithmetingCoding</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTipLegacyAudio</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tipConfDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipConfDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipG722Legacy</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipLegacyClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipMoreClips</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipInbandSets</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipLegacyModeAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipVideoClip2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipAudioDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipResolution</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipDinamicChannels</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipLegacyClipAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipSyntheticPayload</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTipPresentation</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tipHighProfile</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipAudioActivityMetric</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipGDR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipVideoClip2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTipMoreClips</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tipVersion</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipVideoClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipEndpointType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTipLegacy</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tipLTRP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipStartAfter</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipAudioClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipPresentationRotation</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipAudioClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipVideoClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipAudioDuration</item> - <item ref="1"/> - </item> - </_dict> - </state> - </videoTelepresenceSettings> - <textSettings ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TextSettings"> - <enableText type="bool">False</enableText> - <enableTextOWD type="bool">False</enableTextOWD> - <_gbEnableText type="bool">False</_gbEnableText> - <textClip type="str">The quick brown fox jumps over the lazy dog</textClip> - <textFormat type="str">Format: t140, Max duration: 42300 ms</textFormat> - <textChpsMin type="float">1.0</textChpsMin> - <textChpsMax type="float">1.0</textChpsMax> - <textBufferTime type="int">300</textBufferTime> - <textRedundancyLevel type="int">0</textRedundancyLevel> - <textPlayType type="int">0</textPlayType> - <textDuration type="int">5</textDuration> - <textDurationUnit type="int">1</textDurationUnit> - <_gbTosText type="bool">False</_gbTosText> - <enableTosText type="bool">False</enableTosText> - <tosText type="int">1</tosText> - <customTosText type="str">0x20</customTosText> - <_gbCustomTosText type="bool">False</_gbCustomTosText> - <tosValText type="int">32</tosValText> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">tosValText</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableText</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTosText</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textChpsMin</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textRedundancyLevel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textChpsMax</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textBufferTime</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textDuration</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableTextOWD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTosText</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableText</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textPlayType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbCustomTosText</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">enableTosText</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textFormat</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textDurationUnit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tosText</item> - <item ref="3"/> - </item> - </_dict> - </state> - </textSettings> - <t38Settings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_T38Settings"> - <enableT38 type="bool">False</enableT38> - <_gbEnableT38 type="bool">False</_gbEnableT38> - <_gbEnableT38_2 type="bool">False</_gbEnableT38_2> - <faxImage type="str">Ixia2Pages.tif</faxImage> - <_faxFormat type="str">Format: TIFF, Img size: 1660 x 2291, Size: 140402 bytes</_faxFormat> - <t38TransportType type="int">1</t38TransportType> - <t38Port type="str">40000</t38Port> - <t38UdpEncapsulation type="int">0</t38UdpEncapsulation> - <_gbT38UdpEncapsulation type="bool">False</_gbT38UdpEncapsulation> - <t38PayloadType type="int">102</t38PayloadType> - <useFaxVersion type="bool">True</useFaxVersion> - <faxVersion type="int">0</faxVersion> - <useT38MaxBitrate type="bool">True</useT38MaxBitrate> - <t38MaxBitrate type="int">5</t38MaxBitrate> - <useT38RateMgmt type="bool">True</useT38RateMgmt> - <t38RateMgmt type="int">0</t38RateMgmt> - <useT38FillBitRemoval type="bool">False</useT38FillBitRemoval> - <t38FillBitRemoval type="int">0</t38FillBitRemoval> - <t38TranscodingMMR type="bool">False</t38TranscodingMMR> - <t38TranscodingJBIG type="bool">False</t38TranscodingJBIG> - <_gbUdpOptions type="bool">False</_gbUdpOptions> - <useErrorRecoverySchema type="bool">True</useErrorRecoverySchema> - <errorRecoverySchema type="int">0</errorRecoverySchema> - <useT38MaxDatagramSize type="bool">True</useT38MaxDatagramSize> - <t38MaxDatagramSize type="int">256</t38MaxDatagramSize> - <useT38MaxBufferSize type="bool">False</useT38MaxBufferSize> - <t38MaxBufferSize type="int">200</t38MaxBufferSize> - <imagesList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_T38Settings_imagesList" itemtype="ixConfig"/> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">t38TranscodingMMR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38UdpEncapsulation</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38MaxBitrate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38RateMgmt</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38TranscodingJBIG</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableT38</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38TransportType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableT38_2</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableT38</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">useFaxVersion</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38Port</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38FillBitRemoval</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">faxVersion</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38FillBitRemoval</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38RateMgmt</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">faxImage</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38MaxBufferSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">errorRecoverySchema</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38MaxDatagramSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38MaxBufferSize</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">t38PayloadType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38MaxDatagramSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38MaxBitrate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_faxFormat</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbUdpOptions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbT38UdpEncapsulation</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">imagesList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useErrorRecoverySchema</item> - <item ref="1"/> - </item> - </_dict> - </state> - </t38Settings> - <t30Parameters ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_T30Parameters"> - <t30StationId type="str">5551[000-]</t30StationId> - <t30SendCoding type="int">0</t30SendCoding> - <t30SendDataRate type="int">5</t30SendDataRate> - <t30SendPageSize type="int">0</t30SendPageSize> - <t30SendMSLT type="int">0</t30SendMSLT> - <t30SendProtocol type="int">1</t30SendProtocol> - <t30SendResolution type="int">0</t30SendResolution> - <sendCNG type="int">1</sendCNG> - <t30ReceiveCoding type="int">2</t30ReceiveCoding> - <t30ReceivePageSize type="int">2</t30ReceivePageSize> - <t30ReceiveMSLT type="int">0</t30ReceiveMSLT> - <t30ReceiveProtocol type="int">1</t30ReceiveProtocol> - <t30ReceiveR8x3 type="bool">True</t30ReceiveR8x3> - <t30ReceiveR8x7 type="bool">True</t30ReceiveR8x7> - <t30ReceiveR8x15 type="bool">True</t30ReceiveR8x15> - <t30Receive200x200 type="bool">True</t30Receive200x200> - <t30ReceiveModulations type="int">3</t30ReceiveModulations> - <sendCedBeforeDIS type="int">1</sendCedBeforeDIS> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">t30SendResolution</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">sendCedBeforeDIS</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveR8x7</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30SendPageSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveR8x3</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">t30SendProtocol</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveProtocol</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">sendCNG</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30SendCoding</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveMSLT</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30SendMSLT</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveCoding</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceivePageSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveModulations</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveR8x15</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30StationId</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30SendDataRate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30Receive200x200</item> - <item ref="1"/> - </item> - </_dict> - </state> - </t30Parameters> - <msrpSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MSRPSettings"> - <enableMSRP type="bool">False</enableMSRP> - <_gbEnableMSRP type="bool">False</_gbEnableMSRP> - <msrpPort type="str">2855</msrpPort> - <domainType type="int">0</domainType> - <localDomain type="str">alice[00-99].example.com</localDomain> - <relays ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_MSRPSettings_relays" itemtype="ixConfig"/> - <relaysCount type="int">0</relaysCount> - <firstRelayIpEnabled type="bool">False</firstRelayIpEnabled> - <firstRelayIp type="str">10.10.10.1</firstRelayIp> - <firstRelayIsIPv4 type="bool">True</firstRelayIsIPv4> - <msrpRelayPort type="int">2855</msrpRelayPort> - <enableMSRPTos type="bool">False</enableMSRPTos> - <msrpTos type="int">0</msrpTos> - <customMSRPTos type="str">0x00</customMSRPTos> - <tosMSRPVal type="int">0</tosMSRPVal> - <automaticMSRPAuth type="bool">True</automaticMSRPAuth> - <msrpReuseTCP type="bool">True</msrpReuseTCP> - <msrpSendEmptyMsg type="bool">False</msrpSendEmptyMsg> - <msrpTransactionTimeout type="int">30000</msrpTransactionTimeout> - <msrpFirstChunkTimeout type="int">60000</msrpFirstChunkTimeout> - <msrpInterChunkTimeout type="int">30000</msrpInterChunkTimeout> - <msrpSessionTimeout type="int">70000</msrpSessionTimeout> - <msrpGuiFiles ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_MSRPSettings_msrpGuiFiles" itemtype="ixConfig"/> - <files ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_MSRPSettings_files" itemtype="ixConfig"/> - <filesCount type="int">0</filesCount> - <advSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MSRPAdvancedSettings"> - <closeTCPConnectionAfterBye type="bool">False</closeTCPConnectionAfterBye> - </advSettings> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">domainType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">filesCount</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">firstRelayIpEnabled</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">automaticMSRPAuth</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpSendEmptyMsg</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpTransactionTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpInterChunkTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tosMSRPVal</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableMSRP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">localDomain</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">relaysCount</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customMSRPTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">firstRelayIp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">advSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">files</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpFirstChunkTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">firstRelayIsIPv4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbMSRPCustomTos</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">msrpSessionTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableMSRP</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableMSRPTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpReuseTCP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpGuiFiles</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpTos</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">relays</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpRelayPort</item> - <item ref="3"/> - </item> - </_dict> - </state> - </msrpSettings> - <_tempFile ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_FileRecord"> - <synthetic type="int">0</synthetic> - <_typeStr type="str"></_typeStr> - <name type="str"></name> - <nameSynthetic type="str"></nameSynthetic> - <fileClientPath type="str"></fileClientPath> - <filePcpuPath type="str"></filePcpuPath> - <_bFileSize type="int">20</_bFileSize> - <_msrpSizeCombo type="int">2</_msrpSizeCombo> - <size type="int">0</size> - <btnMSRPFileBrowse type="int">0</btnMSRPFileBrowse> - <type type="str">application/octet-stream</type> - <fileHash type="str"></fileHash> - </_tempFile> - <_tempAdvSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MSRPAdvancedSettings"> - <closeTCPConnectionAfterBye type="bool">False</closeTCPConnectionAfterBye> - </_tempAdvSettings> - <phoneBookInputLabel ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_PhoneBookInputLabel"> - <label type="str">5</label> - </phoneBookInputLabel> - <akaConfigurationInputLabel ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AKAConfigurationInputLabel"> - <configurationLabel type="str"></configurationLabel> - </akaConfigurationInputLabel> - <phoneBook ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_PhoneBook"> - <fromFile type="int">0</fromFile> - <pattern type="str">201004[0000-]</pattern> - <filePath type="str"></filePath> - <_PN1 type="bool">False</_PN1> - <_bTelGrp type="bool">False</_bTelGrp> - <ckTelURIBook type="bool">False</ckTelURIBook> - <_bkTelURIparams type="str">phone-context=example.com</_bkTelURIparams> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">phoneBookList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">filePath</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">pattern</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ckTelURIBook</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_bkTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_PN1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_bTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fromFile</item> - <item ref="1"/> - </item> - </_dict> - </state> - </phoneBook> - <akaConfiguration ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AKAConfiguration"/> - <milenageConfiguration ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MilenageConfiguration"/> - <msgBox ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MsgBox"> - <msg1 type="str"></msg1> - <msg2 type="str"></msg2> - </msgBox> - <editCloudRule ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_EditCloudRule"> - <_gbStep1 type="bool">False</_gbStep1> - <requestList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditCloudRule_requestList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">ANY</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">INVITE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">ACK</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">BYE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">CANCEL</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">OPTIONS</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">REGISTER</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">NOTIFY</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">SUBSCRIBE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">REFER</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">MESSAGE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">PRACK</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">INFO</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">UPDATE</str> - </item> - </requestList> - <reqList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditCloudRule_reqList" itemtype="ixConfig"/> - <_gbStep2 type="bool">False</_gbStep2> - <what type="int">2</what> - <reqLine type="int">1</reqLine> - <headerTypeList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditCloudRule_headerTypeList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">To</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">From</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Contact</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Also</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Authorization</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Call-ID</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Content-Length</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Content-Type</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">CSeq</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Event</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Proxy-Authenticate</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Proxy-Authorization</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">RAck</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Record-Route</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Refer-To</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Referred-By</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Replaces</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Route</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">RSeq</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Subscription-State</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Via</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">WWW-Authenticate</str> - </item> - </headerTypeList> - <headerType type="str">To</headerType> - <compactForm type="str">t</compactForm> - <occurFrom type="str">1</occurFrom> - <occurTo type="str">1</occurTo> - <whatExtract type="int">3</whatExtract> - <extractHeaderName type="bool">False</extractHeaderName> - <paramName type="str"></paramName> - <revHeaderOrder type="bool">False</revHeaderOrder> - <keepHeaderCrlf type="bool">False</keepHeaderCrlf> - <_gbStep3 type="bool">False</_gbStep3> - <usePosition type="int">0</usePosition> - <beginAfter type="bool">False</beginAfter> - <afterStr type="str"><</afterStr> - <afterOccur type="str">1</afterOccur> - <endBefore type="bool">False</endBefore> - <endStr type="str">></endStr> - <endOccur type="str">last</endOccur> - <positionFrom type="str">1</positionFrom> - <positionTo type="str">last</positionTo> - <_gbStep4 type="bool">False</_gbStep4> - <formulaSource type="int">0</formulaSource> - <formula type="str"></formula> - <phoneBookPath type="str"></phoneBookPath> - <phoneBookDodPath type="str"></phoneBookDodPath> - <btnPBBrowse type="int">0</btnPBBrowse> - </editCloudRule> - <cloudRules ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CloudRules"> - <rulesList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_CloudRules_rulesList" itemtype="ixConfig"/> - <cloudPhoneBooksAbsolutePath type="str">C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion</cloudPhoneBooksAbsolutePath> - </cloudRules> - <cloudServers ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_VoIP_cloudServers" itemtype="ixConfig"/> - <transferAddress ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TransferAddress"> - <symTransferStr type="str">None</symTransferStr> - <overridePhoneNo type="bool">False</overridePhoneNo> - <_useTPb type="int">0</_useTPb> - <_tBp type="str"><None></_tBp> - <_tBpPrv type="str"></_tBpPrv> - <_tPhone type="str">150[00000000-]</_tPhone> - <tPhoneType type="int">0</tPhoneType> - <tPhone type="str">150[00000000-]</tPhone> - <_tTelGrp type="bool">False</_tTelGrp> - <_ckTTelURIParams type="bool">False</_ckTTelURIParams> - <_tTelURIparams type="str">phone-context=example.com</_tTelURIparams> - <transTelPar type="str"></transTelPar> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_tBpPrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">overridePhoneNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">transTelPar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_useTPb</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_ckTTelURIParams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">symTransferStr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tPhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_tBp</item> - <item ref="3"/> - </item> - </_dict> - </state> - </transferAddress> - <editContact ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_EditContact"> - <useDomainName type="int">0</useDomainName> - <domainName type="str">mysipdomain.ixiacom.com</domainName> - <_useEPb type="int">0</_useEPb> - <_eBp type="str"><None></_eBp> - <_eBpPrv type="str"></_eBpPrv> - <_ePhone type="str">160[00000000-]</_ePhone> - <ePhoneType type="int">0</ePhoneType> - <ePhone type="str">160[00000000-]</ePhone> - <_eTelGrp type="bool">False</_eTelGrp> - <_ckETelURI type="bool">False</_ckETelURI> - <_eTelURIparams type="str">phone-context=example.com</_eTelURIparams> - <editTelPar type="str"></editTelPar> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_useEPb</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_eBpPrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">domainName</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_eBp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_ePhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_eTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_eTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">useDomainName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">editTelPar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_ckETelURI</item> - <item ref="1"/> - </item> - </_dict> - </state> - </editContact> - <dialPlan ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_DialPlan"> - <sourceIPs type="str"></sourceIPs> - <_useSPb type="int">0</_useSPb> - <_sBp type="str"><None></_sBp> - <_sBpPrv type="str"></_sBpPrv> - <_sPhone type="str">{{pnregistering}}</_sPhone> - <srcPhoneType type="int">0</srcPhoneType> - <srcPhone type="str">{{pnregistering}}</srcPhone> - <_sTelGrp type="bool">False</_sTelGrp> - <_ckSTelURIParams type="bool">False</_ckSTelURIParams> - <_sTelURIparams type="str">phone-context=example.com</_sTelURIparams> - <srcTelPar type="str"></srcTelPar> - <_sTelGrp1 type="bool">False</_sTelGrp1> - <_dTelGrp1 type="bool">False</_dTelGrp1> - <symDestStr type="str">None</symDestStr> - <ovrDestPhone type="bool">False</ovrDestPhone> - <_useDPb type="int">0</_useDPb> - <_dBp type="str"><None></_dBp> - <_dBpPrv type="str"></_dBpPrv> - <_dPhone type="str">170[00000000-]</_dPhone> - <destPhoneType type="int">0</destPhoneType> - <destPhone type="str">170[00000000-]</destPhone> - <_dTelGrp type="bool">False</_dTelGrp> - <_ckDTelURIParams type="bool">False</_ckDTelURIParams> - <_dTelURIparams type="str">phone-context=example.com</_dTelURIparams> - <destTelPar type="str"></destTelPar> - <enableEmergencyCalls type="bool">False</enableEmergencyCalls> - <useAnonymous type="bool">False</useAnonymous> - <makeEmergencyReg type="bool">False</makeEmergencyReg> - <emergencyService type="str">sos</emergencyService> - <emergencyServiceList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_DialPlan_emergencyServiceList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">sos</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">sos.ambulance</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">sos.fire</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">sos.police</str> - </item> - </emergencyServiceList> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_useSPb</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dTelGrp1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">sourceIPs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableEmergencyCalls</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_sPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dBpPrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">destPhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">destTelPar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useAnonymous</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">symDestStr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEmergencyDest</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_sBp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">makeEmergencyReg</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">destPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEmergency</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEmergencySource</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_ckSTelURIParams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_dBp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">ovrDestPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_sTelGrp1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">emergencyServiceList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srcPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srcTelPar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_sTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_UseSrv1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srcPhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_sBpPrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_sTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">emergencyService</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_useDPb</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_ckDTelURIParams</item> - <item ref="1"/> - </item> - </_dict> - </state> - </dialPlan> - <signalingSettings ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SignalingSettings"> - <enableSIP type="bool">True</enableSIP> - <port type="str">{{sipportregistering}}</port> - <tcpWriteImmediate type="bool">False</tcpWriteImmediate> - <fqdn type="bool">False</fqdn> - <realm type="str"></realm> - <user type="str">{{pnregistering}}@{{domainname}}</user> - <passwd type="str">{{authpassword}}</passwd> - <akaConfCombo type="str"><None></akaConfCombo> - <akaConfComboSelIndex type="int">0</akaConfComboSelIndex> - <akaSharedSecretType type="int">0</akaSharedSecretType> - <akaOperatorVariantType type="int">0</akaOperatorVariantType> - <akaSharedSecretSequence type="str">ixia</akaSharedSecretSequence> - <akaAbsolutePath type="str">C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion</akaAbsolutePath> - <akaOperatorVariantSequence type="str">ixia</akaOperatorVariantSequence> - <akaSharedSecretSource type="int">0</akaSharedSecretSource> - <akaOperatorVariantSource type="int">0</akaOperatorVariantSource> - <akaExportComplete type="int">0</akaExportComplete> - <akaUseOPasOPC type="bool">False</akaUseOPasOPC> - <milenageConfCombo type="str"><Default></milenageConfCombo> - <milenage_c1 type="str">00000000000000000000000000000000</milenage_c1> - <milenage_c2 type="str">00000000000000000000000000000001</milenage_c2> - <milenage_c3 type="str">00000000000000000000000000000002</milenage_c3> - <milenage_c4 type="str">00000000000000000000000000000004</milenage_c4> - <milenage_c5 type="str">00000000000000000000000000000008</milenage_c5> - <milenage_r1 type="int">64</milenage_r1> - <milenage_r2 type="int">0</milenage_r2> - <milenage_r3 type="int">32</milenage_r3> - <milenage_r4 type="int">64</milenage_r4> - <milenage_r5 type="int">96</milenage_r5> - <enableTos type="bool">False</enableTos> - <tos type="int">0</tos> - <customSipTos type="str">0x00</customSipTos> - <tosVal type="int">0</tosVal> - <ovrTrans type="bool">False</ovrTrans> - <ovrTransOption type="int">0</ovrTransOption> - <useServer type="bool">True</useServer> - <srvAddr type="str">{{iplistims}}</srvAddr> - <srvPort type="str">5060</srvPort> - <srvDomain type="str">{{domainname}}</srvDomain> - <outboundProxy type="bool">False</outboundProxy> - <useDnsSrv type="bool">False</useDnsSrv> - <registrarSrv type="bool">False</registrarSrv> - <autoRegister type="bool">True</autoRegister> - <overrideRegistrar type="bool">False</overrideRegistrar> - <overrideRegistrarAddress type="str">IP:PORT</overrideRegistrarAddress> - <ovrContact type="bool">False</ovrContact> - <ovrDest type="bool">False</ovrDest> - <ovrDestHostPort type="str"></ovrDestHostPort> - <nUdpMaxSize type="int">1024</nUdpMaxSize> - <enableSigComp type="bool">False</enableSigComp> - <telURISource type="bool">False</telURISource> - <telURIDest type="bool">False</telURIDest> - <securityMechanismValList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_SignalingSettings_securityMechanismValList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SecurityMechanismVal"> - <checked type="bool">False</checked> - <mechanism type="str">ipsec-3gpp</mechanism> - <algorithm type="int">0</algorithm> - <algorithmStr type="str">hmac-sha-1-96</algorithmStr> - <protocol type="int">0</protocol> - <protocolStr type="str">esp</protocolStr> - <mode type="int">0</mode> - <modeStr type="str">trans</modeStr> - <encrypt_algorithm type="int">0</encrypt_algorithm> - <encrypt_algorithmStr type="str">aes-cbc</encrypt_algorithmStr> - <spi_start_idx type="int">255</spi_start_idx> - <port_c type="str">[3000-4000]</port_c> - <port_s type="str">4060</port_s> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">protocol</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">encrypt_algorithmStr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">algorithm</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">modeStr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">protocolStr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">mechanism</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">algorithmStr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">mode</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">port_s</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">port_c</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">spi_start_idx</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">encrypt_algorithm</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">checked</item> - <item ref="1"/> - </item> - </_dict> - </state> - </item> - </securityMechanismValList> - <useIPSecDoubleSPIPatch type="bool">False</useIPSecDoubleSPIPatch> - <enablePeriodicDNSQueries type="bool">False</enablePeriodicDNSQueries> - <DNSTimeoutValue type="int">60</DNSTimeoutValue> - <skipDeleteDNSRecordsAtLoopEnd type="bool">False</skipDeleteDNSRecordsAtLoopEnd> - <enableVoLTE type="bool">False</enableVoLTE> - <mediaBearerType type="int">0</mediaBearerType> - <enableCCDedicatedBearer type="bool">True</enableCCDedicatedBearer> - <volte_grbox type="bool">False</volte_grbox> - <_enableAutoHeaders type="bool">False</_enableAutoHeaders> - <_btnAutoHeaders type="bool">False</_btnAutoHeaders> - <dontEndMediaOnBye type="bool">False</dontEndMediaOnBye> - <closeTCPConnectionsOnRampdown type="bool">False</closeTCPConnectionsOnRampdown> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_gbSrvSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaSharedSecretType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">T1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tcpWriteImmediate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">telURISource</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbRetransmissions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableAutoHeaders</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSIP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fqdn</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaSharedSecretSource</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenageConfCombo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c5</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaConfCombo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaOperatorVariantType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">overrideRegistrar</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">port</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r5</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">realm</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srvPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tos</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">user</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaOperatorVariantSource</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrDest</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useServer</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">nUdpMaxSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">retransmit1xx</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srvDomain</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_btnEditContact1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">telURIDest</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enablePeriodicDNSQueries</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useIPSecDoubleSPIPatch</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">securityMechanismValList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableRetransmissions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">overrideRegistrarAddress</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srvAddr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrDestHostPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">DNSTimeoutValue</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tosVal</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">passwd</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaSharedSecretSequence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">T2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">autoRegister</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">skipDeleteDNSRecordsAtLoopEnd</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSigComp</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">akaOperatorVariantSequence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableVoLTE</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">retransmitACK</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_btnAutoHeaders</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">volte_grbox</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">customSipTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dontEndMediaOnBye</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaExportComplete</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">mediaBearerType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">registrarSrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaUseOPasOPC</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_ovrDest1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">outboundProxy</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_UseSrv1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableSIP1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">closeTCPConnectionsOnRampdown</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrContact</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaAbsolutePath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">serverAddresses</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableCCDedicatedBearer</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaConfComboSelIndex</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbCustomTos</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">ovrTrans</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useDnsSrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrTransOption</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_enableSIP2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbPeriodicDNSQuery</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">ignoreRetransmissions</item> - <item ref="1"/> - </item> - </_dict> - </state> - </signalingSettings> - <timerSettings ver="[2, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TimerSettings"> - <enableTimers type="bool">True</enableTimers> - <expirationValList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_TimerSettings_expirationValList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ExpirationVal"> - <checked type="bool">True</checked> - <message type="str">REGISTER</message> - <msgPart type="int">0</msgPart> - <msgPartStr type="str">Expires Header(s)</msgPartStr> - <value type="int">3600</value> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">message</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">msgPartStr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">checked</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">value</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msgPart</item> - <item ref="1"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ExpirationVal"> - <checked type="bool">True</checked> - <message type="str">INVITE</message> - <msgPart type="int">2</msgPart> - <msgPartStr type="str">Session-Expire(s)</msgPartStr> - <value type="int">90</value> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">message</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">msgPartStr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">checked</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">value</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msgPart</item> - <item ref="1"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ExpirationVal"> - <checked type="bool">True</checked> - <message type="str">UPDATE</message> - <msgPart type="int">2</msgPart> - <msgPartStr type="str">Session-Expire(s)</msgPartStr> - <value type="int">90</value> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">message</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">msgPartStr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">checked</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">value</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msgPart</item> - <item ref="1"/> - </item> - </_dict> - </state> - </item> - </expirationValList> - <sessionRefreshType type="int">1</sessionRefreshType> - <refreshAfterSecs type="int">3000</refreshAfterSecs> - <refreshAfterPercent type="int">50</refreshAfterPercent> - <refreshInSecs type="int">32</refreshInSecs> - <enableRetransmissions type="bool">False</enableRetransmissions> - <T1 type="int">500</T1> - <T2 type="int">4000</T2> - <ignoreRetransmissions type="bool">True</ignoreRetransmissions> - <retransmitACK type="bool">True</retransmitACK> - <stopActiveRetr type="bool">True</stopActiveRetr> - <retransmit1xx type="bool">False</retransmit1xx> - <ovrTimeout type="bool">False</ovrTimeout> - <minInterReregister type="int">0</minInterReregister> - <autoEndCall2 type="bool">False</autoEndCall2> - <enableAutoPRACK type="bool">False</enableAutoPRACK> - <rprSendNegotiatedSDP type="bool">False</rprSendNegotiatedSDP> - <rprTimeUntilNextRPR type="int">150</rprTimeUntilNextRPR> - <rprScenarioHasPRACK type="bool">False</rprScenarioHasPRACK> - <auto4xx type="bool">False</auto4xx> - <auto4xxAbort type="bool">False</auto4xxAbort> - <autoProcedureList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_TimerSettings_autoProcedureList" itemtype="ixConfig"/> - <autoProceduresCount type="int">0</autoProceduresCount> - <procListChanged type="bool">True</procListChanged> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">btnRefreshProcList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">autoEndCall</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ignoreRetransmissions</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">minInterReregister</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">autoEndCall2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTimers</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">refreshInSecs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">retransmit1xx</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">auto4xxAbort</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableTimers</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">sessionRefreshType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">auto4xx</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">procListChanged</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">T2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">autoProcedureList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbAutoPRACK</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">T1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">refreshAfterPercent</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableAutoPRACK</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">stopActiveRetr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableRetransmissions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rprTimeUntilNextRPR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rprScenarioHasPRACK</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">expirationValList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">refreshAfterSecs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">autoProceduresCount</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">retransmitACK</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">rprSendNegotiatedSDP</item> - <item ref="1"/> - </item> - </_dict> - </state> - </timerSettings> - <advancedSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AdvancedSettings"> - <useCloud type="bool">False</useCloud> - <_useCloud1 type="bool">False</_useCloud1> - <cloud type="str"><None></cloud> - <serverRules ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AdvancedSettings_serverRules" itemtype="ixConfig"/> - <enableVirtualIPs type="bool">False</enableVirtualIPs> - <virtualIPTable ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AdvancedSettings_virtualIPTable" itemtype="ixConfig"/> - <ovrCloudRules type="bool">False</ovrCloudRules> - <_ovrCloudRules1 type="bool">False</_ovrCloudRules1> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_gbVirtualIPs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">useCloud</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrCloudRules</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_ovrCloudRules1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_useCloud1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableVirtualIPs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">virtualIPTable</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">serverRules</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">cloud</item> - <item ref="3"/> - </item> - </_dict> - </state> - </advancedSettings> - <tlsSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsSettings"> - <enableTLS type="bool">False</enableTLS> - <enableDTLS type="bool">False</enableDTLS> - <enableTLS_MSRP type="bool">False</enableTLS_MSRP> - <enableTLS_HTTP type="bool">False</enableTLS_HTTP> - <_enableTLS1 type="bool">False</_enableTLS1> - <_enableTLS2 type="bool">False</_enableTLS2> - <_enableTLS3 type="bool">False</_enableTLS3> - <tlsPort type="str">5061</tlsPort> - <tlsProtocol type="int">3</tlsProtocol> - <tlsSessionRefresh type="bool">False</tlsSessionRefresh> - <_tlsSessionRefresh type="bool">False</_tlsSessionRefresh> - <tlsRefreshInterval type="int">3600</tlsRefreshInterval> - <tlsAuthClient type="int">0</tlsAuthClient> - <tlsReuseConnection type="bool">False</tlsReuseConnection> - <_tlsReuseConnection type="bool">False</_tlsReuseConnection> - <ignoreSubjectAltName type="bool">False</ignoreSubjectAltName> - <tlsMutual type="bool">False</tlsMutual> - <_gbTlsMutual type="bool">False</_gbTlsMutual> - <tlsCyphers ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_TlsSettings_tlsCyphers" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-ECDSA-AES128-GCM-SHA256</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-ECDSA-AES256-GCM-SHA384</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-RSA-AES128-GCM-SHA256</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-ECDSA-AES256-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-ECDSA-AES128-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-RSA-AES128-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">AES128-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">AES256-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-ECDSA-AES256-SHA384</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-ECDSA-AES128-SHA256</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-RSA-AES256-GCM-SHA384</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-RSA-AES128-SHA256</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-RSA-AES256-SHA384</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">DES-CBC-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">DES-CBC3-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP-DES-CBC-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP-RC2-CBC-MD5</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP-RC4-MD5</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP1024-DES-CBC-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP1024-RC4-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">IDEA-CBC-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">NULL-MD5</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">NULL-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">RC4-MD5</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">RC4-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - </tlsCyphers> - <tlsCertificatesPath type="str">C:\Program Files (x86)\Ixia\IxLoad\8.20-EA\aptixia\data\SSL_Certificates</tlsCertificatesPath> - <tlsPrivateKeyCertificate type="str">Unsecured_RSA_key_1024.pem</tlsPrivateKeyCertificate> - <tlsPublicKeyCertificate type="str">Unsecured_RSA_cert_1024.pem</tlsPublicKeyCertificate> - <tlsKeyType type="int">0</tlsKeyType> - <tlsCertType type="int">0</tlsCertType> - <tlsPassword type="str"></tlsPassword> - <sipScheme type="int">0</sipScheme> - <tlsTransportType type="int">0</tlsTransportType> - <tlsDisableUdpAndTcp type="bool">True</tlsDisableUdpAndTcp> - <tlsEnableTcpKeepAlive type="bool">False</tlsEnableTcpKeepAlive> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">tlsCertType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsPassword</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsMutual</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsPrivateKeyCertificate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsTransportType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTLS_HTTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsCyphers</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsProtocol</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsKeyType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tlsSessionRefresh</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tlsCertificatesPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsEnableTcpKeepAlive</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTlsMutual</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tlsPublicKeyCertificate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableCert</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableTLS</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsAuthClient</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ignoreSubjectAltName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableTLS4</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_enableTLS1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_enableTLS2</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_enableTLS3</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableDTLS</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTLS_MSRP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsReuseConnection</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsRefreshInterval</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsSessionRefresh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsDisableUdpAndTcp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">sipScheme</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tlsReuseConnection</item> - <item ref="3"/> - </item> - </_dict> - </state> - </tlsSettings> - <dtlsOptions ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_DtlsOptions"> - <dtlsRetry type="int">200</dtlsRetry> - <dtlsTimeout type="int">30000</dtlsTimeout> - <dtlsSessionTicket type="bool">False</dtlsSessionTicket> - </dtlsOptions> - <iceOptions ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_IceOptions"> - <iceRetryCount type="int">6</iceRetryCount> - <iceInitialRetry type="int">100</iceInitialRetry> - <iceTimeout type="int">30000</iceTimeout> - </iceOptions> - <otherSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_OtherSettings"> - <VOIP_Var0 type="str"></VOIP_Var0> - <VOIP_Var1 type="str"></VOIP_Var1> - <VOIP_Var2 type="str"></VOIP_Var2> - <VOIP_Var3 type="str"></VOIP_Var3> - <VOIP_Var4 type="str"></VOIP_Var4> - <VOIP_IPAddress0 type="str"></VOIP_IPAddress0> - <VOIP_IPAddress1 type="str"></VOIP_IPAddress1> - <VOIP_IPAddress2 type="str"></VOIP_IPAddress2> - <VOIP_IPAddress3 type="str"></VOIP_IPAddress3> - <VOIP_IPAddress4 type="str"></VOIP_IPAddress4> - <ipPreference type="int">0</ipPreference> - <bUseHardcoded type="bool">False</bUseHardcoded> - <_gbHardcodedForDemo type="bool">False</_gbHardcodedForDemo> - <_gbStunSettings type="bool">False</_gbStunSettings> - <bUseStun type="bool">False</bUseStun> - <stunAddr type="str">127.0.0.1</stunAddr> - <stunPort type="str">3478</stunPort> - <bUseIce type="bool">False</bUseIce> - <bIceLite type="bool">False</bIceLite> - <_gbSRVCCSettings type="bool">False</_gbSRVCCSettings> - <bUseSRVCC type="bool">False</bUseSRVCC> - <mobilityPath type="str"></mobilityPath> - <ddgGroupboxSRVCC type="bool">False</ddgGroupboxSRVCC> - <PCO_Groupbox type="bool">False</PCO_Groupbox> - <bUsePCO type="bool">False</bUsePCO> - <_gbPCO type="bool">False</_gbPCO> - <PCO_List type="str"></PCO_List> - <useBHCA type="bool">False</useBHCA> - <loadVariablesFromCsv type="bool">False</loadVariablesFromCsv> - <pathForCsvWithVariables type="str"></pathForCsvWithVariables> - <absolutePathForCsvWithVariables type="str"></absolutePathForCsvWithVariables> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_gbIceSettings</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbPCO</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbStunSettings</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress0</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bUseIce</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">mobilityPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var0</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">PCO_List</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbSRVCCSettings</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">absolutePathForCsvWithVariables</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">PCO_Groupbox</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">bUseHardcoded</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">bUseSRVCC</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useBHCA</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ipPreference</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnBrowseForVariableCsv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bUsePCO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">stunPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bUseStun</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">stunAddr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ddgGroupboxSRVCC</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">_gbHardcodedForDemo</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">pathForCsvWithVariables</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">DodPathForCsvWithVariables</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_varCsvGroupBox</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loadVariablesFromCsv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bIceLite</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var4</item> - <item ref="1"/> - </item> - </_dict> - </state> - </otherSettings> - <smsSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSSettings"> - <enableSMS type="bool">False</enableSMS> - <requestURI type="str">sc.home1.net</requestURI> - <enableTelURI type="bool">False</enableTelURI> - <telURI type="str">phone-context=example</telURI> - <smscPhoneNo type="str">61814712345</smscPhoneNo> - <smscTypeOfNo type="int">0</smscTypeOfNo> - <smscNumberingPlan type="int">0</smscNumberingPlan> - <enableSMOrigOverrideDest type="bool">False</enableSMOrigOverrideDest> - <btnSMOrigEdit type="bool">False</btnSMOrigEdit> - <enableSMOrigReqStatusReport type="bool">False</enableSMOrigReqStatusReport> - <enableSMOrigReplyPath type="bool">False</enableSMOrigReplyPath> - <smsAddressOriginator ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSAddressInfo"> - <phoneType type="bool">False</phoneType> - <phoneValue type="str">160[00000000-]</phoneValue> - <comboPhoneBookEntry type="str"><None></comboPhoneBookEntry> - </smsAddressOriginator> - <smOrigTypeOfNo type="int">0</smOrigTypeOfNo> - <smOrigNumberingPlan type="int">0</smOrigNumberingPlan> - <enableSMRecipOverrideSrc type="bool">False</enableSMRecipOverrideSrc> - <btnSMRecipEdit type="bool">False</btnSMRecipEdit> - <enableSMRecipReqStatusReport type="bool">False</enableSMRecipReqStatusReport> - <enableSMRecipReplyPath type="bool">False</enableSMRecipReplyPath> - <smsAddressRecipient ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSAddressInfo"> - <phoneType type="bool">False</phoneType> - <phoneValue type="str">160[00000000-]</phoneValue> - <comboPhoneBookEntry type="str"><None></comboPhoneBookEntry> - </smsAddressRecipient> - <smRecipTypeOfNo type="int">0</smRecipTypeOfNo> - <smRecipNumberingPlan type="int">0</smRecipNumberingPlan> - <depActivities ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_SMSSettings_depActivities" itemtype="ixConfig"/> - <useFilesFromActivity type="bool">False</useFilesFromActivity> - <verifyUserInfo type="bool">False</verifyUserInfo> - <smsImportFilesActivity type="str">None</smsImportFilesActivity> - <smsActivityForFiles type="int">0</smsActivityForFiles> - <pcpuCommonPath type="str"></pcpuCommonPath> - <smsFiles ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_SMSSettings_smsFiles" itemtype="ixConfig"/> - <smsFilesCount type="int">0</smsFilesCount> - <grBoxSMServiceCenter type="bool">False</grBoxSMServiceCenter> - <grBoxSMOriginator type="bool">False</grBoxSMOriginator> - <grBoxSMRecipient type="bool">False</grBoxSMRecipient> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">smOrigNumberingPlan</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsFiles</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableSMS</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSMOrigReplyPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsFilesCount</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnSMRecipEdit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">grBoxSMOriginator</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">grBoxSMRecipient</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableSMRecipOverrideSrc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSMOrigReqStatusReport</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsAddressOriginator</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">telURI</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">depActivities</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">pcpuCommonPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smOrigTypeOfNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smRecipTypeOfNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">requestURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsFilesBackup</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsAddressRecipient</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useFilesFromActivity</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">smRecipNumberingPlan</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smscPhoneNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsImportFilesActivity</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableSMRecipReplyPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnSMOrigEdit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">smscNumberingPlan</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">duringLoadFromBackup</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSMRecipReqStatusReport</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">grBoxSMServiceCenter</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">verifyUserInfo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">smscTypeOfNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSMOrigOverrideDest</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsActivityForFiles</item> - <item ref="1"/> - </item> - </_dict> - </state> - </smsSettings> - <smsFilesAdd ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSFilesAdd"> - <loadedFileType type="int">0</loadedFileType> - <fileName type="str"></fileName> - <ixSmsFileName type="str"></ixSmsFileName> - <ixSmsFilePath type="str"></ixSmsFilePath> - <segmentOrder type="str"></segmentOrder> - <totalTpudSize type="str"></totalTpudSize> - <segmentNo type="str">0</segmentNo> - <comboCoding type="int">0</comboCoding> - <comboRefNo type="int">0</comboRefNo> - <contentViewEdit type="str"></contentViewEdit> - <contentViewShow type="str"></contentViewShow> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">segmentNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">contentViewShow</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">ixSmsFilePath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">contentViewEdit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">comboCoding</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">segmentOrder</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">comboRefNo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">loadedFileType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnSmsLoadFiles</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ixSmsFileName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnSmsSaveAs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fileName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">totalTpudSize</item> - <item ref="1"/> - </item> - </_dict> - </state> - </smsFilesAdd> - <smsAddressOriginator ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSAddress"> - <radioBtnPhoneNo type="int">0</radioBtnPhoneNo> - <comboPhoneBook type="str"><None></comboPhoneBook> - <phoneBookPreview type="str"></phoneBookPreview> - <userPattern type="str">160[00000000-]</userPattern> - <ePhoneType type="int">0</ePhoneType> - <ePhone type="str">160[00000000-]</ePhone> - <fakeEnableTelURI type="bool">False</fakeEnableTelURI> - <fakeTelURI type="str"></fakeTelURI> - <fakeTelToPort type="str"></fakeTelToPort> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">userPattern</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">phoneBookPreview</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeEnableTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeTelToPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">comboPhoneBook</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">ePhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">radioBtnPhoneNo</item> - <item ref="1"/> - </item> - </_dict> - </state> - </smsAddressOriginator> - <smsAddressRecipient ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSAddress"> - <radioBtnPhoneNo type="int">0</radioBtnPhoneNo> - <comboPhoneBook type="str"><None></comboPhoneBook> - <phoneBookPreview type="str"></phoneBookPreview> - <userPattern type="str">160[00000000-]</userPattern> - <ePhoneType type="int">0</ePhoneType> - <ePhone type="str">160[00000000-]</ePhone> - <fakeEnableTelURI type="bool">False</fakeEnableTelURI> - <fakeTelURI type="str"></fakeTelURI> - <fakeTelToPort type="str"></fakeTelToPort> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">userPattern</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">phoneBookPreview</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeEnableTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeTelToPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">comboPhoneBook</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">ePhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">radioBtnPhoneNo</item> - <item ref="1"/> - </item> - </_dict> - </state> - </smsAddressRecipient> - <compatibility ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Compatibility"> - <hasRtpChMapRules type="bool">True</hasRtpChMapRules> - </compatibility> - <editAutoHeaderRule ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_EditAutoHeaderRule"> - <defaultMessagesList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditAutoHeaderRule_defaultMessagesList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">INVITE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">ACK</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">BYE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">CANCEL</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">OPTIONS</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">REGISTER</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">NOTIFY</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">SUBSCRIBE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">REFER</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">MESSAGE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">PRACK</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">INFO</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">UPDATE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">100 (Trying)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">180 (Ringing)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">181 (Call Is Being Forwarded)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">182 (Queued)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">183 (Session Progress)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">200 (OK)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">202 (Accepted)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">300 (Multiple Choices)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">301 (Moved Permanently)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">302 (Moved Temporarily)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">305 (Use Proxy)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">380 (Alternative Service)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">400 (Bad Request)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">401 (Unauthorized)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">402 (Payment Required)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">403 (Forbidden)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">404 (Not Found)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">405 (Method Not Allowed)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">406 (Not Acceptable)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">407 (Proxy Authentication Required)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">408 (Request Timeout)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">410 (Gone)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">413 (Request Entity Too Large)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">414 (Request-URI Too Large)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">415 (Unsupported Media Type)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">416 (Unsupported URI Scheme)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">420 (Bad Extension)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">421 (Extension Required)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">423 (Interval Too Brief)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">480 (Temporarily not available)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">481 (Call Leg/Transaction Does Not Exist)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">482 (Loop Detected)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">483 (Too Many Hops)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">484 (Address Incomplete)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">485 (Ambiguous)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">486 (Busy Here)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">487 (Request Terminated)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">488 (Not Acceptable Here)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">491 (Request Pending)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">493 (Undecipherable)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">500 (Internal Server Error)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">501 (Not Implemented)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">502 (Bad Gateway)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">503 (Service Unavailable)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">504 (Server Time-out)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">505 (SIP Version not supported)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">513 (Message Too Large)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">600 (Busy Everywhere)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">603 (Decline)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">604 (Does not exist anywhere)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">606 (Not Acceptable)</str> - </item> - </defaultMessagesList> - <messagesList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditAutoHeaderRule_messagesList" itemtype="ixConfig"/> - <autoHeaderTypeList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditAutoHeaderRule_autoHeaderTypeList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Request-Uri</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Via</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">From</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">To</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Call-ID</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">CSeq</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Contact</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Content-Length</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Route</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Record-Route</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Authorization</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Proxy-Authorization</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Referred-By</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Replaces</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Event</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">RAck</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">RSeq</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Refer-To</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Subscription-State</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">WWW-Authenticate</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Also</str> - </item> - </autoHeaderTypeList> - <autoHeaderType type="str">To</autoHeaderType> - <option type="int">0</option> - <appendToUri type="bool">False</appendToUri> - <headerValue type="str"></headerValue> - <parsedHeader ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditAutoHeaderRule_parsedHeader" itemtype="ixConfig"/> - <valid type="bool">True</valid> - </editAutoHeaderRule> - <autoHeadersSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AutoHeadersSettings"> - <enableAutoHeaders type="bool">False</enableAutoHeaders> - <tableRules ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AutoHeadersSettings_tableRules" itemtype="ixConfig"/> - <reqAutoHeadRules ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AutoHeadersSettings_reqAutoHeadRules" itemtype="ixConfig"/> - <respAutoHeadRules ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AutoHeadersSettings_respAutoHeadRules" itemtype="ixConfig"/> - </autoHeadersSettings> - <sipAdvSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SipAdvancedSettings"> - <overrideTCPLocalPort type="bool">False</overrideTCPLocalPort> - <tcpLocalPortStart type="int">40000</tcpLocalPortStart> - <tcpLocalPortEnd type="int">60000</tcpLocalPortEnd> - <tcpLocalPortStep type="int">1</tcpLocalPortStep> - <closeNonsecureTcpConnectionsEnable type="bool">False</closeNonsecureTcpConnectionsEnable> - <closeIdleTcpConnectionsEnable type="bool">False</closeIdleTcpConnectionsEnable> - <tcpIdlePeriod type="int">10</tcpIdlePeriod> - <donotCloseTCPInsideCallEnable type="bool">False</donotCloseTCPInsideCallEnable> - <recordingServerEnable type="bool">False</recordingServerEnable> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">tcpIdlePeriod</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tcpEndPortLabel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpIdlePeriodLabel</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">donotCloseTCPInsideCallEnable</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tcpPortStepLabel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpLocalPortStep</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpLocalPortEnd</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpStartPortLabel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpLocalPortStart</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">closeIdleTcpConnectionsEnable</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">recordingServerEnable</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">overrideTCPLocalPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">closeNonsecureTcpConnectionsEnable</item> - <item ref="1"/> - </item> - </_dict> - </state> - </sipAdvSettings> - </pm> - <objectID type="int">2</objectID> - <_apiUniqueId type="int">15470</_apiUniqueId> - <uniqueID type="int">27</uniqueID> - <commandIdCounter type="int">11</commandIdCounter> - <networkPluginSettings ver="[0]" type="ixNetworkActivityPluginSupport"> - <serializedNetworkSettingsMap ver="[0, [0, [0]]]" type="ixOrderedDict"> - <_dict type="list"/> - </serializedNetworkSettingsMap> - <protocolName type="str">VoIP</protocolName> - </networkPluginSettings> - </item> - <item ver="[34, [1, [0, [6, [1, [0, [0]]]], [0, [0]]], [0]]]" oid="19" type="#VoIP_Peer_plugin$Plugin"> - <enable type="bool">True</enable> - <name type="str">CALLING</name> - <activityFunction type="NoneType">None</activityFunction> - <needToRefreshStatViews type="bool">False</needToRefreshStatViews> - <activeRole type="str">Both</activeRole> - <cmdListLoops type="int">0</cmdListLoops> - <sources ver="[0, [3, [0, [0, [0], [0]], [0]]]]" type="ixSourceList" itemtype="ixSource"/> - <destinations ver="[1, [3, [0, [0, [0], [0]], [0]]]]" type="ixDestinationList" itemtype="ixDestination"> - <item ver="[0, [3, [1, [0, [0]]]]]" type="ixAgentDestination"> - <name type="str">VoIP2_CALLED</name> - <portMapPolicy type="str">protocolSpecific</portMapPolicy> - <sameAs type="str"></sameAs> - <validPortMapPolicies type="list"> - <item type="str">protocolSpecific</item> - </validPortMapPolicies> - <inUse type="bool">True</inUse> - <customPortMap type="NoneType">None</customPortMap> - <sourceCommunity ref="5"/> - <destinationCommunity ver="[1, [23, [0, [1, [0, [0]]]]]]" oid="23" type="ixNetTraffic"> - <name type="str">VoIP2@VM2</name> - <column type="NoneType">None</column> - <scenarioElementType type="str">netTraffic</scenarioElementType> - <enable type="bool">True</enable> - <role type="str">Peer</role> - <networkType type="str">ethernet</networkType> - <activityFunction type="str">ipTrafficAgent</activityFunction> - <activeRole type="str">Both</activeRole> - <networkActivityList ver="[0, [0, [0, [3, [0, [0, [0], [0]], [0]]]]]]" type="ixNetworkActivityList" itemtype="ixNetworkActivity"/> - <activityGroupList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixActivityGroupList" itemtype="ixActivityGroup"/> - <traffic ver="[6, [1, [0, [0]]]]" type="ixActivityModel"> - <resourceSyncTimeStamp type="NoneType">None</resourceSyncTimeStamp> - <name type="str">VoIP2</name> - <role type="str">Peer</role> - <activityFunction type="str">ipTrafficAgent</activityFunction> - <payload type="NoneType">None</payload> - <agentList ver="[2, [0, [0, [3, [0, [0, [0], [0]], [0]]]]]]" type="_agentListSequenceContainer" itemtype="ixAgent"> - <item ver="[34, [1, [0, [6, [1, [0, [0]]]], [0, [0]]], [0]]]" oid="10" type="#VoIP_Peer_plugin$Plugin"> - <enable type="int">1</enable> - <name type="str">CALLED</name> - <activityFunction type="NoneType">None</activityFunction> - <needToRefreshStatViews type="bool">False</needToRefreshStatViews> - <activeRole type="str">Both</activeRole> - <cmdListLoops type="int">0</cmdListLoops> - <sources ver="[0, [3, [0, [0, [0], [0]], [0]]]]" type="ixSourceList" itemtype="ixSource"/> - <destinations ver="[1, [3, [0, [0, [0], [0]], [0]]]]" type="ixDestinationList" itemtype="ixDestination"/> - <flowPercentage type="float">100.0</flowPercentage> - <uniqueID type="int">43</uniqueID> - <pm ver="[0, [1, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyMap_VoIP"> - <szPluginVersion type="str">4.10</szPluginVersion> - <ceCommands ver="[1, [0, [0, [3, [0, [0, [0], [0]], [0]]]], [0, [0, [3, [0, [0, [0], [0]], [0]]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_VoIP_ceCommands" itemtype="ixConfig"> - <item ver="[0, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]], [0, [0, [0, [0, [1, [0, [0]]]]]]]]" type="#Pdk.ixPdkCommands$ixPropertyCommandStart"> - <commandId type="int">-2</commandId> - <commandType type="str">START</commandType> - <cmdName type="str">Start</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">Output1</name> - <outputType type="int">0</outputType> - <destCmdId type="int">3</destCmdId> - <objectID type="int">0</objectID> - <destinationCommandIdx type="int">2</destinationCommandIdx> - </item> - </outputList> - </item> - <item ver="[0, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]], [0, [0, [0, [0, [1, [0, [0]]]]]]]]" type="#Pdk.ixPdkCommands$ixPropertyCommandStop"> - <commandId type="int">-3</commandId> - <commandType type="str">STOP</commandType> - <cmdName type="str">Stop</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"/> - </item> - <item ver="[0, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Procedure"> - <commandId type="int">3</commandId> - <commandType type="str">Procedure</commandType> - <cmdName type="str">SIP ReceiveCall (#3)</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">OK</name> - <outputType type="int">0</outputType> - <destCmdId type="int">17</destCmdId> - <objectID type="int">1</objectID> - <destinationCommandIdx type="int">4</destinationCommandIdx> - </item> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">Error</name> - <outputType type="int">1</outputType> - <destCmdId type="int">-3</destCmdId> - <objectID type="int">2</objectID> - <destinationCommandIdx type="int">1</destinationCommandIdx> - </item> - </outputList> - </item> - <item ver="[0, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Procedure"> - <commandId type="int">11</commandId> - <commandType type="str">Procedure</commandType> - <cmdName type="str">SIP EndCall Receive (#4)</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">OK</name> - <outputType type="int">0</outputType> - <destCmdId type="int">-3</destCmdId> - <objectID type="int">1</objectID> - <destinationCommandIdx type="int">1</destinationCommandIdx> - </item> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">Error</name> - <outputType type="int">1</outputType> - <destCmdId type="int">-3</destCmdId> - <objectID type="int">2</objectID> - <destinationCommandIdx type="int">1</destinationCommandIdx> - </item> - </outputList> - </item> - <item ver="[0, [1, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CommandEx"> - <commandId type="int">17</commandId> - <commandType type="str">CommandEx</commandType> - <cmdName type="str">Voice Session (#2)</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">OK</name> - <outputType type="int">0</outputType> - <destCmdId type="int">11</destCmdId> - <objectID type="int">1</objectID> - <destinationCommandIdx type="int">3</destinationCommandIdx> - </item> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">Error</name> - <outputType type="int">1</outputType> - <destCmdId type="int">11</destCmdId> - <objectID type="int">2</objectID> - <destinationCommandIdx type="int">3</destinationCommandIdx> - </item> - </outputList> - <cmdType type="str">RTPVoiceSession</cmdType> - </item> - </ceCommands> - <activityLink ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ActivityLinkInfo"> - <name type="str">VoiceLink1</name> - <activitiesCount type="int">2</activitiesCount> - </activityLink> - <triggers ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TriggerConfig"> - <triggersInCount type="int">3</triggersInCount> - <triggersOutCount type="int">5</triggersOutCount> - </triggers> - <globalSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalSettings"> - <globalExecStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalExecSettings"> - <setAborted type="bool">False</setAborted> - <setAllFailed type="bool">False</setAllFailed> - <trigTimeout type="int">600000</trigTimeout> - <notAbortOnTimeout type="bool">False</notAbortOnTimeout> - <limitErrors type="bool">False</limitErrors> - <maxErrors type="int">1</maxErrors> - <limitArrayVarSize type="bool">False</limitArrayVarSize> - <maxArrayVarSize type="int">10</maxArrayVarSize> - </globalExecStg> - <globalSIPStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalSIPSettings"> - <disableTCP type="bool">False</disableTCP> - <prefQOP type="int">0</prefQOP> - <warnAsError type="bool">False</warnAsError> - <limitQueueSize type="bool">True</limitQueueSize> - <maxChannelsInQueue type="int">25</maxChannelsInQueue> - <enableSIPLogging type="bool">False</enableSIPLogging> - <limitSIPLoggingChannels type="bool">False</limitSIPLoggingChannels> - <maxSIPLoggingChannels type="int">10</maxSIPLoggingChannels> - <minSIPLoggingChannels type="int">0</minSIPLoggingChannels> - <voipPeerLogSettings type="int">0</voipPeerLogSettings> - <voipPeerLogExpForChannels type="str"></voipPeerLogExpForChannels> - <abortLoopOnTriggerTimeout type="bool">False</abortLoopOnTriggerTimeout> - </globalSIPStg> - <globalRTPStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalRTPSettings"> - <transmMode type="int">0</transmMode> - <playMode type="int">0</playMode> - <repeatCount type="int">1</repeatCount> - <repeatTime type="int">1000</repeatTime> - <timeUnit type="int">0</timeUnit> - <volume type="int">-20</volume> - <playModePathConf type="int">0</playModePathConf> - <repeatCountPathConf type="int">0</repeatCountPathConf> - <repeatTimePathConf type="int">10</repeatTimePathConf> - <timeUnitPathConf type="int">0</timeUnitPathConf> - <toneDurationPathConf type="int">200</toneDurationPathConf> - <interToneDelayPathConf type="int">200</interToneDelayPathConf> - <toneAmplitudePathConf type="int">-10</toneAmplitudePathConf> - <firstToneTimeoutPathConf type="int">4000</firstToneTimeoutPathConf> - <interToneTimeoutPathConf type="int">2000</interToneTimeoutPathConf> - <qovTalkExtraSilence type="int">500</qovTalkExtraSilence> - <qovListenExtraDuration type="int">2000</qovListenExtraDuration> - <downloadRTPCSV type="bool">True</downloadRTPCSV> - <waitQoVScore type="bool">False</waitQoVScore> - </globalRTPStg> - <globalSTUNStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalSTUNSettings"> - <keepAliveInterval type="int">15</keepAliveInterval> - </globalSTUNStg> - <globalSKINNYStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalSKINNYSettings"> - <softKeyCount type="int">25</softKeyCount> - <receiveVideo type="bool">False</receiveVideo> - <transmitVideo type="bool">False</transmitVideo> - </globalSKINNYStg> - <globalT38Stg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalT38Settings"> - <t30Log type="bool">False</t30Log> - <t38Log type="bool">False</t38Log> - <receivedImageLog type="bool">False</receivedImageLog> - <logType type="int">0</logType> - <logBegin type="int">1</logBegin> - <logEnd type="int">10</logEnd> - <channelRange type="str">[00-10]</channelRange> - </globalT38Stg> - </globalSettings> - <info ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Info"> - <userChannelsNo type="int">653520</userChannelsNo> - <portInstances type="int">3</portInstances> - <portInstanceIdx type="int">2</portInstanceIdx> - <objectiveType type="str">activeUsers</objectiveType> - <objectiveValue type="int">1000</objectiveValue> - <maxAllowedObjective type="long">9223372036854775807</maxAllowedObjective> - <firstSignalingFnID type="int">8</firstSignalingFnID> - <enableRTPDest type="bool">False</enableRTPDest> - <rtpPortDest type="str"></rtpPortDest> - <rtpObjectiveValue type="int">32000</rtpObjectiveValue> - <hasRtpFunction type="bool">False</hasRtpFunction> - <hasVideoFunction type="bool">False</hasVideoFunction> - <hasT38Function type="bool">False</hasT38Function> - <hasMSRPFunction type="bool">False</hasMSRPFunction> - <src ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ActivityInfo"> - <name type="str">CALLED</name> - <portCount type="int">1</portCount> - <portCountRtp type="int">1</portCountRtp> - <portCountT38 type="int">1</portCountT38> - <portCountMSRP type="int">1</portCountMSRP> - <ipRangeCount type="int">1</ipRangeCount> - <ipCount type="int">1</ipCount> - <ipRule type="int">0</ipRule> - <ipRuleCh type="int">1</ipRuleCh> - <port type="str">{{sipportcalled}}</port> - <portRule type="int">0</portRule> - <portRuleCh type="int">1</portRuleCh> - <phone type="str">{{pncalled}}</phone> - <aliases type="int">1</aliases> - <phoneType type="int">0</phoneType> - <phoneRule type="int">1</phoneRule> - <phoneCount type="int">0</phoneCount> - <telPar type="str"></telPar> - <ipRangeCountRtp type="int">1</ipRangeCountRtp> - <ipCountRtp type="int">1</ipCountRtp> - <ipRuleRtp type="int">0</ipRuleRtp> - <ipRuleChRtp type="int">1</ipRuleChRtp> - <portRtp type="str">[10000-65535,4]</portRtp> - <portT38 type="str">40000</portT38> - <portMSRP type="str">2855</portMSRP> - <portRuleRtp type="int">1</portRuleRtp> - <portRuleChRtp type="int">1</portRuleChRtp> - <ipRangeCountT38 type="int">1</ipRangeCountT38> - <ipCountT38 type="int">1</ipCountT38> - <ipRangeCountMSRP type="int">1</ipRangeCountMSRP> - <ipCountMSRP type="int">1</ipCountMSRP> - <symType type="int">1</symType> - <enableTLS type="bool">False</enableTLS> - <enableDTLS type="bool">False</enableDTLS> - <enableTLS_MSRP type="bool">False</enableTLS_MSRP> - <enableTLS_HTTP type="bool">False</enableTLS_HTTP> - <tlsPort type="str">5061</tlsPort> - <tlsDisableUdpAndTcp type="bool">True</tlsDisableUdpAndTcp> - <nodeCount type="int">1</nodeCount> - <coreCount type="int">2</coreCount> - <nicCount type="int">1</nicCount> - <gtpEnabled type="bool">False</gtpEnabled> - <dcpEnabled type="bool">False</dcpEnabled> - <rangeType type="int">0</rangeType> - <calActivityID type="int">0</calActivityID> - <layerName type="str">aptixia-T.03440c56.4e1a.4def.8406.ec64db91d4c1-L2EthernetPlugin-820b0582.6a4c.4109.bd5d.587621a43ce2-161.105.231.12;2;1default</layerName> - </src> - <dest ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ActivityInfo"> - <name type="str"></name> - <portCount type="int">1</portCount> - <portCountRtp type="int">1</portCountRtp> - <portCountT38 type="int">1</portCountT38> - <portCountMSRP type="int">1</portCountMSRP> - <ipRangeCount type="int">0</ipRangeCount> - <ipCount type="int">0</ipCount> - <ipRule type="int">0</ipRule> - <ipRuleCh type="int">0</ipRuleCh> - <port type="str"></port> - <portRule type="int">0</portRule> - <portRuleCh type="int">0</portRuleCh> - <phone type="str"></phone> - <aliases type="int">1</aliases> - <phoneType type="int">0</phoneType> - <phoneRule type="int">0</phoneRule> - <phoneCount type="int">0</phoneCount> - <telPar type="str"></telPar> - <ipRangeCountRtp type="int">0</ipRangeCountRtp> - <ipCountRtp type="int">0</ipCountRtp> - <ipRuleRtp type="int">0</ipRuleRtp> - <ipRuleChRtp type="int">0</ipRuleChRtp> - <portRtp type="str"></portRtp> - <portT38 type="str"></portT38> - <portMSRP type="str">2855</portMSRP> - <portRuleRtp type="int">0</portRuleRtp> - <portRuleChRtp type="int">0</portRuleChRtp> - <ipRangeCountT38 type="int">0</ipRangeCountT38> - <ipCountT38 type="int">0</ipCountT38> - <ipRangeCountMSRP type="int">1</ipRangeCountMSRP> - <ipCountMSRP type="int">12</ipCountMSRP> - <symType type="int">0</symType> - <enableTLS type="bool">False</enableTLS> - <enableDTLS type="bool">False</enableDTLS> - <enableTLS_MSRP type="bool">False</enableTLS_MSRP> - <enableTLS_HTTP type="bool">False</enableTLS_HTTP> - <tlsPort type="str"></tlsPort> - <tlsDisableUdpAndTcp type="bool">False</tlsDisableUdpAndTcp> - <nodeCount type="int">1</nodeCount> - <coreCount type="int">2</coreCount> - <nicCount type="int">1</nicCount> - <gtpEnabled type="bool">False</gtpEnabled> - <dcpEnabled type="bool">False</dcpEnabled> - <rangeType type="int">0</rangeType> - <calActivityID type="int">0</calActivityID> - <layerName type="str"></layerName> - </dest> - <useServerDest type="bool">False</useServerDest> - <srvDomainDest type="str"></srvDomainDest> - <srvAddrDest type="str"></srvAddrDest> - <srvPortDest type="str">5060</srvPortDest> - <cloudServerDest ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CloudServer"> - <name type="str"></name> - <ipAddr type="str"></ipAddr> - <rangeType type="str"></rangeType> - <ipType type="str"></ipType> - <port type="int">0</port> - <attachedInfo type="str"></attachedInfo> - <firstIp type="str"></firstIp> - <netMask type="str"></netMask> - <ipCount type="str"></ipCount> - <ipStep type="str"></ipStep> - </cloudServerDest> - <transfer ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ActivityInfo"> - <name type="str"></name> - <portCount type="int">0</portCount> - <portCountRtp type="int">0</portCountRtp> - <portCountT38 type="int">0</portCountT38> - <portCountMSRP type="int">0</portCountMSRP> - <ipRangeCount type="int">0</ipRangeCount> - <ipCount type="int">0</ipCount> - <ipRule type="int">0</ipRule> - <ipRuleCh type="int">0</ipRuleCh> - <port type="str"></port> - <portRule type="int">0</portRule> - <portRuleCh type="int">0</portRuleCh> - <phone type="str"></phone> - <aliases type="int">0</aliases> - <phoneType type="int">0</phoneType> - <phoneRule type="int">0</phoneRule> - <phoneCount type="int">0</phoneCount> - <telPar type="str"></telPar> - <ipRangeCountRtp type="int">0</ipRangeCountRtp> - <ipCountRtp type="int">0</ipCountRtp> - <ipRuleRtp type="int">0</ipRuleRtp> - <ipRuleChRtp type="int">0</ipRuleChRtp> - <portRtp type="str"></portRtp> - <portT38 type="str"></portT38> - <portMSRP type="str"></portMSRP> - <portRuleRtp type="int">0</portRuleRtp> - <portRuleChRtp type="int">0</portRuleChRtp> - <ipRangeCountT38 type="int">0</ipRangeCountT38> - <ipCountT38 type="int">0</ipCountT38> - <ipRangeCountMSRP type="int">0</ipRangeCountMSRP> - <ipCountMSRP type="int">0</ipCountMSRP> - <symType type="int">0</symType> - <enableTLS type="bool">False</enableTLS> - <enableDTLS type="bool">False</enableDTLS> - <enableTLS_MSRP type="bool">False</enableTLS_MSRP> - <enableTLS_HTTP type="bool">False</enableTLS_HTTP> - <tlsPort type="str"></tlsPort> - <tlsDisableUdpAndTcp type="bool">False</tlsDisableUdpAndTcp> - <nodeCount type="int">0</nodeCount> - <coreCount type="int">1</coreCount> - <nicCount type="int">1</nicCount> - <gtpEnabled type="bool">False</gtpEnabled> - <dcpEnabled type="bool">False</dcpEnabled> - <rangeType type="int">0</rangeType> - <calActivityID type="int">0</calActivityID> - <layerName type="str"></layerName> - </transfer> - <useServerTransfer type="bool">False</useServerTransfer> - <registrarSrvTransfer type="bool">False</registrarSrvTransfer> - <srvAddrTransfer type="str"></srvAddrTransfer> - <srvPortTransfer type="str">5060</srvPortTransfer> - <cloudServerTransfer ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CloudServer"> - <name type="str"></name> - <ipAddr type="str"></ipAddr> - <rangeType type="str"></rangeType> - <ipType type="str"></ipType> - <port type="int">0</port> - <attachedInfo type="str"></attachedInfo> - <firstIp type="str"></firstIp> - <netMask type="str"></netMask> - <ipCount type="str"></ipCount> - <ipStep type="str"></ipStep> - </cloudServerTransfer> - </info> - <scenarioSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ScenarioSettings"> - <scenarioFile type="str">.\SIPCall.tst</scenarioFile> - <activeScenarioChannel type="int">1</activeScenarioChannel> - <funcsCount type="int">18</funcsCount> - <isModified type="int">66</isModified> - <activityID type="int">8</activityID> - <exportToRM type="int">0</exportToRM> - </scenarioSettings> - <executionSettings ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ExecutionSettings"> - <loopMode type="int">0</loopMode> - <loopCount type="int">1</loopCount> - <loopPreDelay type="int">0</loopPreDelay> - <loopMidDelay type="int">0</loopMidDelay> - <gracefulRampDown type="bool">True</gracefulRampDown> - <rampdownSleep type="bool">False</rampdownSleep> - <aliases type="int">1</aliases> - <ipRule type="int">0</ipRule> - <ipRuleCh type="int">1</ipRuleCh> - <portRule type="int">0</portRule> - <portRuleCh type="int">1</portRuleCh> - <phoneRule type="int">1</phoneRule> - <multipleUsersPerIO type="bool">True</multipleUsersPerIO> - <rtpIpRule type="int">0</rtpIpRule> - <rtpIpRuleCh type="int">1</rtpIpRuleCh> - <rtpPortRule type="int">1</rtpPortRule> - <rtpPortRuleCh type="int">1</rtpPortRuleCh> - <dl_BUG type="bool">True</dl_BUG> - <dl_TRACE type="bool">False</dl_TRACE> - <dl_L_INFO type="bool">True</dl_L_INFO> - <dl_L_ADV type="bool">False</dl_L_ADV> - <dl_L_VRB type="bool">False</dl_L_VRB> - <dl_T_IO type="bool">False</dl_T_IO> - <dl_T_INFO type="bool">False</dl_T_INFO> - <dl_T_ADV type="bool">False</dl_T_ADV> - <dl_T_VRB type="bool">False</dl_T_VRB> - <dl_TG_ADV type="bool">False</dl_TG_ADV> - <dl_TG_VRB type="bool">False</dl_TG_VRB> - <dl_Q_ADV type="bool">False</dl_Q_ADV> - <dl_Q_VRB type="bool">False</dl_Q_VRB> - <dl_S_FSM type="bool">False</dl_S_FSM> - <dl_S_SER type="bool">False</dl_S_SER> - <dl_S_SUA type="bool">False</dl_S_SUA> - <dl_S_WAIT type="bool">False</dl_S_WAIT> - <dl_S_SEND type="bool">False</dl_S_SEND> - <dl_S_INFO type="bool">False</dl_S_INFO> - <dl_S_ADV type="bool">False</dl_S_ADV> - <dl_S_VRB type="bool">False</dl_S_VRB> - <dl_R_DD type="bool">False</dl_R_DD> - <dl_R_VRB type="bool">False</dl_R_VRB> - <dl_R_PAR type="bool">False</dl_R_PAR> - <dl_EE_VRB type="bool">False</dl_EE_VRB> - <dl_EE_DD type="bool">False</dl_EE_DD> - <dl_FLOW type="bool">False</dl_FLOW> - <dl_M_IO type="bool">False</dl_M_IO> - <dl_SDP_DD type="bool">False</dl_SDP_DD> - <dl_1 type="bool">False</dl_1> - <dl_2 type="bool">False</dl_2> - <dl_3 type="bool">False</dl_3> - <log_level type="int">9</log_level> - <log_in_memory type="int">1</log_in_memory> - <rtp_log_in_file type="int">1</rtp_log_in_file> - <log_filesize type="int">32</log_filesize> - <_gbDebugLogs type="bool">False</_gbDebugLogs> - <ccExportProfile type="bool">False</ccExportProfile> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_ipRule1</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">dl_S_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loopMidDelay</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_T_IO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_T_INFO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_SEND</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_rtpIpRule1</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">_estimatedBacklog</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loopPreDelay</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_TG_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">log_filesize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtp_log_in_file</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_T_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">aliases</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_Q_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">multipleUsersPerIO</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">log_level</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpIpRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rampdownSleep</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_portRule1</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">dl_S_SER</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_R_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_L_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_Q_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">portRuleCh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_INFO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpPortRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_M_IO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_EE_DD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpIpRuleCh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_FSM</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loopMode</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">gracefulRampDown</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_FLOW</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_BUG</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_SUA</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ipRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ipRuleCh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">phoneRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_rtpPortRule1</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">dl_R_PAR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loopCount</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">dl_S_WAIT</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_SDP_DD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_TRACE</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbDebugLogs</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">rtpPortRuleCh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_TG_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">portRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_L_INFO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_EE_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_R_DD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_T_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ccExportProfile</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">log_in_memory</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_L_VRB</item> - <item ref="1"/> - </item> - </_dict> - </state> - </executionSettings> - <customActivityLinkSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ixCustomActivityParameters"> - <enableDbgLog type="bool">False</enableDbgLog> - <dbgLogChannels type="str">1-5</dbgLogChannels> - <bhcaType type="int">0</bhcaType> - <talkTime type="int">10000</talkTime> - <channelsNo type="int">1</channelsNo> - <callSetupTime type="int">500</callSetupTime> - <callTeardownTime type="int">500</callTeardownTime> - <interCallDuration type="int">4000</interCallDuration> - <bhcaObjectiveValue type="int">1</bhcaObjectiveValue> - <cpsOverwriteValueChecked type="int">0</cpsOverwriteValueChecked> - <cpsTotalChannelsChecked type="int">0</cpsTotalChannelsChecked> - <cpsOverwriteValue type="int">18</cpsOverwriteValue> - <cpsType type="int">0</cpsType> - <cpsTalkTime type="int">30000</cpsTalkTime> - <cpsChannelsNo type="int">16750</cpsChannelsNo> - <cpsTotalChannelsNo type="int">33500</cpsTotalChannelsNo> - <cpsOverheadTime type="int">1500</cpsOverheadTime> - <cpsInterCallDuration type="int">2000</cpsInterCallDuration> - <cpsObjectiveValue type="int">500</cpsObjectiveValue> - <cpsRegisterTime type="int">40</cpsRegisterTime> - <cpsSplitTimeline type="int">0</cpsSplitTimeline> - <lpsType type="int">0</lpsType> - <lpsTalkTime type="int">800</lpsTalkTime> - <lpsChannelsNo type="int">2150</lpsChannelsNo> - <lpsOverheadTime type="int">1500</lpsOverheadTime> - <lpsInterLoopDuration type="int">2000</lpsInterLoopDuration> - <lpsObjectiveValue type="int">500</lpsObjectiveValue> - <lpsActiveChannel type="int">0</lpsActiveChannel> - <activeUsersTalkTime type="int">30000</activeUsersTalkTime> - <activeUsersNo type="int">{{activecalls}}</activeUsersNo> - <activeUsersChannel type="int">0</activeUsersChannel> - <activeUsersObjectiveValue type="int">{{activecalls}}</activeUsersObjectiveValue> - </customActivityLinkSettings> - <rtpWaveFiles ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_RTPWaveFiles"> - <wavesCount type="int">1</wavesCount> - </rtpWaveFiles> - <rtpTones ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_RTPTones"> - <usedTonesCount type="int">0</usedTonesCount> - <customTonesCount type="int">35</customTonesCount> - <seqCustTonesCount type="int">0</seqCustTonesCount> - </rtpTones> - <codecCustomPopup ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecCustomPopup"> - <captureFile type="str">Default.cap</captureFile> - <parseRTPPort type="bool">False</parseRTPPort> - <parseSSRC type="bool">False</parseSSRC> - <rtpPort type="int">10000</rtpPort> - <ssrc type="str">0x8078C5D3</ssrc> - </codecCustomPopup> - <codecCustomPropDlg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecCustomPropDlg"/> - <codecSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecSettings"> - <codecs ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_CodecSettings_codecs" itemtype="ixConfig"> - <item ver="[0, [0, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecG711u"> - <dPayloadIn type="int">0</dPayloadIn> - <dPayloadOut type="int">0</dPayloadOut> - <frameSize type="int">160</frameSize> - </item> - <item ver="[0, [0, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecG711a"> - <dPayloadIn type="int">8</dPayloadIn> - <dPayloadOut type="int">8</dPayloadOut> - <frameSize type="int">160</frameSize> - </item> - </codecs> - <codecs_number type="int">2</codecs_number> - <_gbVideoCodecs type="bool">False</_gbVideoCodecs> - <videoPayloadType type="int">96</videoPayloadType> - <_gbDataCodecs type="bool">False</_gbDataCodecs> - <dataCodecs ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_CodecSettings_dataCodecs" itemtype="ixConfig"> - <item ver="[0, [0, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Rtp2833Events"> - <dPayloadType type="int">100</dPayloadType> - </item> - <item ver="[0, [0, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Rtp2833Tones"> - <dPayloadType type="int">101</dPayloadType> - </item> - </dataCodecs> - <crtCustomCodecIndex type="int">-1</crtCustomCodecIndex> - </codecSettings> - <rtpSettings ver="[7, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_RTPSettings"> - <rtpPort type="str">[10000-65535,4]</rtpPort> - <enableAdvStatCalc type="bool">False</enableAdvStatCalc> - <enableRTCP type="bool">False</enableRTCP> - <enableRTCPMux type="bool">False</enableRTCPMux> - <chEnableHwAcc type="bool">False</chEnableHwAcc> - <chDisableHwAcc type="bool">False</chDisableHwAcc> - <enableHwAcc type="bool">False</enableHwAcc> - <enableIxStack type="bool">False</enableIxStack> - <enableNBExec type="bool">False</enableNBExec> - <enablePerStream type="bool">False</enablePerStream> - <enableMDI type="bool">False</enableMDI> - <enableRTP type="bool">False</enableRTP> - <enableMediaSDPParams type="bool">False</enableMediaSDPParams> - <audioB_option type="bool">False</audioB_option> - <audioB_value type="str">AS:48</audioB_value> - <audioRR_option type="bool">False</audioRR_option> - <audioRR_value type="str">800</audioRR_value> - <audioRS_option type="bool">False</audioRS_option> - <audioRS_value type="str">800</audioRS_value> - <videoB_option type="bool">False</videoB_option> - <videoB_value type="str">AS:384</videoB_value> - <videoRR_option type="bool">False</videoRR_option> - <videoRR_value type="str">6400</videoRR_value> - <videoRS_option type="bool">False</videoRS_option> - <videoRS_value type="str">6400</videoRS_value> - <textB_option type="bool">False</textB_option> - <textB_value type="str">AS:48</textB_value> - <textRR_option type="bool">False</textRR_option> - <textRR_value type="str">800</textRR_value> - <textRS_option type="bool">False</textRS_option> - <textRS_value type="str">800</textRS_value> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">videoRR_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbVideoSDPParams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textRS_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">jitMs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbAudioSDPParams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">ixnamSupported</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dedicatedCoreRange</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpTosVal</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">channelTypeQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableMediaSDPParams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTextSDPParams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">activityIdQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioRS_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useJitComp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dedicatedCoreRangeLength</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioB_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioB_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">portIPsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioRS_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableHwAcc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">chEnableHwAcc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">channelsQoVPerZionPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoRR_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableRTCPMux</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textRR_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">silenceMode</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbMediaSDPParams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textB_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">jitCMs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">valueQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableRTCP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">maxMosStreams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableMDI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableIxStack</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableOWD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">unitsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">serviceEnabledQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">chDisableHwAcc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTosGroupBox</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioRR_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enablePerStream</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">limitMos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useMos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textRR_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">customTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoB_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">mosInterval</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableAdvStatCalc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useJitter</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useSilence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">metricsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoRS_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoRS_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">jitCMaxDrop</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioRR_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textB_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableTosRtp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoB_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">activityNameQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textRS_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableNBExec</item> - <item ref="1"/> - </item> - </_dict> - </state> - </rtpSettings> - <rtcpSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_RTCPSettings"> - <rtcpIgnoreSSRC type="bool">False</rtcpIgnoreSSRC> - <rtcpCNAMEType type="int">0</rtcpCNAMEType> - <hasSDESName type="bool">False</hasSDESName> - <hasSDESTool type="bool">False</hasSDESTool> - <rtcpSDESTool type="str">IxLoad</rtcpSDESTool> - <rtcpReceiverTimer type="int">2000</rtcpReceiverTimer> - <rtcpSenderTimer type="int">2000</rtcpSenderTimer> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">rtcpSDESTool</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">rtcpSenderTimer</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtcpCNAMEType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">hasSDESTool</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtcpReceiverTimer</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtcpIgnoreSSRC</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">hasSDESName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableRTCPMux2</item> - <item ref="1"/> - </item> - </_dict> - </state> - </rtcpSettings> - <audioSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AudioSettings"> - <enableAudio type="bool">False</enableAudio> - <_gbEnableAudio type="bool">False</_gbEnableAudio> - <enableAudioOWD type="bool">False</enableAudioOWD> - <useJitter type="bool">False</useJitter> - <_JB1 type="bool">False</_JB1> - <jitMs type="int">20</jitMs> - <useJitComp type="bool">False</useJitComp> - <jitCMs type="int">1000</jitCMs> - <jitCMaxDrop type="int">7</jitCMaxDrop> - <dodName type="str">rtp_esmad-asordo-l_2170</dodName> - <useMos type="bool">False</useMos> - <useSilence type="bool">False</useSilence> - <silenceMode type="int">1</silenceMode> - <enableTosRtp type="bool">False</enableTosRtp> - <rtpTos type="int">1</rtpTos> - <customTosGroupBox type="bool">False</customTosGroupBox> - <customTos type="str">0x20</customTos> - <rtpTosVal type="int">32</rtpTosVal> - <_COV1 type="bool">False</_COV1> - <useQoV type="bool">False</useQoV> - <qovAnalize type="int">5</qovAnalize> - <qovSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_QoVSettings"> - <activityIdQoV type="int">0</activityIdQoV> - <enableQoV type="bool">False</enableQoV> - <_gbEnableQoV type="bool">False</_gbEnableQoV> - <serviceEnabledQoV type="bool">False</serviceEnabledQoV> - <activityNameQoV type="str"></activityNameQoV> - <portIPsQoV type="str"></portIPsQoV> - <unitsQoV type="int">0</unitsQoV> - <valueQoV type="int">100</valueQoV> - <channelTypeQoV type="int">0</channelTypeQoV> - <metricsQoV type="int">0</metricsQoV> - <channelsQoVPerZionPort type="int">0</channelsQoVPerZionPort> - <radioBtnQoVASR type="int">0</radioBtnQoVASR> - <languageASR type="str">English(US)</languageASR> - </qovSettings> - <activityIdQoV type="int">0</activityIdQoV> - <enableQoV type="bool">False</enableQoV> - <_gbEnableQoV type="bool">False</_gbEnableQoV> - <serviceEnabledQoV type="bool">False</serviceEnabledQoV> - <activityNameQoV type="str"></activityNameQoV> - <portIPsQoV type="str"></portIPsQoV> - <unitsQoV type="int">0</unitsQoV> - <valueQoV type="int">100</valueQoV> - <channelTypeQoV type="int">0</channelTypeQoV> - <metricsQoV type="int">0</metricsQoV> - <channelsQoVPerZionPort type="int">0</channelsQoVPerZionPort> - <radioBtnQoVASR type="int">0</radioBtnQoVASR> - <languageASR type="str">English(US)</languageASR> - <audioClip type="str">US_042.wav</audioClip> - <_audioFormat type="str">Format: PCM, Duration: 32785 ms, Size: 524556 bytes</_audioFormat> - <outputLevel type="int">-20</outputLevel> - <_gbOutputLevel type="bool">False</_gbOutputLevel> - <playTypeAudio type="int">0</playTypeAudio> - <audioDuration type="int">10</audioDuration> - <audioDurationUnit type="int">1</audioDurationUnit> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_gbEnableQoV</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">channelTypeQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">pesqPolqa</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enablePTT</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableP56</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">qovAnalize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">channelsQoVPerZionPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_COV1</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">useTelchemy</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">activityIdQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpTosVal</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useJitComp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioDuration</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_JB1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTosRtp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">portIPsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbQoVMetrics</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dodName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">jitMs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbASRLanguage</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">rtpTos</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">radioBtnQoVASR</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">silenceMode</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">playTypeAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useQoV</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">activityNameQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">jitCMs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">valueQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbOutputLevel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">unitsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">serviceEnabledQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">languageASR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTosGroupBox</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">audioDurationUnit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">useMos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTos</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">qovSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useJitter</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useSilence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">metricsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">jitCMaxDrop</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">channelsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableAudioOWD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_audioFormat</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableAudio</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">outputLevel</item> - <item ref="1"/> - </item> - </_dict> - </state> - </audioSettings> - <editTos ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_EditTos"> - <bits012 type="int">0</bits012> - <minDelay type="bool">False</minDelay> - <maxThroughput type="bool">False</maxThroughput> - <maxReliability type="bool">False</maxReliability> - <_gbBtnTosBit7_0 type="bool">False</_gbBtnTosBit7_0> - <_gbBtnTosBit7_1 type="bool">False</_gbBtnTosBit7_1> - <_gbBtnTosBit6_0 type="bool">False</_gbBtnTosBit6_0> - <_gbBtnTosBit6_1 type="bool">False</_gbBtnTosBit6_1> - <_gbBtnTosBit5_0 type="bool">False</_gbBtnTosBit5_0> - <_gbBtnTosBit5_1 type="bool">False</_gbBtnTosBit5_1> - <_gbBtnTosBit4_0 type="bool">False</_gbBtnTosBit4_0> - <_gbBtnTosBit4_1 type="bool">False</_gbBtnTosBit4_1> - <_gbBtnTosBit3_0 type="bool">False</_gbBtnTosBit3_0> - <_gbBtnTosBit3_1 type="bool">False</_gbBtnTosBit3_1> - <_gbBtnTosBit2_0 type="bool">False</_gbBtnTosBit2_0> - <_gbBtnTosBit2_1 type="bool">False</_gbBtnTosBit2_1> - <_gbDisabledBtns type="bool">False</_gbDisabledBtns> - </editTos> - <srtpSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SRTPSettings"> - <bEnableSRTP type="bool">False</bEnableSRTP> - <bEnableVideoSRTP type="bool">False</bEnableVideoSRTP> - <bEnableTextSRTP type="bool">False</bEnableTextSRTP> - <bDisableSRTCPEncryption type="bool">False</bDisableSRTCPEncryption> - <bDisableSRTPEncryption type="bool">False</bDisableSRTPEncryption> - <bDisableSRTPAuthentication type="bool">False</bDisableSRTPAuthentication> - <bDisableValidations type="bool">False</bDisableValidations> - <bAllowOnlySecureStreams type="bool">False</bAllowOnlySecureStreams> - <bIncludeMKI type="bool">False</bIncludeMKI> - <bEnablePreencryption type="bool">False</bEnablePreencryption> - <bDisableMasterSalt type="bool">False</bDisableMasterSalt> - <bStaticMasterKeySalt type="bool">False</bStaticMasterKeySalt> - <_masterKeySelection type="int">0</_masterKeySelection> - <staticSingleKeySalt type="str"></staticSingleKeySalt> - <staticKeyFile type="str"></staticKeyFile> - <_enableSRTP type="bool">False</_enableSRTP> - <_useStaticKey type="bool">False</_useStaticKey> - <_singleMasterKeyGrp type="bool">False</_singleMasterKeyGrp> - <_multipleMasterKeysGrp type="bool">False</_multipleMasterKeysGrp> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">bEnableSRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_singleMasterKeyGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableSRTPEncryption</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableSRTPAuthentication</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableValidations</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_useStaticKey</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">bEnablePreencryption</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">staticSingleKeySalt</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableSRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bStaticMasterKeySalt</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">staticKeyFile</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableMasterSalt</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_multipleMasterKeysGrp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">bAllowOnlySecureStreams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableSRTCPEncryption</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bEnableVideoSRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bIncludeMKI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bEnableTextSRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_masterKeySelection</item> - <item ref="1"/> - </item> - </_dict> - </state> - </srtpSettings> - <videoClips ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoClips"> - <videoClipsInfo ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_VideoClips_videoClipsInfo" itemtype="ixConfig"/> - <videoClipsInfoLength type="int">0</videoClipsInfoLength> - <H323MaxProfile type="int">0</H323MaxProfile> - <H323MaxLevel type="int">0</H323MaxLevel> - <H323MaxBitRate type="int">0</H323MaxBitRate> - <H323Packetization type="int">0</H323Packetization> - <MaxProfileIdc type="int">66</MaxProfileIdc> - <MaxProfileIop type="int">0</MaxProfileIop> - <MaxLevel type="int">1</MaxLevel> - </videoClips> - <advancedVideo ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AdvancedVideoSettings"> - <enableCustomMaxMBPS type="bool">False</enableCustomMaxMBPS> - <customMaxMBPS type="int">0</customMaxMBPS> - <enableCustomMaxFS type="bool">False</enableCustomMaxFS> - <customMaxFS type="int">0</customMaxFS> - <enableCustomMaxDPB type="bool">False</enableCustomMaxDPB> - <customMaxDPB type="int">0</customMaxDPB> - <enableCustomMaxBRandCPB type="bool">False</enableCustomMaxBRandCPB> - <customMaxBRandCPB type="int">0</customMaxBRandCPB> - <enableMaxStaticMBPS type="bool">False</enableMaxStaticMBPS> - <maxStaticMBPS type="int">0</maxStaticMBPS> - <enableMaxRcmdNalUnitSize type="bool">False</enableMaxRcmdNalUnitSize> - <maxRcmdNalUnitSize type="int">0</maxRcmdNalUnitSize> - <enableMaxNalUnitSize type="bool">False</enableMaxNalUnitSize> - <maxNalUnitSize type="int">0</maxNalUnitSize> - </advancedVideo> - <videoSettings ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoSettings"> - <enableVideo type="bool">False</enableVideo> - <enableVideoOWD type="bool">False</enableVideoOWD> - <videoMaxSessions type="int">1</videoMaxSessions> - <_gbEnableVideo type="bool">False</_gbEnableVideo> - <videoClip type="str">Fire_avc.mp4</videoClip> - <_videoFormat type="str">Codec: H264, Duration: 12800 ms, Size: 2012176 bytes, Bitrate: 1225 kbps</_videoFormat> - <playTypeVideo type="int">0</playTypeVideo> - <videoDuration type="int">5</videoDuration> - <videoDurationUnit type="int">1</videoDurationUnit> - <useConference type="bool">False</useConference> - <_gbUseConference type="bool">False</_gbUseConference> - <rotationScheme type="int">0</rotationScheme> - <confVideoDuration type="int">1</confVideoDuration> - <confVideoDurationUnit type="int">1</confVideoDurationUnit> - <confDuration type="int">1</confDuration> - <confDurationUnit type="int">1</confDurationUnit> - <btnTelepresence type="bool">False</btnTelepresence> - <_gbUseTelepresence type="bool">False</_gbUseTelepresence> - <tipSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoTelepresenceSettings"> - <tipEndpointType type="int">1</tipEndpointType> - <tipResolution type="int">1</tipResolution> - <tipVersion type="int">1</tipVersion> - <tipSyntheticPayload type="bool">False</tipSyntheticPayload> - <tipMoreClips type="bool">False</tipMoreClips> - <_gbTipMoreClips type="int">0</_gbTipMoreClips> - <tipVideoClip2 type="str">Fire_avc.mp4</tipVideoClip2> - <tipRotationScheme type="int">0</tipRotationScheme> - <tipConfDuration type="int">1</tipConfDuration> - <tipConfDurationUnit type="int">1</tipConfDurationUnit> - <tipAudioDuration type="int">1</tipAudioDuration> - <tipAudioDurationUnit type="int">1</tipAudioDurationUnit> - <_gbTipPresentation type="bool">False</_gbTipPresentation> - <tipUsePresentationStream type="bool">False</tipUsePresentationStream> - <tipVideoClip type="str">Fire_avc.mp4</tipVideoClip> - <tipAudioClip type="str">US_042.wav</tipAudioClip> - <tipStartAfter type="int">1</tipStartAfter> - <tipStartAfterUnit type="int">1</tipStartAfterUnit> - <tipDuration type="int">1</tipDuration> - <tipDurationUnit type="int">1</tipDurationUnit> - <tipPresentationRotation type="int">0</tipPresentationRotation> - <tipLegacyMode type="bool">False</tipLegacyMode> - <_gbTipLegacy type="int">0</_gbTipLegacy> - <tipLegacyClip type="str">Fire_avc.mp4</tipLegacyClip> - <tipLegacyModeAudio type="bool">False</tipLegacyModeAudio> - <_gbTipLegacyAudio type="int">0</_gbTipLegacyAudio> - <tipLegacyClipAudio type="str">US_042.wav</tipLegacyClipAudio> - <tipG722Legacy type="bool">False</tipG722Legacy> - <tipAudioActivityMetric type="bool">False</tipAudioActivityMetric> - <tipDinamicChannels type="bool">False</tipDinamicChannels> - <tipVideoRefresh type="bool">False</tipVideoRefresh> - <tipInbandSets type="bool">False</tipInbandSets> - <tipArithmetingCoding type="bool">False</tipArithmetingCoding> - <tipLTRP type="bool">False</tipLTRP> - <tipGDR type="bool">False</tipGDR> - <tipHighProfile type="bool">False</tipHighProfile> - <tipUnrestrictedMedia type="bool">False</tipUnrestrictedMedia> - <tipRtcpFeedback type="bool">True</tipRtcpFeedback> - </tipSettings> - <_gbTosVideo type="bool">False</_gbTosVideo> - <enableTosVideo type="bool">False</enableTosVideo> - <tosVideo type="int">1</tosVideo> - <customTosVideo type="str">0x20</customTosVideo> - <_gbCustomTosVideo type="bool">False</_gbCustomTosVideo> - <tosValVideo type="int">32</tosValVideo> - <useMosVideo type="bool">False</useMosVideo> - <enableAcceptSSRCChanges type="bool">False</enableAcceptSSRCChanges> - <ignoreHintTrack type="bool">False</ignoreHintTrack> - <hintTrackType type="int">1</hintTrackType> - <enablePACSI type="bool">True</enablePACSI> - <useSingleNALUnit type="bool">False</useSingleNALUnit> - <_gbH323AdvancedSettings type="bool">False</_gbH323AdvancedSettings> - <useH323AdvancedSettings type="bool">False</useH323AdvancedSettings> - <_gbUseH323AdvancedSettings type="bool">False</_gbUseH323AdvancedSettings> - <rtpmap type="str"></rtpmap> - <fmtp type="str"></fmtp> - <isMP4 type="bool">False</isMP4> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">hintTrackType</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">videoMaxSessions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useSingleNALUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableVideo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useConference</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTosVideo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">playTypeVideo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rotationScheme</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbUseH323AdvancedSettings</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">isMP4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confVideoDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tosValVideo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enablePACSI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_videoFormat</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tosVideo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbUseTelepresence</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableVideoOWD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTosVideo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">fmtp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoDurationUnit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbUseConference</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbH323AdvancedSettings</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">_gbTosVideo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbCustomTosVideo</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">ignoreHintTrack</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableAcceptSSRCChanges</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoDuration</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">useH323AdvancedSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confVideoDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpmap</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableVideo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">btnTelepresence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useMosVideo</item> - <item ref="1"/> - </item> - </_dict> - </state> - </videoSettings> - <videoConfSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoConfSettings"> - <rotationScheme type="int">0</rotationScheme> - <_gbRotationScheme type="int">0</_gbRotationScheme> - <confVideoDuration type="int">0</confVideoDuration> - <confVideoDurationUnit type="int">0</confVideoDurationUnit> - <confDuration type="int">0</confDuration> - <confDurationUnit type="int">0</confDurationUnit> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">rotationScheme</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confVideoDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbRotationScheme</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">confVideoDuration</item> - <item ref="1"/> - </item> - </_dict> - </state> - </videoConfSettings> - <videoTelepresenceSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoTelepresenceSettings"> - <tipEndpointType type="int">0</tipEndpointType> - <tipResolution type="int">0</tipResolution> - <tipVersion type="int">0</tipVersion> - <tipSyntheticPayload type="bool">False</tipSyntheticPayload> - <tipMoreClips type="bool">False</tipMoreClips> - <_gbTipMoreClips type="int">0</_gbTipMoreClips> - <tipVideoClip2 type="str">Fire_avc.mp4</tipVideoClip2> - <tipRotationScheme type="int">0</tipRotationScheme> - <tipConfDuration type="int">0</tipConfDuration> - <tipConfDurationUnit type="int">0</tipConfDurationUnit> - <tipAudioDuration type="int">0</tipAudioDuration> - <tipAudioDurationUnit type="int">0</tipAudioDurationUnit> - <_gbTipPresentation type="bool">False</_gbTipPresentation> - <tipUsePresentationStream type="bool">False</tipUsePresentationStream> - <tipVideoClip type="str">Fire_avc.mp4</tipVideoClip> - <tipAudioClip type="str">US_042.wav</tipAudioClip> - <tipStartAfter type="int">0</tipStartAfter> - <tipStartAfterUnit type="int">0</tipStartAfterUnit> - <tipDuration type="int">0</tipDuration> - <tipDurationUnit type="int">0</tipDurationUnit> - <tipPresentationRotation type="int">0</tipPresentationRotation> - <tipLegacyMode type="bool">False</tipLegacyMode> - <_gbTipLegacy type="int">0</_gbTipLegacy> - <tipLegacyClip type="str">Fire_avc.mp4</tipLegacyClip> - <tipLegacyModeAudio type="bool">False</tipLegacyModeAudio> - <_gbTipLegacyAudio type="int">0</_gbTipLegacyAudio> - <tipLegacyClipAudio type="str">US_042.wav</tipLegacyClipAudio> - <tipG722Legacy type="bool">False</tipG722Legacy> - <tipAudioActivityMetric type="bool">False</tipAudioActivityMetric> - <tipDinamicChannels type="bool">False</tipDinamicChannels> - <tipVideoRefresh type="bool">False</tipVideoRefresh> - <tipInbandSets type="bool">False</tipInbandSets> - <tipArithmetingCoding type="bool">False</tipArithmetingCoding> - <tipLTRP type="bool">False</tipLTRP> - <tipGDR type="bool">False</tipGDR> - <tipHighProfile type="bool">False</tipHighProfile> - <tipUnrestrictedMedia type="bool">False</tipUnrestrictedMedia> - <tipRtcpFeedback type="bool">True</tipRtcpFeedback> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">tipDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipRotationScheme</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipLegacyMode</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipLegacyClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipVideoClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipVideoRefresh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipUsePresentationStream</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipGDR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipStartAfterUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipArithmetingCoding</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTipLegacyAudio</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tipConfDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipConfDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipG722Legacy</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipLegacyClipAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipLegacyClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipMoreClips</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipInbandSets</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipSyntheticPayload</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipVideoClip2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipAudioDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipResolution</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipVideoClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipLegacyClipAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipAudioDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipLegacyModeAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTipPresentation</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tipHighProfile</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipRtcpFeedback</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipVideoClip2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTipMoreClips</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tipVersion</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipDinamicChannels</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipEndpointType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTipLegacy</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tipLTRP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipStartAfter</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipAudioClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipPresentationRotation</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipAudioClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipAudioActivityMetric</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipUnrestrictedMedia</item> - <item ref="1"/> - </item> - </_dict> - </state> - </videoTelepresenceSettings> - <textSettings ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TextSettings"> - <enableText type="bool">False</enableText> - <enableTextOWD type="bool">False</enableTextOWD> - <_gbEnableText type="bool">False</_gbEnableText> - <textClip type="str">The quick brown fox jumps over the lazy dog</textClip> - <textFormat type="str">Format: t140, Max duration: 42300 ms</textFormat> - <textChpsMin type="float">1.0</textChpsMin> - <textChpsMax type="float">1.0</textChpsMax> - <textBufferTime type="int">300</textBufferTime> - <textRedundancyLevel type="int">0</textRedundancyLevel> - <textPlayType type="int">0</textPlayType> - <textDuration type="int">5</textDuration> - <textDurationUnit type="int">1</textDurationUnit> - <_gbTosText type="bool">False</_gbTosText> - <enableTosText type="bool">False</enableTosText> - <tosText type="int">1</tosText> - <customTosText type="str">0x20</customTosText> - <_gbCustomTosText type="bool">False</_gbCustomTosText> - <tosValText type="int">32</tosValText> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">tosValText</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableText</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTosText</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textChpsMin</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textRedundancyLevel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textChpsMax</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textBufferTime</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textDuration</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableTextOWD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTosText</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableText</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textPlayType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbCustomTosText</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">enableTosText</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textFormat</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textDurationUnit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tosText</item> - <item ref="3"/> - </item> - </_dict> - </state> - </textSettings> - <t38Settings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_T38Settings"> - <enableT38 type="bool">False</enableT38> - <_gbEnableT38 type="bool">False</_gbEnableT38> - <_gbEnableT38_2 type="bool">False</_gbEnableT38_2> - <faxImage type="str">Ixia2Pages.tif</faxImage> - <_faxFormat type="str">Format: TIFF, Img size: 1660 x 2291, Size: 140402 bytes</_faxFormat> - <t38TransportType type="int">1</t38TransportType> - <t38Port type="str">40000</t38Port> - <t38UdpEncapsulation type="int">0</t38UdpEncapsulation> - <_gbT38UdpEncapsulation type="bool">False</_gbT38UdpEncapsulation> - <t38PayloadType type="int">102</t38PayloadType> - <useFaxVersion type="bool">True</useFaxVersion> - <faxVersion type="int">0</faxVersion> - <useT38MaxBitrate type="bool">True</useT38MaxBitrate> - <t38MaxBitrate type="int">5</t38MaxBitrate> - <useT38RateMgmt type="bool">True</useT38RateMgmt> - <t38RateMgmt type="int">0</t38RateMgmt> - <useT38FillBitRemoval type="bool">False</useT38FillBitRemoval> - <t38FillBitRemoval type="int">0</t38FillBitRemoval> - <t38TranscodingMMR type="bool">False</t38TranscodingMMR> - <t38TranscodingJBIG type="bool">False</t38TranscodingJBIG> - <_gbUdpOptions type="bool">False</_gbUdpOptions> - <useErrorRecoverySchema type="bool">True</useErrorRecoverySchema> - <errorRecoverySchema type="int">0</errorRecoverySchema> - <useT38MaxDatagramSize type="bool">True</useT38MaxDatagramSize> - <t38MaxDatagramSize type="int">256</t38MaxDatagramSize> - <useT38MaxBufferSize type="bool">False</useT38MaxBufferSize> - <t38MaxBufferSize type="int">200</t38MaxBufferSize> - <imagesList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_T38Settings_imagesList" itemtype="ixConfig"/> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">t38TranscodingMMR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38UdpEncapsulation</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38MaxBitrate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38RateMgmt</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38TranscodingJBIG</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableT38</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38TransportType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableT38_2</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableT38</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">t38Port</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38FillBitRemoval</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">faxVersion</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38FillBitRemoval</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38RateMgmt</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">faxImage</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38MaxBufferSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">errorRecoverySchema</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38MaxDatagramSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38MaxBufferSize</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_faxFormat</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38PayloadType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38MaxDatagramSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38MaxBitrate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useFaxVersion</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbUdpOptions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbT38UdpEncapsulation</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">imagesList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useErrorRecoverySchema</item> - <item ref="1"/> - </item> - </_dict> - </state> - </t38Settings> - <t30Parameters ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_T30Parameters"> - <t30StationId type="str">5551[000-]</t30StationId> - <t30SendCoding type="int">0</t30SendCoding> - <t30SendDataRate type="int">5</t30SendDataRate> - <t30SendPageSize type="int">0</t30SendPageSize> - <t30SendMSLT type="int">0</t30SendMSLT> - <t30SendProtocol type="int">1</t30SendProtocol> - <t30SendResolution type="int">0</t30SendResolution> - <sendCNG type="int">1</sendCNG> - <t30ReceiveCoding type="int">2</t30ReceiveCoding> - <t30ReceivePageSize type="int">2</t30ReceivePageSize> - <t30ReceiveMSLT type="int">0</t30ReceiveMSLT> - <t30ReceiveProtocol type="int">1</t30ReceiveProtocol> - <t30ReceiveR8x3 type="bool">True</t30ReceiveR8x3> - <t30ReceiveR8x7 type="bool">True</t30ReceiveR8x7> - <t30ReceiveR8x15 type="bool">True</t30ReceiveR8x15> - <t30Receive200x200 type="bool">True</t30Receive200x200> - <t30ReceiveModulations type="int">3</t30ReceiveModulations> - <sendCedBeforeDIS type="int">1</sendCedBeforeDIS> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">t30SendResolution</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">sendCedBeforeDIS</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveR8x7</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30SendPageSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveR8x3</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">t30SendCoding</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveProtocol</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">sendCNG</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30SendProtocol</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveMSLT</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30SendMSLT</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30SendDataRate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceivePageSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveModulations</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveR8x15</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30StationId</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveCoding</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30Receive200x200</item> - <item ref="1"/> - </item> - </_dict> - </state> - </t30Parameters> - <msrpSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MSRPSettings"> - <enableMSRP type="bool">False</enableMSRP> - <_gbEnableMSRP type="bool">False</_gbEnableMSRP> - <msrpPort type="str">2855</msrpPort> - <domainType type="int">0</domainType> - <localDomain type="str">alice[00-99].example.com</localDomain> - <relays ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_MSRPSettings_relays" itemtype="ixConfig"/> - <relaysCount type="int">0</relaysCount> - <firstRelayIpEnabled type="bool">False</firstRelayIpEnabled> - <firstRelayIp type="str">10.10.10.1</firstRelayIp> - <firstRelayIsIPv4 type="bool">True</firstRelayIsIPv4> - <msrpRelayPort type="int">2855</msrpRelayPort> - <enableMSRPTos type="bool">False</enableMSRPTos> - <msrpTos type="int">0</msrpTos> - <customMSRPTos type="str">0x00</customMSRPTos> - <tosMSRPVal type="int">0</tosMSRPVal> - <automaticMSRPAuth type="bool">True</automaticMSRPAuth> - <msrpReuseTCP type="bool">True</msrpReuseTCP> - <msrpSendEmptyMsg type="bool">False</msrpSendEmptyMsg> - <msrpTransactionTimeout type="int">30000</msrpTransactionTimeout> - <msrpFirstChunkTimeout type="int">60000</msrpFirstChunkTimeout> - <msrpInterChunkTimeout type="int">30000</msrpInterChunkTimeout> - <msrpSessionTimeout type="int">70000</msrpSessionTimeout> - <msrpGuiFiles ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_MSRPSettings_msrpGuiFiles" itemtype="ixConfig"/> - <files ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_MSRPSettings_files" itemtype="ixConfig"/> - <filesCount type="int">0</filesCount> - <advSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MSRPAdvancedSettings"> - <closeTCPConnectionAfterBye type="bool">False</closeTCPConnectionAfterBye> - </advSettings> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">customMSRPTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">filesCount</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">firstRelayIpEnabled</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">automaticMSRPAuth</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpSendEmptyMsg</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpTransactionTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpInterChunkTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tosMSRPVal</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableMSRP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">localDomain</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">relaysCount</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">domainType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">firstRelayIp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">advSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">files</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpFirstChunkTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">firstRelayIsIPv4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbMSRPCustomTos</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">msrpSessionTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableMSRP</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableMSRPTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpReuseTCP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpGuiFiles</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpTos</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">relays</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpRelayPort</item> - <item ref="3"/> - </item> - </_dict> - </state> - </msrpSettings> - <_tempFile ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_FileRecord"> - <synthetic type="int">0</synthetic> - <_typeStr type="str"></_typeStr> - <name type="str"></name> - <nameSynthetic type="str"></nameSynthetic> - <fileClientPath type="str"></fileClientPath> - <filePcpuPath type="str"></filePcpuPath> - <_bFileSize type="int">20</_bFileSize> - <_msrpSizeCombo type="int">2</_msrpSizeCombo> - <size type="int">0</size> - <btnMSRPFileBrowse type="int">0</btnMSRPFileBrowse> - <type type="str">application/octet-stream</type> - <fileHash type="str"></fileHash> - </_tempFile> - <_tempAdvSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MSRPAdvancedSettings"> - <closeTCPConnectionAfterBye type="bool">False</closeTCPConnectionAfterBye> - </_tempAdvSettings> - <phoneBookInputLabel ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_PhoneBookInputLabel"> - <label type="str">5</label> - </phoneBookInputLabel> - <akaConfigurationInputLabel ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AKAConfigurationInputLabel"> - <configurationLabel type="str"></configurationLabel> - </akaConfigurationInputLabel> - <phoneBook ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_PhoneBook"> - <fromFile type="int">0</fromFile> - <pattern type="str">201004[0000-]</pattern> - <filePath type="str"></filePath> - <_PN1 type="bool">False</_PN1> - <_bTelGrp type="bool">False</_bTelGrp> - <ckTelURIBook type="bool">False</ckTelURIBook> - <_bkTelURIparams type="str">phone-context=example.com</_bkTelURIparams> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">phoneBookList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">filePath</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">pattern</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ckTelURIBook</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_bkTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_PN1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_bTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fromFile</item> - <item ref="1"/> - </item> - </_dict> - </state> - </phoneBook> - <akaConfiguration ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AKAConfiguration"/> - <milenageConfiguration ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MilenageConfiguration"/> - <msgBox ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MsgBox"> - <msg1 type="str"></msg1> - <msg2 type="str"></msg2> - </msgBox> - <editCloudRule ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_EditCloudRule"> - <_gbStep1 type="bool">False</_gbStep1> - <requestList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditCloudRule_requestList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">ANY</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">INVITE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">ACK</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">BYE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">CANCEL</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">OPTIONS</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">REGISTER</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">NOTIFY</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">SUBSCRIBE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">REFER</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">MESSAGE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">PRACK</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">INFO</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">UPDATE</str> - </item> - </requestList> - <reqList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditCloudRule_reqList" itemtype="ixConfig"/> - <_gbStep2 type="bool">False</_gbStep2> - <what type="int">2</what> - <reqLine type="int">1</reqLine> - <headerTypeList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditCloudRule_headerTypeList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">To</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">From</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Contact</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Also</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Authorization</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Call-ID</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Content-Length</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Content-Type</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">CSeq</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Event</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Proxy-Authenticate</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Proxy-Authorization</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">RAck</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Record-Route</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Refer-To</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Referred-By</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Replaces</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Route</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">RSeq</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Subscription-State</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Via</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">WWW-Authenticate</str> - </item> - </headerTypeList> - <headerType type="str">To</headerType> - <compactForm type="str">t</compactForm> - <occurFrom type="str">1</occurFrom> - <occurTo type="str">1</occurTo> - <whatExtract type="int">3</whatExtract> - <extractHeaderName type="bool">False</extractHeaderName> - <paramName type="str"></paramName> - <revHeaderOrder type="bool">False</revHeaderOrder> - <keepHeaderCrlf type="bool">False</keepHeaderCrlf> - <_gbStep3 type="bool">False</_gbStep3> - <usePosition type="int">0</usePosition> - <beginAfter type="bool">False</beginAfter> - <afterStr type="str"><</afterStr> - <afterOccur type="str">1</afterOccur> - <endBefore type="bool">False</endBefore> - <endStr type="str">></endStr> - <endOccur type="str">last</endOccur> - <positionFrom type="str">1</positionFrom> - <positionTo type="str">last</positionTo> - <_gbStep4 type="bool">False</_gbStep4> - <formulaSource type="int">0</formulaSource> - <formula type="str"></formula> - <phoneBookPath type="str"></phoneBookPath> - <phoneBookDodPath type="str"></phoneBookDodPath> - <btnPBBrowse type="int">0</btnPBBrowse> - </editCloudRule> - <cloudRules ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CloudRules"> - <rulesList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_CloudRules_rulesList" itemtype="ixConfig"/> - <cloudPhoneBooksAbsolutePath type="str">C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion</cloudPhoneBooksAbsolutePath> - </cloudRules> - <cloudServers ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_VoIP_cloudServers" itemtype="ixConfig"/> - <transferAddress ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TransferAddress"> - <symTransferStr type="str">None</symTransferStr> - <overridePhoneNo type="bool">False</overridePhoneNo> - <_useTPb type="int">0</_useTPb> - <_tBp type="str"><None></_tBp> - <_tBpPrv type="str"></_tBpPrv> - <_tPhone type="str">150[00000000-]</_tPhone> - <tPhoneType type="int">0</tPhoneType> - <tPhone type="str">150[00000000-]</tPhone> - <_tTelGrp type="bool">False</_tTelGrp> - <_ckTTelURIParams type="bool">False</_ckTTelURIParams> - <_tTelURIparams type="str">phone-context=example.com</_tTelURIparams> - <transTelPar type="str"></transTelPar> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_tBpPrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">overridePhoneNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_useTPb</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">transTelPar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_ckTTelURIParams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">symTransferStr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tPhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_tBp</item> - <item ref="3"/> - </item> - </_dict> - </state> - </transferAddress> - <editContact ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_EditContact"> - <useDomainName type="int">0</useDomainName> - <domainName type="str">mysipdomain.ixiacom.com</domainName> - <_useEPb type="int">0</_useEPb> - <_eBp type="str"><None></_eBp> - <_eBpPrv type="str"></_eBpPrv> - <_ePhone type="str">160[00000000-]</_ePhone> - <ePhoneType type="int">0</ePhoneType> - <ePhone type="str">160[00000000-]</ePhone> - <_eTelGrp type="bool">False</_eTelGrp> - <_ckETelURI type="bool">False</_ckETelURI> - <_eTelURIparams type="str">phone-context=example.com</_eTelURIparams> - <editTelPar type="str"></editTelPar> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_useEPb</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_eBpPrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">domainName</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_eBp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_ePhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_eTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_eTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">useDomainName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">editTelPar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_ckETelURI</item> - <item ref="1"/> - </item> - </_dict> - </state> - </editContact> - <dialPlan ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_DialPlan"> - <sourceIPs type="str"></sourceIPs> - <_useSPb type="int">0</_useSPb> - <_sBp type="str"><None></_sBp> - <_sBpPrv type="str"></_sBpPrv> - <_sPhone type="str">{{pncalled}}</_sPhone> - <srcPhoneType type="int">0</srcPhoneType> - <srcPhone type="str">{{pncalled}}</srcPhone> - <_sTelGrp type="bool">False</_sTelGrp> - <_ckSTelURIParams type="bool">False</_ckSTelURIParams> - <_sTelURIparams type="str">phone-context=example.com</_sTelURIparams> - <srcTelPar type="str"></srcTelPar> - <_sTelGrp1 type="bool">False</_sTelGrp1> - <_dTelGrp1 type="bool">False</_dTelGrp1> - <symDestStr type="str">None</symDestStr> - <ovrDestPhone type="bool">False</ovrDestPhone> - <_useDPb type="int">0</_useDPb> - <_dBp type="str"><None></_dBp> - <_dBpPrv type="str"></_dBpPrv> - <_dPhone type="str">170[00000000-]</_dPhone> - <destPhoneType type="int">0</destPhoneType> - <destPhone type="str">170[00000000-]</destPhone> - <_dTelGrp type="bool">False</_dTelGrp> - <_ckDTelURIParams type="bool">False</_ckDTelURIParams> - <_dTelURIparams type="str">phone-context=example.com</_dTelURIparams> - <destTelPar type="str"></destTelPar> - <enableEmergencyCalls type="bool">False</enableEmergencyCalls> - <useAnonymous type="bool">False</useAnonymous> - <makeEmergencyReg type="bool">False</makeEmergencyReg> - <emergencyService type="str">sos</emergencyService> - <emergencyServiceList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_DialPlan_emergencyServiceList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">sos</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">sos.ambulance</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">sos.fire</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">sos.police</str> - </item> - </emergencyServiceList> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_useSPb</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dTelGrp1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">sourceIPs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableEmergencyCalls</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_sPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dBpPrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">destPhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">destTelPar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useAnonymous</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">symDestStr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEmergencyDest</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_sBp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">makeEmergencyReg</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">destPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srcTelPar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEmergencySource</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_ckSTelURIParams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_dBp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">ovrDestPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_sTelGrp1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">emergencyServiceList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srcPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEmergency</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_sTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_UseSrv1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srcPhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_sBpPrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_sTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">emergencyService</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_useDPb</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_ckDTelURIParams</item> - <item ref="1"/> - </item> - </_dict> - </state> - </dialPlan> - <signalingSettings ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SignalingSettings"> - <enableSIP type="bool">True</enableSIP> - <port type="str">{{sipportcalled}}</port> - <tcpWriteImmediate type="bool">False</tcpWriteImmediate> - <fqdn type="bool">False</fqdn> - <realm type="str"></realm> - <user type="str">{{pncalled}}@{{domainname}}</user> - <passwd type="str">{{authpassword}}</passwd> - <akaConfCombo type="str"><None></akaConfCombo> - <akaConfComboSelIndex type="int">0</akaConfComboSelIndex> - <akaSharedSecretType type="int">0</akaSharedSecretType> - <akaOperatorVariantType type="int">0</akaOperatorVariantType> - <akaSharedSecretSequence type="str">ixia</akaSharedSecretSequence> - <akaAbsolutePath type="str">C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion</akaAbsolutePath> - <akaOperatorVariantSequence type="str">ixia</akaOperatorVariantSequence> - <akaSharedSecretSource type="int">0</akaSharedSecretSource> - <akaOperatorVariantSource type="int">0</akaOperatorVariantSource> - <akaExportComplete type="int">0</akaExportComplete> - <akaUseOPasOPC type="bool">False</akaUseOPasOPC> - <milenageConfCombo type="str"><Default></milenageConfCombo> - <milenage_c1 type="str">00000000000000000000000000000000</milenage_c1> - <milenage_c2 type="str">00000000000000000000000000000001</milenage_c2> - <milenage_c3 type="str">00000000000000000000000000000002</milenage_c3> - <milenage_c4 type="str">00000000000000000000000000000004</milenage_c4> - <milenage_c5 type="str">00000000000000000000000000000008</milenage_c5> - <milenage_r1 type="int">64</milenage_r1> - <milenage_r2 type="int">0</milenage_r2> - <milenage_r3 type="int">32</milenage_r3> - <milenage_r4 type="int">64</milenage_r4> - <milenage_r5 type="int">96</milenage_r5> - <enableTos type="bool">False</enableTos> - <tos type="int">0</tos> - <customSipTos type="str">0x00</customSipTos> - <tosVal type="int">0</tosVal> - <ovrTrans type="bool">False</ovrTrans> - <ovrTransOption type="int">0</ovrTransOption> - <useServer type="bool">True</useServer> - <srvAddr type="str">{{iplistims}}</srvAddr> - <srvPort type="str">5060</srvPort> - <srvDomain type="str">{{domainname}}</srvDomain> - <outboundProxy type="bool">False</outboundProxy> - <useDnsSrv type="bool">False</useDnsSrv> - <registrarSrv type="bool">True</registrarSrv> - <autoRegister type="bool">True</autoRegister> - <overrideRegistrar type="bool">False</overrideRegistrar> - <overrideRegistrarAddress type="str">IP:PORT</overrideRegistrarAddress> - <ovrContact type="bool">False</ovrContact> - <ovrDest type="bool">True</ovrDest> - <ovrDestHostPort type="str">{{domainname}}</ovrDestHostPort> - <nUdpMaxSize type="int">2048</nUdpMaxSize> - <enableSigComp type="bool">False</enableSigComp> - <telURISource type="bool">False</telURISource> - <telURIDest type="bool">False</telURIDest> - <securityMechanismValList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_SignalingSettings_securityMechanismValList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SecurityMechanismVal"> - <checked type="bool">False</checked> - <mechanism type="str">ipsec-3gpp</mechanism> - <algorithm type="int">0</algorithm> - <algorithmStr type="str">hmac-sha-1-96</algorithmStr> - <protocol type="int">0</protocol> - <protocolStr type="str">esp</protocolStr> - <mode type="int">0</mode> - <modeStr type="str">trans</modeStr> - <encrypt_algorithm type="int">0</encrypt_algorithm> - <encrypt_algorithmStr type="str">aes-cbc</encrypt_algorithmStr> - <spi_start_idx type="int">255</spi_start_idx> - <port_c type="str">[3000-4000]</port_c> - <port_s type="str">4060</port_s> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">protocol</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">encrypt_algorithmStr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">algorithm</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">modeStr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">protocolStr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">mechanism</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">algorithmStr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">mode</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">port_s</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">port_c</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">spi_start_idx</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">encrypt_algorithm</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">checked</item> - <item ref="1"/> - </item> - </_dict> - </state> - </item> - </securityMechanismValList> - <useIPSecDoubleSPIPatch type="bool">False</useIPSecDoubleSPIPatch> - <enablePeriodicDNSQueries type="bool">False</enablePeriodicDNSQueries> - <DNSTimeoutValue type="int">60</DNSTimeoutValue> - <skipDeleteDNSRecordsAtLoopEnd type="bool">False</skipDeleteDNSRecordsAtLoopEnd> - <enableVoLTE type="bool">False</enableVoLTE> - <mediaBearerType type="int">0</mediaBearerType> - <enableCCDedicatedBearer type="bool">True</enableCCDedicatedBearer> - <volte_grbox type="bool">False</volte_grbox> - <_enableAutoHeaders type="bool">False</_enableAutoHeaders> - <_btnAutoHeaders type="bool">False</_btnAutoHeaders> - <dontEndMediaOnBye type="bool">False</dontEndMediaOnBye> - <closeTCPConnectionsOnRampdown type="bool">False</closeTCPConnectionsOnRampdown> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_gbSrvSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaSharedSecretType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_btnAutoHeaders</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpWriteImmediate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrDest</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableAutoHeaders</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSIP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fqdn</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaSharedSecretSource</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenageConfCombo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c5</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaConfCombo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_UseSrv1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaOperatorVariantType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">overrideRegistrar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">port</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">registrarSrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r5</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbRetransmissions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tos</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">user</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaOperatorVariantSource</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">telURISource</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useServer</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">nUdpMaxSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">retransmit1xx</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srvDomain</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_btnEditContact1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">telURIDest</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enablePeriodicDNSQueries</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useIPSecDoubleSPIPatch</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">securityMechanismValList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">skipDeleteDNSRecordsAtLoopEnd</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">overrideRegistrarAddress</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srvAddr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrDestHostPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">DNSTimeoutValue</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tosVal</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">passwd</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">T2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">autoRegister</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">T1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSigComp</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">akaOperatorVariantSequence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableVoLTE</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">retransmitACK</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaSharedSecretSequence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">volte_grbox</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">customSipTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dontEndMediaOnBye</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">realm</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaExportComplete</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">mediaBearerType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbPeriodicDNSQuery</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableRetransmissions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaUseOPasOPC</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_ovrDest1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">outboundProxy</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ignoreRetransmissions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">closeTCPConnectionsOnRampdown</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrContact</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaAbsolutePath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">serverAddresses</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableCCDedicatedBearer</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaConfComboSelIndex</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbCustomTos</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">ovrTrans</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useDnsSrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrTransOption</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_enableSIP2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableSIP1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srvPort</item> - <item ref="1"/> - </item> - </_dict> - </state> - </signalingSettings> - <timerSettings ver="[2, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TimerSettings"> - <enableTimers type="bool">True</enableTimers> - <expirationValList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_TimerSettings_expirationValList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ExpirationVal"> - <checked type="bool">True</checked> - <message type="str">REGISTER</message> - <msgPart type="int">0</msgPart> - <msgPartStr type="str">Expires Header(s)</msgPartStr> - <value type="int">3600</value> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">message</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">msgPart</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">checked</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">value</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msgPartStr</item> - <item ref="1"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ExpirationVal"> - <checked type="bool">True</checked> - <message type="str">INVITE</message> - <msgPart type="int">2</msgPart> - <msgPartStr type="str">Session-Expire(s)</msgPartStr> - <value type="int">90</value> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">message</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">msgPart</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">checked</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">value</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msgPartStr</item> - <item ref="1"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ExpirationVal"> - <checked type="bool">True</checked> - <message type="str">UPDATE</message> - <msgPart type="int">2</msgPart> - <msgPartStr type="str">Session-Expire(s)</msgPartStr> - <value type="int">90</value> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">message</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">msgPart</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">checked</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">value</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msgPartStr</item> - <item ref="1"/> - </item> - </_dict> - </state> - </item> - </expirationValList> - <sessionRefreshType type="int">1</sessionRefreshType> - <refreshAfterSecs type="int">3000</refreshAfterSecs> - <refreshAfterPercent type="int">50</refreshAfterPercent> - <refreshInSecs type="int">32</refreshInSecs> - <enableRetransmissions type="bool">False</enableRetransmissions> - <T1 type="int">500</T1> - <T2 type="int">4000</T2> - <ignoreRetransmissions type="bool">True</ignoreRetransmissions> - <retransmitACK type="bool">True</retransmitACK> - <stopActiveRetr type="bool">True</stopActiveRetr> - <retransmit1xx type="bool">False</retransmit1xx> - <ovrTimeout type="bool">False</ovrTimeout> - <minInterReregister type="int">0</minInterReregister> - <autoEndCall2 type="bool">False</autoEndCall2> - <enableAutoPRACK type="bool">False</enableAutoPRACK> - <rprSendNegotiatedSDP type="bool">False</rprSendNegotiatedSDP> - <rprTimeUntilNextRPR type="int">150</rprTimeUntilNextRPR> - <rprScenarioHasPRACK type="bool">False</rprScenarioHasPRACK> - <auto4xx type="bool">False</auto4xx> - <auto4xxAbort type="bool">False</auto4xxAbort> - <autoProcedureList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_TimerSettings_autoProcedureList" itemtype="ixConfig"/> - <autoProceduresCount type="int">0</autoProceduresCount> - <procListChanged type="bool">True</procListChanged> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">btnRefreshProcList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">autoEndCall</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ignoreRetransmissions</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">minInterReregister</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">autoEndCall2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTimers</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">refreshInSecs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">retransmit1xx</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableTimers</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">sessionRefreshType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">auto4xx</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">retransmitACK</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">procListChanged</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">T2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">autoProcedureList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbAutoPRACK</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">T1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">refreshAfterPercent</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableAutoPRACK</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">stopActiveRetr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableRetransmissions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rprTimeUntilNextRPR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rprScenarioHasPRACK</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">expirationValList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">refreshAfterSecs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">autoProceduresCount</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">auto4xxAbort</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">rprSendNegotiatedSDP</item> - <item ref="1"/> - </item> - </_dict> - </state> - </timerSettings> - <advancedSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AdvancedSettings"> - <useCloud type="bool">False</useCloud> - <_useCloud1 type="bool">False</_useCloud1> - <cloud type="str"><None></cloud> - <serverRules ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AdvancedSettings_serverRules" itemtype="ixConfig"/> - <enableVirtualIPs type="bool">False</enableVirtualIPs> - <virtualIPTable ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AdvancedSettings_virtualIPTable" itemtype="ixConfig"/> - <ovrCloudRules type="bool">False</ovrCloudRules> - <_ovrCloudRules1 type="bool">False</_ovrCloudRules1> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_gbVirtualIPs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">useCloud</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrCloudRules</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_ovrCloudRules1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">cloud</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableVirtualIPs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">virtualIPTable</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">serverRules</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_useCloud1</item> - <item ref="3"/> - </item> - </_dict> - </state> - </advancedSettings> - <tlsSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsSettings"> - <enableTLS type="bool">False</enableTLS> - <enableDTLS type="bool">False</enableDTLS> - <enableTLS_MSRP type="bool">False</enableTLS_MSRP> - <enableTLS_HTTP type="bool">False</enableTLS_HTTP> - <_enableTLS1 type="bool">False</_enableTLS1> - <_enableTLS2 type="bool">False</_enableTLS2> - <_enableTLS3 type="bool">False</_enableTLS3> - <tlsPort type="str">5061</tlsPort> - <tlsProtocol type="int">3</tlsProtocol> - <tlsSessionRefresh type="bool">False</tlsSessionRefresh> - <_tlsSessionRefresh type="bool">False</_tlsSessionRefresh> - <tlsRefreshInterval type="int">3600</tlsRefreshInterval> - <tlsAuthClient type="int">0</tlsAuthClient> - <tlsReuseConnection type="bool">False</tlsReuseConnection> - <_tlsReuseConnection type="bool">False</_tlsReuseConnection> - <ignoreSubjectAltName type="bool">False</ignoreSubjectAltName> - <tlsMutual type="bool">False</tlsMutual> - <_gbTlsMutual type="bool">False</_gbTlsMutual> - <tlsCyphers ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_TlsSettings_tlsCyphers" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-ECDSA-AES128-GCM-SHA256</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-ECDSA-AES256-GCM-SHA384</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-RSA-AES128-GCM-SHA256</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-ECDSA-AES256-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-ECDSA-AES128-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-RSA-AES128-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">AES128-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">AES256-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-ECDSA-AES256-SHA384</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-ECDSA-AES128-SHA256</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-RSA-AES256-GCM-SHA384</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-RSA-AES128-SHA256</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-RSA-AES256-SHA384</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">DES-CBC-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">DES-CBC3-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP-DES-CBC-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP-RC2-CBC-MD5</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP-RC4-MD5</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP1024-DES-CBC-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP1024-RC4-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">IDEA-CBC-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">NULL-MD5</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">NULL-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">RC4-MD5</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">RC4-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - </tlsCyphers> - <tlsCertificatesPath type="str">C:\Program Files (x86)\Ixia\IxLoad\8.20-EA\aptixia\data\SSL_Certificates</tlsCertificatesPath> - <tlsPrivateKeyCertificate type="str">Unsecured_RSA_key_1024.pem</tlsPrivateKeyCertificate> - <tlsPublicKeyCertificate type="str">Unsecured_RSA_cert_1024.pem</tlsPublicKeyCertificate> - <tlsKeyType type="int">0</tlsKeyType> - <tlsCertType type="int">0</tlsCertType> - <tlsPassword type="str"></tlsPassword> - <sipScheme type="int">0</sipScheme> - <tlsTransportType type="int">0</tlsTransportType> - <tlsDisableUdpAndTcp type="bool">True</tlsDisableUdpAndTcp> - <tlsEnableTcpKeepAlive type="bool">False</tlsEnableTcpKeepAlive> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">tlsCertType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsPassword</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ignoreSubjectAltName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsPrivateKeyCertificate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsTransportType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTLS_HTTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsCyphers</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsProtocol</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsKeyType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tlsSessionRefresh</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tlsCertificatesPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsEnableTcpKeepAlive</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTlsMutual</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tlsPublicKeyCertificate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableCert</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableTLS</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsAuthClient</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsMutual</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableTLS4</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_enableTLS1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_enableTLS2</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_enableTLS3</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableDTLS</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTLS_MSRP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsReuseConnection</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsRefreshInterval</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsSessionRefresh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsDisableUdpAndTcp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">sipScheme</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tlsReuseConnection</item> - <item ref="3"/> - </item> - </_dict> - </state> - </tlsSettings> - <dtlsOptions ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_DtlsOptions"> - <dtlsRetry type="int">200</dtlsRetry> - <dtlsTimeout type="int">30000</dtlsTimeout> - <dtlsSessionTicket type="bool">False</dtlsSessionTicket> - </dtlsOptions> - <iceOptions ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_IceOptions"> - <iceRetryCount type="int">6</iceRetryCount> - <iceInitialRetry type="int">100</iceInitialRetry> - <iceTimeout type="int">30000</iceTimeout> - </iceOptions> - <otherSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_OtherSettings"> - <VOIP_Var0 type="str"></VOIP_Var0> - <VOIP_Var1 type="str"></VOIP_Var1> - <VOIP_Var2 type="str"></VOIP_Var2> - <VOIP_Var3 type="str"></VOIP_Var3> - <VOIP_Var4 type="str"></VOIP_Var4> - <VOIP_IPAddress0 type="str"></VOIP_IPAddress0> - <VOIP_IPAddress1 type="str"></VOIP_IPAddress1> - <VOIP_IPAddress2 type="str"></VOIP_IPAddress2> - <VOIP_IPAddress3 type="str"></VOIP_IPAddress3> - <VOIP_IPAddress4 type="str"></VOIP_IPAddress4> - <ipPreference type="int">0</ipPreference> - <bUseHardcoded type="bool">False</bUseHardcoded> - <_gbHardcodedForDemo type="bool">False</_gbHardcodedForDemo> - <_gbStunSettings type="bool">False</_gbStunSettings> - <bUseStun type="bool">False</bUseStun> - <stunAddr type="str">127.0.0.1</stunAddr> - <stunPort type="str">3478</stunPort> - <bUseIce type="bool">False</bUseIce> - <bIceLite type="bool">False</bIceLite> - <_gbSRVCCSettings type="bool">False</_gbSRVCCSettings> - <bUseSRVCC type="bool">False</bUseSRVCC> - <mobilityPath type="str"></mobilityPath> - <ddgGroupboxSRVCC type="bool">False</ddgGroupboxSRVCC> - <PCO_Groupbox type="bool">False</PCO_Groupbox> - <bUsePCO type="bool">False</bUsePCO> - <_gbPCO type="bool">False</_gbPCO> - <PCO_List type="str"></PCO_List> - <useBHCA type="bool">False</useBHCA> - <loadVariablesFromCsv type="bool">False</loadVariablesFromCsv> - <pathForCsvWithVariables type="str"></pathForCsvWithVariables> - <absolutePathForCsvWithVariables type="str"></absolutePathForCsvWithVariables> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_gbIceSettings</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbPCO</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress0</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bUseIce</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">mobilityPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var0</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbStunSettings</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">PCO_List</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbSRVCCSettings</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">absolutePathForCsvWithVariables</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bIceLite</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">PCO_Groupbox</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">bUseHardcoded</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">bUseSRVCC</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useBHCA</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ipPreference</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnBrowseForVariableCsv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bUsePCO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">stunPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bUseStun</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">stunAddr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ddgGroupboxSRVCC</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">_gbHardcodedForDemo</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">pathForCsvWithVariables</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">DodPathForCsvWithVariables</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_varCsvGroupBox</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loadVariablesFromCsv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var4</item> - <item ref="1"/> - </item> - </_dict> - </state> - </otherSettings> - <smsSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSSettings"> - <enableSMS type="bool">False</enableSMS> - <requestURI type="str">sc.home1.net</requestURI> - <enableTelURI type="bool">False</enableTelURI> - <telURI type="str">phone-context=example</telURI> - <smscPhoneNo type="str">61814712345</smscPhoneNo> - <smscTypeOfNo type="int">0</smscTypeOfNo> - <smscNumberingPlan type="int">0</smscNumberingPlan> - <enableSMOrigOverrideDest type="bool">False</enableSMOrigOverrideDest> - <btnSMOrigEdit type="bool">False</btnSMOrigEdit> - <enableSMOrigReqStatusReport type="bool">False</enableSMOrigReqStatusReport> - <enableSMOrigReplyPath type="bool">False</enableSMOrigReplyPath> - <smsAddressOriginator ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSAddressInfo"> - <phoneType type="bool">False</phoneType> - <phoneValue type="str">160[00000000-]</phoneValue> - <comboPhoneBookEntry type="str"><None></comboPhoneBookEntry> - </smsAddressOriginator> - <smOrigTypeOfNo type="int">0</smOrigTypeOfNo> - <smOrigNumberingPlan type="int">0</smOrigNumberingPlan> - <enableSMRecipOverrideSrc type="bool">False</enableSMRecipOverrideSrc> - <btnSMRecipEdit type="bool">False</btnSMRecipEdit> - <enableSMRecipReqStatusReport type="bool">False</enableSMRecipReqStatusReport> - <enableSMRecipReplyPath type="bool">False</enableSMRecipReplyPath> - <smsAddressRecipient ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSAddressInfo"> - <phoneType type="bool">False</phoneType> - <phoneValue type="str">160[00000000-]</phoneValue> - <comboPhoneBookEntry type="str"><None></comboPhoneBookEntry> - </smsAddressRecipient> - <smRecipTypeOfNo type="int">0</smRecipTypeOfNo> - <smRecipNumberingPlan type="int">0</smRecipNumberingPlan> - <depActivities ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_SMSSettings_depActivities" itemtype="ixConfig"/> - <useFilesFromActivity type="bool">False</useFilesFromActivity> - <verifyUserInfo type="bool">False</verifyUserInfo> - <smsImportFilesActivity type="str">None</smsImportFilesActivity> - <smsActivityForFiles type="int">0</smsActivityForFiles> - <pcpuCommonPath type="str"></pcpuCommonPath> - <smsFiles ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_SMSSettings_smsFiles" itemtype="ixConfig"/> - <smsFilesCount type="int">0</smsFilesCount> - <grBoxSMServiceCenter type="bool">False</grBoxSMServiceCenter> - <grBoxSMOriginator type="bool">False</grBoxSMOriginator> - <grBoxSMRecipient type="bool">False</grBoxSMRecipient> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">smOrigNumberingPlan</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsFiles</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableSMS</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSMOrigReplyPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsFilesCount</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnSMRecipEdit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableSMOrigReqStatusReport</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">grBoxSMRecipient</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableSMRecipOverrideSrc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">grBoxSMOriginator</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">smsAddressOriginator</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">telURI</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">depActivities</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">pcpuCommonPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smOrigTypeOfNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smRecipTypeOfNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">requestURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsFilesBackup</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsAddressRecipient</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useFilesFromActivity</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">smRecipNumberingPlan</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smscPhoneNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsImportFilesActivity</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableSMRecipReplyPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnSMOrigEdit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">smscNumberingPlan</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">duringLoadFromBackup</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSMRecipReqStatusReport</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">grBoxSMServiceCenter</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">verifyUserInfo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">smscTypeOfNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSMOrigOverrideDest</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsActivityForFiles</item> - <item ref="1"/> - </item> - </_dict> - </state> - </smsSettings> - <smsFilesAdd ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSFilesAdd"> - <loadedFileType type="int">0</loadedFileType> - <fileName type="str"></fileName> - <ixSmsFileName type="str"></ixSmsFileName> - <ixSmsFilePath type="str"></ixSmsFilePath> - <segmentOrder type="str"></segmentOrder> - <totalTpudSize type="str"></totalTpudSize> - <segmentNo type="str">0</segmentNo> - <comboCoding type="int">0</comboCoding> - <comboRefNo type="int">0</comboRefNo> - <contentViewEdit type="str"></contentViewEdit> - <contentViewShow type="str"></contentViewShow> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">contentViewShow</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">ixSmsFilePath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">contentViewEdit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">segmentOrder</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">comboRefNo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">loadedFileType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnSmsLoadFiles</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ixSmsFileName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnSmsSaveAs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fileName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">segmentNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">totalTpudSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">comboCoding</item> - <item ref="3"/> - </item> - </_dict> - </state> - </smsFilesAdd> - <smsAddressOriginator ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSAddress"> - <radioBtnPhoneNo type="int">0</radioBtnPhoneNo> - <comboPhoneBook type="str"><None></comboPhoneBook> - <phoneBookPreview type="str"></phoneBookPreview> - <userPattern type="str">160[00000000-]</userPattern> - <ePhoneType type="int">0</ePhoneType> - <ePhone type="str">160[00000000-]</ePhone> - <fakeEnableTelURI type="bool">False</fakeEnableTelURI> - <fakeTelURI type="str"></fakeTelURI> - <fakeTelToPort type="str"></fakeTelToPort> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">userPattern</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">phoneBookPreview</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeEnableTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">comboPhoneBook</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">fakeTelToPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">radioBtnPhoneNo</item> - <item ref="1"/> - </item> - </_dict> - </state> - </smsAddressOriginator> - <smsAddressRecipient ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSAddress"> - <radioBtnPhoneNo type="int">0</radioBtnPhoneNo> - <comboPhoneBook type="str"><None></comboPhoneBook> - <phoneBookPreview type="str"></phoneBookPreview> - <userPattern type="str">160[00000000-]</userPattern> - <ePhoneType type="int">0</ePhoneType> - <ePhone type="str">160[00000000-]</ePhone> - <fakeEnableTelURI type="bool">False</fakeEnableTelURI> - <fakeTelURI type="str"></fakeTelURI> - <fakeTelToPort type="str"></fakeTelToPort> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">userPattern</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">phoneBookPreview</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeEnableTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">comboPhoneBook</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">fakeTelToPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">radioBtnPhoneNo</item> - <item ref="1"/> - </item> - </_dict> - </state> - </smsAddressRecipient> - <compatibility ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Compatibility"> - <hasRtpChMapRules type="bool">True</hasRtpChMapRules> - </compatibility> - <editAutoHeaderRule ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_EditAutoHeaderRule"> - <defaultMessagesList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditAutoHeaderRule_defaultMessagesList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">INVITE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">ACK</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">BYE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">CANCEL</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">OPTIONS</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">REGISTER</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">NOTIFY</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">SUBSCRIBE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">REFER</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">MESSAGE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">PRACK</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">INFO</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">UPDATE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">100 (Trying)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">180 (Ringing)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">181 (Call Is Being Forwarded)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">182 (Queued)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">183 (Session Progress)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">200 (OK)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">202 (Accepted)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">300 (Multiple Choices)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">301 (Moved Permanently)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">302 (Moved Temporarily)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">305 (Use Proxy)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">380 (Alternative Service)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">400 (Bad Request)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">401 (Unauthorized)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">402 (Payment Required)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">403 (Forbidden)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">404 (Not Found)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">405 (Method Not Allowed)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">406 (Not Acceptable)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">407 (Proxy Authentication Required)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">408 (Request Timeout)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">410 (Gone)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">413 (Request Entity Too Large)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">414 (Request-URI Too Large)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">415 (Unsupported Media Type)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">416 (Unsupported URI Scheme)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">420 (Bad Extension)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">421 (Extension Required)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">423 (Interval Too Brief)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">480 (Temporarily not available)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">481 (Call Leg/Transaction Does Not Exist)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">482 (Loop Detected)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">483 (Too Many Hops)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">484 (Address Incomplete)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">485 (Ambiguous)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">486 (Busy Here)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">487 (Request Terminated)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">488 (Not Acceptable Here)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">491 (Request Pending)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">493 (Undecipherable)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">500 (Internal Server Error)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">501 (Not Implemented)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">502 (Bad Gateway)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">503 (Service Unavailable)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">504 (Server Time-out)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">505 (SIP Version not supported)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">513 (Message Too Large)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">600 (Busy Everywhere)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">603 (Decline)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">604 (Does not exist anywhere)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">606 (Not Acceptable)</str> - </item> - </defaultMessagesList> - <messagesList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditAutoHeaderRule_messagesList" itemtype="ixConfig"/> - <autoHeaderTypeList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditAutoHeaderRule_autoHeaderTypeList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Request-Uri</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Via</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">From</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">To</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Call-ID</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">CSeq</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Contact</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Content-Length</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Route</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Record-Route</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Authorization</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Proxy-Authorization</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Referred-By</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Replaces</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Event</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">RAck</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">RSeq</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Refer-To</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Subscription-State</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">WWW-Authenticate</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Also</str> - </item> - </autoHeaderTypeList> - <autoHeaderType type="str">To</autoHeaderType> - <option type="int">0</option> - <appendToUri type="bool">False</appendToUri> - <headerValue type="str"></headerValue> - <parsedHeader ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditAutoHeaderRule_parsedHeader" itemtype="ixConfig"/> - <valid type="bool">True</valid> - </editAutoHeaderRule> - <autoHeadersSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AutoHeadersSettings"> - <enableAutoHeaders type="bool">False</enableAutoHeaders> - <tableRules ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AutoHeadersSettings_tableRules" itemtype="ixConfig"/> - <reqAutoHeadRules ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AutoHeadersSettings_reqAutoHeadRules" itemtype="ixConfig"/> - <respAutoHeadRules ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AutoHeadersSettings_respAutoHeadRules" itemtype="ixConfig"/> - </autoHeadersSettings> - <sipAdvSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SipAdvancedSettings"> - <overrideTCPLocalPort type="bool">False</overrideTCPLocalPort> - <tcpLocalPortStart type="int">40000</tcpLocalPortStart> - <tcpLocalPortEnd type="int">60000</tcpLocalPortEnd> - <tcpLocalPortStep type="int">1</tcpLocalPortStep> - <closeNonsecureTcpConnectionsEnable type="bool">False</closeNonsecureTcpConnectionsEnable> - <closeIdleTcpConnectionsEnable type="bool">False</closeIdleTcpConnectionsEnable> - <tcpIdlePeriod type="int">10</tcpIdlePeriod> - <donotCloseTCPInsideCallEnable type="bool">False</donotCloseTCPInsideCallEnable> - <recordingServerEnable type="bool">False</recordingServerEnable> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">tcpIdlePeriod</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tcpEndPortLabel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpIdlePeriodLabel</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">donotCloseTCPInsideCallEnable</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tcpPortStepLabel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpLocalPortStep</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpLocalPortEnd</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpStartPortLabel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpLocalPortStart</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">closeIdleTcpConnectionsEnable</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">recordingServerEnable</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">overrideTCPLocalPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">closeNonsecureTcpConnectionsEnable</item> - <item ref="1"/> - </item> - </_dict> - </state> - </sipAdvSettings> - </pm> - <objectID type="int">1</objectID> - <_apiUniqueId type="int">16522</_apiUniqueId> - <uniqueID type="int">43</uniqueID> - <commandIdCounter type="int">3</commandIdCounter> - <networkPluginSettings ver="[0]" type="ixNetworkActivityPluginSupport"> - <serializedNetworkSettingsMap ver="[0, [0, [0]]]" type="ixOrderedDict"> - <_dict type="list"/> - </serializedNetworkSettingsMap> - <protocolName type="str">VoIP</protocolName> - </networkPluginSettings> - </item> - </agentList> - </traffic> - <network ver="[17, [1, [6, [1, [0, [0]]]]]]" type="ixNetworkGroup"> - <resourceSyncTimeStamp type="NoneType">None</resourceSyncTimeStamp> - <name type="str">VM2</name> - <role type="str">Both</role> - <networkType type="str">none</networkType> - <aggregation type="int">0</aggregation> - <lineSpeed type="str">Default</lineSpeed> - <cpuAggregation type="bool">False</cpuAggregation> - <chassisChain ref="6"/> - <cardType type="str">Ixia Virtual Load Module</cardType> - <activePortList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixNetworkPortListSequenceContainer" itemtype="ixConfig"/> - <portList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" oid="13" type="ixNetworkPortListSequenceContainer" itemtype="ixConfig"> - <item ver="[3, [1, [1, [0, [0]]]]]" type="ixPort"> - <chassisId type="int">1</chassisId> - <cardId type="int">2</cardId> - <portId type="int">1</portId> - <enableCapture type="bool">False</enableCapture> - <cardType type="str">Ixia Virtual Load Module</cardType> - <portPersistentSetting ver="[0, [1, [0, [0]]]]" type="ixPortPersistentSetting"> - <viewFilter type="NoneType">None</viewFilter> - </portPersistentSetting> - <analyzerPartialCapture type="str">False;8192</analyzerPartialCapture> - <name type="str"></name> - <afmPort type="NoneType">None</afmPort> - </item> - </portList> - <comment type="str"></comment> - <networkRangeList ver="[0, [2, [0, [3, [0, [0, [0], [0]], [0]]]]]]" type="ixNetworkRangeListSequenceContainer" itemtype="ixNetworkRange"> - <item ver="[13, [1, [1, [1, [0, [0]]]]]]" oid="7" type="ixNetworkRange"> - <_smRangeObjectId type="str">c69dae97-f1c2-4505-aedb-3f9ca3f4d02a</_smRangeObjectId> - <name type="str">Network Range IP-R2 in VM2 ({{ipcard2}}+1)</name> - <rangeGroup ver="[3, [0, [1, [0, [0]]]]]" oid="8" type="ixIpDistributionGroup"> - <name type="str">DistGroup1</name> - <ipDistributionMethod type="str">consecutiveIps</ipDistributionMethod> - <objectID type="int">0</objectID> - <_apiUniqueId type="int">16512</_apiUniqueId> - <_networkRangeList ver="[0, [3, [0, [0, [0], [0]], [0]]]]" type="ixWeakrefSequenceContainer" itemtype="ixBasicNetworkRange"> - <item ref="7"/> - </_networkRangeList> - <_rangeGroupObjectId type="str">de9d629b-e0dc-41f5-99cb-5aa8a808ceee</_rangeGroupObjectId> - <_smPluginObjectId type="str">e53ae54e-ab21-4997-b532-e9bd58210050</_smPluginObjectId> - </rangeGroup> - <enableStats type="bool">False</enableStats> - </item> - </networkRangeList> - <layerPlugins type="NoneType">None</layerPlugins> - <stack type="NoneType">None</stack> - <rangeGroupList ver="[1, [0, [0, [3, [0, [0, [0], [0]], [0]]]]]]" type="ixIpDistributionGroupList" itemtype="ixIpDistributionGroup"> - <item ref="8"/> - </rangeGroupList> - <dynamicControlPlaneSetting type="int">0</dynamicControlPlaneSetting> - <linkLayerOptions type="int">0</linkLayerOptions> - <ipSourcePortFrom type="int">1024</ipSourcePortFrom> - <ipSourcePortTo type="int">65535</ipSourcePortTo> - <emulatedRouterGateway type="str">0.0.0.0</emulatedRouterGateway> - <emulatedRouterSubnet type="str">255.255.0.0</emulatedRouterSubnet> - <emulatedRouterGatewayIPv6 type="str">::</emulatedRouterGatewayIPv6> - <emulatedRouterSubnetIPv6 type="str">FFFF:FFFF:FFFF:FFFF:FFFF:FFFF::0</emulatedRouterSubnetIPv6> - <emulatedRouterIpAddressPool ver="[3, [0, [0, [0], [0]], [0]]]" type="ixConfigSequenceContainer" itemtype="ixEmulatedRouterIpAddressRange"/> - <macMappingMode type="int">0</macMappingMode> - <arpSettings ver="[0, [1, [0, [0]]]]" type="ixArpSettings"> - <gratuitousArp type="bool">True</gratuitousArp> - <processGratArp type="bool">False</processGratArp> - </arpSettings> - <dnsParameters ver="[1, [1, [0, [0]]]]" type="ixDns"> - <enable type="int">0</enable> - <cacheTimeout type="int">30000</cacheTimeout> - <serverList ver="[3, [0, [0, [0], [0]], [0]]]" type="ixConfigSequenceContainer" itemtype="_ixDnsServerItem"/> - <suffixList ver="[3, [0, [0, [0], [0]], [0]]]" type="ixConfigSequenceContainer" itemtype="_ixDnsSuffixItem"/> - </dnsParameters> - <tcpParameters ver="[0, [1, [0, [0]]]]" type="ixTcpParameters"> - <tcpParametersFull ver="[4, [1, [0, [0]]]]" oid="9" type="ixTcpParametersFull"> - <enableCongestionNotification type="bool">False</enableCongestionNotification> - <enableTimeStamp type="bool">True</enableTimeStamp> - <timeWaitRecycle type="bool">True</timeWaitRecycle> - <timeWaitReuse type="bool">False</timeWaitReuse> - <enableTxBwLimit type="bool">False</enableTxBwLimit> - <txBwLimitUnit type="int">0</txBwLimitUnit> - <txBwLimit type="int">1024</txBwLimit> - <enableRxBwLimit type="bool">False</enableRxBwLimit> - <rxBwLimitUnit type="int">0</rxBwLimitUnit> - <rxBwLimit type="int">1024</rxBwLimit> - <finTimeout type="int">60</finTimeout> - <keepAliveInterval type="int">75</keepAliveInterval> - <keepAliveProbes type="int">9</keepAliveProbes> - <keepAliveTime type="int">7200</keepAliveTime> - <synRetries type="int">5</synRetries> - <synAckRetries type="int">5</synAckRetries> - <retransmitRetries type="int">5</retransmitRetries> - <transmitBuffer type="int">4096</transmitBuffer> - <receiveBuffer type="int">4096</receiveBuffer> - <tcpSack type="bool">True</tcpSack> - <windowScaling type="bool">False</windowScaling> - <rtoMin type="int">200</rtoMin> - <rtoMax type="int">120000</rtoMax> - </tcpParametersFull> - <tcpParametersFull ref="9"/> - </tcpParameters> - <impairment ver="[5, [1, [0, [0]]]]" type="ixImpairment"> - <enable type="bool">False</enable> - <addDelay type="bool">False</addDelay> - <addReorder type="bool">False</addReorder> - <addDrop type="bool">False</addDrop> - <addDuplicate type="bool">False</addDuplicate> - <randomizeSeed type="bool">False</randomizeSeed> - <delay type="int">1</delay> - <reorder type="int">1</reorder> - <reorderLength type="int">1</reorderLength> - <sourcePort type="int">0</sourcePort> - <destinationPort type="int">0</destinationPort> - <drop type="int">1</drop> - <duplicate type="int">1</duplicate> - <jitter type="int">0</jitter> - <gap type="int">1</gap> - <destinationIp type="str">any</destinationIp> - <typeOfService type="str">any</typeOfService> - <protocol type="str">any</protocol> - <addFragmentation type="bool">False</addFragmentation> - <fragmentationType type="str">FragmentationPercent</fragmentationType> - <fragmentPercent type="int">50</fragmentPercent> - <mtu type="int">1000</mtu> - <fragmentSequenceSkip type="int">1</fragmentSequenceSkip> - <fragmentSequenceLength type="int">1</fragmentSequenceLength> - <_seed type="int">1</_seed> - </impairment> - <_portGroupId type="str">b1fbd381-b769-4ec1-8715-299508ecb458</_portGroupId> - <_smExternalLinks ver="[0, [1, [0, [0]]]]" type="_smExternalLinkersMap"> - <externalLinks type="dict"/> - </_smExternalLinks> - <smVersion type="int">1</smVersion> - </network> - <activityParameters ver="[2, [0, [0, [3, [0, [0, [0], [0]], [0]]]]]]" type="ixActivityParametersList" itemtype="ixActivityParameters"> - <item ver="[0, [19, [1, [1, [0, [0]]]]]]" oid="25" type="ixActivity"> - <agent ref="10"/> - <protocolAndType type="str">VoIP Peer</protocolAndType> - <name type="str">CALLED</name> - <enable type="bool">True</enable> - <timeline ver="[2, [1, [1, [0, [0]]]]]" oid="11" type="ixTimeline"> - <name type="str">Timeline2</name> - <iterationTime type="int">2014</iterationTime> - <totalTime type="int">2014</totalTime> - <iterations type="int">1</iterations> - <standbyTime type="int">0</standbyTime> - <offlineTime type="int">0</offlineTime> - <sustainTime type="int">4953</sustainTime> - <rampUpType type="int">0</rampUpType> - <rampUpValue type="int">{{activecalls}}</rampUpValue> - <rampUpInterval type="int">1</rampUpInterval> - <rampUpTime type="int">1</rampUpTime> - <rampDownTime type="int">20</rampDownTime> - <rampDownValue type="int">0</rampDownValue> - <timelineType type="int">1</timelineType> - <advancedIteration ver="[0, [1, [0, [0]]]]" type="ixAdvancedIteration"> - <segmentList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixTimelineSegmentList" itemtype="ixTimelineSegment"> - <item ver="[2, [0, [1, [0, [0]]]]]" type="ixLinearTimeSegment"> - <name type="str">Linear Segment 1</name> - <noiseAmplitudeScale type="int">0</noiseAmplitudeScale> - <segmentType type="int">1</segmentType> - <startObjectiveScale type="float">0.0</startObjectiveScale> - <endObjectiveScale type="float">1.0</endObjectiveScale> - <duration type="int">1</duration> - <objectID type="int">0</objectID> - </item> - <item ver="[2, [0, [1, [0, [0]]]]]" type="ixLinearTimeSegment"> - <name type="str">Linear Segment 2</name> - <noiseAmplitudeScale type="int">0</noiseAmplitudeScale> - <segmentType type="int">1</segmentType> - <startObjectiveScale type="float">1.0</startObjectiveScale> - <endObjectiveScale type="float">1.0</endObjectiveScale> - <duration type="int">{{testduration}}</duration> - <objectID type="int">4</objectID> - </item> - </segmentList> - <maxscale type="int">20</maxscale> - </advancedIteration> - <objectID type="int">5</objectID> - </timeline> - <customParameters ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ixCustomActivityParameters"> - <enableDbgLog type="bool">False</enableDbgLog> - <dbgLogChannels type="str">1-5</dbgLogChannels> - <bhcaType type="int">0</bhcaType> - <talkTime type="int">10000</talkTime> - <channelsNo type="int">1</channelsNo> - <callSetupTime type="int">500</callSetupTime> - <callTeardownTime type="int">500</callTeardownTime> - <interCallDuration type="int">4000</interCallDuration> - <bhcaObjectiveValue type="int">80000</bhcaObjectiveValue> - <cpsOverwriteValueChecked type="int">0</cpsOverwriteValueChecked> - <cpsTotalChannelsChecked type="int">0</cpsTotalChannelsChecked> - <cpsOverwriteValue type="int">18</cpsOverwriteValue> - <cpsType type="int">0</cpsType> - <cpsTalkTime type="int">30000</cpsTalkTime> - <cpsChannelsNo type="int">16750</cpsChannelsNo> - <cpsTotalChannelsNo type="int">33500</cpsTotalChannelsNo> - <cpsOverheadTime type="int">1500</cpsOverheadTime> - <cpsInterCallDuration type="int">2000</cpsInterCallDuration> - <cpsObjectiveValue type="int">100</cpsObjectiveValue> - <cpsRegisterTime type="int">40</cpsRegisterTime> - <cpsSplitTimeline type="int">0</cpsSplitTimeline> - <lpsType type="int">0</lpsType> - <lpsTalkTime type="int">800</lpsTalkTime> - <lpsChannelsNo type="int">2150</lpsChannelsNo> - <lpsOverheadTime type="int">1500</lpsOverheadTime> - <lpsInterLoopDuration type="int">2000</lpsInterLoopDuration> - <lpsObjectiveValue type="int">100</lpsObjectiveValue> - <lpsActiveChannel type="int">0</lpsActiveChannel> - <activeUsersTalkTime type="int">30000</activeUsersTalkTime> - <activeUsersNo type="int">{{activecalls}}</activeUsersNo> - <activeUsersChannel type="int">0</activeUsersChannel> - <activeUsersObjectiveValue type="int">100</activeUsersObjectiveValue> - </customParameters> - <role type="str">Peer</role> - <activeRole type="str">Both</activeRole> - <objectivePercent type="float">100.0</objectivePercent> - <objectiveType type="str">concurrentConnections</objectiveType> - <objectiveValue type="int">{{activecalls}}</objectiveValue> - <userObjectiveType type="str">activeUsers</userObjectiveType> - <userObjectiveValue type="long">{{activecalls}}</userObjectiveValue> - <constraintType type="str">SimulatedUserConstraint</constraintType> - <constraintValue type="int">{{activecalls}}</constraintValue> - <timerGranularity type="int">100</timerGranularity> - <enableConstraint type="bool">True</enableConstraint> - <secondaryConstraintType type="str">SimulatedUserConstraint</secondaryConstraintType> - <secondaryConstraintValue type="int">100</secondaryConstraintValue> - <secondaryEnableConstraint type="bool">False</secondaryEnableConstraint> - <portMapPolicy type="str">protocolSpecific</portMapPolicy> - <concurrentObjectiveBehavior type="int">1</concurrentObjectiveBehavior> - <cpsObjectiveBehavior type="int">0</cpsObjectiveBehavior> - <userIpMapping type="str">1:1</userIpMapping> - <destinationIpMapping type="str">Consecutive</destinationIpMapping> - <playlists ver="[1, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixPlaylistList" itemtype="ixPlaylist"/> - <objectID type="int">1</objectID> - <_apiUniqueId type="int">16585</_apiUniqueId> - <resourceGuid type="str">58ff41761a9072107c63efca</resourceGuid> - <_objectiveValue type="int">{{activecalls}}</_objectiveValue> - <timelineScale type="tuple"> - <item type="float">1.0</item> - </timelineScale> - </item> - </activityParameters> - <timeline ref="11"/> - <communityCapture ver="[0, [1, [0, [0]]]]" type="ixViewCommunityCapture"> - <captureViewOptions ref="12"/> - <filter ver="[0, [1, [0, [0]]]]" type="ixViewFilter"> - <filterString type="str"></filterString> - </filter> - <portList ref="13"/> - <enable type="bool">False</enable> - <_apiUniqueId type="int">16521</_apiUniqueId> - </communityCapture> - <payload type="NoneType">None</payload> - <activityIpWiring ver="[0, [1, [0, [0]]]]" oid="14" type="ixRangeAgentEndpointWiring"> - <rangeAgentConnections type="list"/> - <_apiUniqueId type="int">16509</_apiUniqueId> - <rangeAgentDict ver="[0, [0, [0]]]" type="ixOrderedDict"> - <_dict type="list"> - <item type="tuple"> - <item ref="7"/> - <item ver="[0, [1, [0, [0]]]]" type="ixRangeAgentWiring"> - <range ref="7"/> - <agentEndpointConnections type="list"/> - <agentConnectionsDict ver="[0, [0, [0]]]" type="ixOrderedDict"> - <_dict type="list"> - <item type="tuple"> - <item ref="10"/> - <item ver="[0, [1, [0, [0]]]]" type="ixAgentEndpointWiring"> - <agent ref="10"/> - <endpoints type="list"/> - <endpointsDict ver="[0, [0, [0]]]" type="ixOrderedDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">SIP</item> - <item ver="[0, [1, [0, [0]]]]" type="ixEndpoint"> - <endpointName type="str">SIP</endpointName> - <isAvailable type="bool">True</isAvailable> - </item> - </item> - <item type="tuple"> - <item type="str">RTP</item> - <item ver="[0, [1, [0, [0]]]]" type="ixEndpoint"> - <endpointName type="str">RTP</endpointName> - <isAvailable type="bool">True</isAvailable> - </item> - </item> - <item type="tuple"> - <item type="str">T38</item> - <item ver="[0, [1, [0, [0]]]]" type="ixEndpoint"> - <endpointName type="str">T38</endpointName> - <isAvailable type="bool">True</isAvailable> - </item> - </item> - <item type="tuple"> - <item type="str">MSRP</item> - <item ver="[0, [1, [0, [0]]]]" type="ixEndpoint"> - <endpointName type="str">MSRP</endpointName> - <isAvailable type="bool">True</isAvailable> - </item> - </item> - </_dict> - </endpointsDict> - </item> - </item> - </_dict> - </agentConnectionsDict> - </item> - </item> - </_dict> - </rangeAgentDict> - </activityIpWiring> - <tcpAccelerationAllowedFlag type="bool">True</tcpAccelerationAllowedFlag> - <iterations type="int">1</iterations> - <standbyTime type="int">0</standbyTime> - <offlineTime type="int">0</offlineTime> - <sustainTime type="int">20</sustainTime> - <iterationTime type="int">60</iterationTime> - <totalTime type="int">1</totalTime> - <portMapPolicy type="str">mixedMap</portMapPolicy> - <objectiveType type="str">n/a</objectiveType> - <objectiveValue type="int">-1</objectiveValue> - <rampUpType type="int">-1</rampUpType> - <rampUpValue type="int">-1</rampUpValue> - <rampUpInterval type="int">-1</rampUpInterval> - <rampUpTime type="int">0</rampUpTime> - <rampDownTime type="int">10</rampDownTime> - <userObjectiveType type="str">n/a</userObjectiveType> - <userObjectiveValue type="int">-1</userObjectiveValue> - <totalUserObjectiveValue type="long">0</totalUserObjectiveValue> - <objectID type="int">1</objectID> - <_apiUniqueId type="int">16508</_apiUniqueId> - <isVisible type="bool">True</isVisible> - <activityIpWiring ref="14"/> - <_portOperationModesAllowed type="dict"> - <item> - <key type="int">0</key> - <value type="bool">True</value> - </item> - <item> - <key type="int">1</key> - <value type="bool">True</value> - </item> - <item> - <key type="int">2</key> - <value type="bool">False</value> - </item> - <item> - <key type="int">3</key> - <value type="bool">True</value> - </item> - <item> - <key type="int">4</key> - <value type="bool">True</value> - </item> - <item> - <key type="int">6</key> - <value type="bool">True</value> - </item> - <item> - <key type="int">8</key> - <value type="bool">True</value> - </item> - </_portOperationModesAllowed> - <_tcpAccelerationAllowed type="dict"> - <item> - <key type="int">0</key> - <value type="bool">True</value> - </item> - <item> - <key type="int">1</key> - <value type="bool">True</value> - </item> - </_tcpAccelerationAllowed> - </destinationCommunity> - <destinationAgentName type="str">CALLED</destinationAgentName> - <portRangeList type="NoneType">None</portRangeList> - <count type="int">1</count> - </item> - </destinations> - <flowPercentage type="float">100.0</flowPercentage> - <uniqueID type="int">39</uniqueID> - <pm ver="[0, [1, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyMap_VoIP"> - <szPluginVersion type="str">4.10</szPluginVersion> - <ceCommands ver="[1, [0, [0, [3, [0, [0, [0], [0]], [0]]]], [0, [0, [3, [0, [0, [0], [0]], [0]]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_VoIP_ceCommands" itemtype="ixConfig"> - <item ver="[0, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]], [0, [0, [0, [0, [1, [0, [0]]]]]]]]" type="#Pdk.ixPdkCommands$ixPropertyCommandStart"> - <commandId type="int">-2</commandId> - <commandType type="str">START</commandType> - <cmdName type="str">Start</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">Output1</name> - <outputType type="int">0</outputType> - <destCmdId type="int">3</destCmdId> - <objectID type="int">0</objectID> - <destinationCommandIdx type="int">2</destinationCommandIdx> - </item> - </outputList> - </item> - <item ver="[0, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]], [0, [0, [0, [0, [1, [0, [0]]]]]]]]" type="#Pdk.ixPdkCommands$ixPropertyCommandStop"> - <commandId type="int">-3</commandId> - <commandType type="str">STOP</commandType> - <cmdName type="str">Stop</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"/> - </item> - <item ver="[0, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Procedure"> - <commandId type="int">3</commandId> - <commandType type="str">Procedure</commandType> - <cmdName type="str">SIP MakeCall (#1)</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">OK</name> - <outputType type="int">0</outputType> - <destCmdId type="int">16</destCmdId> - <objectID type="int">1</objectID> - <destinationCommandIdx type="int">4</destinationCommandIdx> - </item> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">Error</name> - <outputType type="int">1</outputType> - <destCmdId type="int">-3</destCmdId> - <objectID type="int">2</objectID> - <destinationCommandIdx type="int">1</destinationCommandIdx> - </item> - </outputList> - </item> - <item ver="[0, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Procedure"> - <commandId type="int">10</commandId> - <commandType type="str">Procedure</commandType> - <cmdName type="str">SIP EndCall Initiate (#2)</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">OK</name> - <outputType type="int">0</outputType> - <destCmdId type="int">-3</destCmdId> - <objectID type="int">1</objectID> - <destinationCommandIdx type="int">1</destinationCommandIdx> - </item> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">Error</name> - <outputType type="int">1</outputType> - <destCmdId type="int">-3</destCmdId> - <objectID type="int">2</objectID> - <destinationCommandIdx type="int">1</destinationCommandIdx> - </item> - </outputList> - </item> - <item ver="[0, [1, [0, [0, [0.1, [1, [0, [0]]]], [0, [1, [0, [0]]]]], [0, [0, [1, [0, [0]]]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CommandEx"> - <commandId type="int">16</commandId> - <commandType type="str">CommandEx</commandType> - <cmdName type="str">Voice Session (#1)</cmdName> - <outputList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixCommandOutputList" itemtype="ixCommandOutput"> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">OK</name> - <outputType type="int">0</outputType> - <destCmdId type="int">10</destCmdId> - <objectID type="int">1</objectID> - <destinationCommandIdx type="int">3</destinationCommandIdx> - </item> - <item ver="[1, [1, [0, [0]]]]" type="ixCommandOutput"> - <name type="str">Error</name> - <outputType type="int">1</outputType> - <destCmdId type="int">10</destCmdId> - <objectID type="int">2</objectID> - <destinationCommandIdx type="int">3</destinationCommandIdx> - </item> - </outputList> - <cmdType type="str">RTPVoiceSession</cmdType> - </item> - </ceCommands> - <activityLink ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ActivityLinkInfo"> - <name type="str">VoiceLink1</name> - <activitiesCount type="int">2</activitiesCount> - </activityLink> - <triggers ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TriggerConfig"> - <triggersInCount type="int">4</triggersInCount> - <triggersOutCount type="int">4</triggersOutCount> - </triggers> - <globalSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalSettings"> - <globalExecStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalExecSettings"> - <setAborted type="bool">False</setAborted> - <setAllFailed type="bool">False</setAllFailed> - <trigTimeout type="int">600000</trigTimeout> - <notAbortOnTimeout type="bool">False</notAbortOnTimeout> - <limitErrors type="bool">False</limitErrors> - <maxErrors type="int">1</maxErrors> - <limitArrayVarSize type="bool">False</limitArrayVarSize> - <maxArrayVarSize type="int">10</maxArrayVarSize> - </globalExecStg> - <globalSIPStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalSIPSettings"> - <disableTCP type="bool">False</disableTCP> - <prefQOP type="int">0</prefQOP> - <warnAsError type="bool">False</warnAsError> - <limitQueueSize type="bool">True</limitQueueSize> - <maxChannelsInQueue type="int">25</maxChannelsInQueue> - <enableSIPLogging type="bool">False</enableSIPLogging> - <limitSIPLoggingChannels type="bool">False</limitSIPLoggingChannels> - <maxSIPLoggingChannels type="int">10</maxSIPLoggingChannels> - <minSIPLoggingChannels type="int">0</minSIPLoggingChannels> - <voipPeerLogSettings type="int">0</voipPeerLogSettings> - <voipPeerLogExpForChannels type="str"></voipPeerLogExpForChannels> - <abortLoopOnTriggerTimeout type="bool">False</abortLoopOnTriggerTimeout> - </globalSIPStg> - <globalRTPStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalRTPSettings"> - <transmMode type="int">0</transmMode> - <playMode type="int">0</playMode> - <repeatCount type="int">1</repeatCount> - <repeatTime type="int">1000</repeatTime> - <timeUnit type="int">0</timeUnit> - <volume type="int">-20</volume> - <playModePathConf type="int">0</playModePathConf> - <repeatCountPathConf type="int">0</repeatCountPathConf> - <repeatTimePathConf type="int">10</repeatTimePathConf> - <timeUnitPathConf type="int">0</timeUnitPathConf> - <toneDurationPathConf type="int">200</toneDurationPathConf> - <interToneDelayPathConf type="int">200</interToneDelayPathConf> - <toneAmplitudePathConf type="int">-10</toneAmplitudePathConf> - <firstToneTimeoutPathConf type="int">4000</firstToneTimeoutPathConf> - <interToneTimeoutPathConf type="int">2000</interToneTimeoutPathConf> - <qovTalkExtraSilence type="int">500</qovTalkExtraSilence> - <qovListenExtraDuration type="int">2000</qovListenExtraDuration> - <downloadRTPCSV type="bool">True</downloadRTPCSV> - <waitQoVScore type="bool">False</waitQoVScore> - </globalRTPStg> - <globalSTUNStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalSTUNSettings"> - <keepAliveInterval type="int">15</keepAliveInterval> - </globalSTUNStg> - <globalSKINNYStg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalSKINNYSettings"> - <softKeyCount type="int">25</softKeyCount> - <receiveVideo type="bool">False</receiveVideo> - <transmitVideo type="bool">False</transmitVideo> - </globalSKINNYStg> - <globalT38Stg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_GlobalT38Settings"> - <t30Log type="bool">False</t30Log> - <t38Log type="bool">False</t38Log> - <receivedImageLog type="bool">False</receivedImageLog> - <logType type="int">0</logType> - <logBegin type="int">1</logBegin> - <logEnd type="int">10</logEnd> - <channelRange type="str">[00-10]</channelRange> - </globalT38Stg> - </globalSettings> - <info ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Info"> - <userChannelsNo type="int">45638</userChannelsNo> - <portInstances type="int">3</portInstances> - <portInstanceIdx type="int">1</portInstanceIdx> - <objectiveType type="str">activeUsers</objectiveType> - <objectiveValue type="int">1000</objectiveValue> - <maxAllowedObjective type="long">9223372036854775807</maxAllowedObjective> - <firstSignalingFnID type="int">8</firstSignalingFnID> - <enableRTPDest type="bool">False</enableRTPDest> - <rtpPortDest type="str"></rtpPortDest> - <rtpObjectiveValue type="int">32000</rtpObjectiveValue> - <hasRtpFunction type="bool">False</hasRtpFunction> - <hasVideoFunction type="bool">False</hasVideoFunction> - <hasT38Function type="bool">False</hasT38Function> - <hasMSRPFunction type="bool">False</hasMSRPFunction> - <src ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ActivityInfo"> - <name type="str">CALLING</name> - <portCount type="int">1</portCount> - <portCountRtp type="int">1</portCountRtp> - <portCountT38 type="int">1</portCountT38> - <portCountMSRP type="int">1</portCountMSRP> - <ipRangeCount type="int">1</ipRangeCount> - <ipCount type="int">1</ipCount> - <ipRule type="int">0</ipRule> - <ipRuleCh type="int">1</ipRuleCh> - <port type="str">{{sipportcalling}}</port> - <portRule type="int">0</portRule> - <portRuleCh type="int">1</portRuleCh> - <phone type="str">{{pncalling}}</phone> - <aliases type="int">1</aliases> - <phoneType type="int">0</phoneType> - <phoneRule type="int">1</phoneRule> - <phoneCount type="int">0</phoneCount> - <telPar type="str"></telPar> - <ipRangeCountRtp type="int">1</ipRangeCountRtp> - <ipCountRtp type="int">1</ipCountRtp> - <ipRuleRtp type="int">0</ipRuleRtp> - <ipRuleChRtp type="int">1</ipRuleChRtp> - <portRtp type="str">[10000-65535,4]</portRtp> - <portT38 type="str">40000</portT38> - <portMSRP type="str">2855</portMSRP> - <portRuleRtp type="int">1</portRuleRtp> - <portRuleChRtp type="int">1</portRuleChRtp> - <ipRangeCountT38 type="int">1</ipRangeCountT38> - <ipCountT38 type="int">1</ipCountT38> - <ipRangeCountMSRP type="int">1</ipRangeCountMSRP> - <ipCountMSRP type="int">1</ipCountMSRP> - <symType type="int">1</symType> - <enableTLS type="bool">False</enableTLS> - <enableDTLS type="bool">False</enableDTLS> - <enableTLS_MSRP type="bool">False</enableTLS_MSRP> - <enableTLS_HTTP type="bool">False</enableTLS_HTTP> - <tlsPort type="str">5061</tlsPort> - <tlsDisableUdpAndTcp type="bool">True</tlsDisableUdpAndTcp> - <nodeCount type="int">1</nodeCount> - <coreCount type="int">2</coreCount> - <nicCount type="int">1</nicCount> - <gtpEnabled type="bool">False</gtpEnabled> - <dcpEnabled type="bool">False</dcpEnabled> - <rangeType type="int">0</rangeType> - <calActivityID type="int">1</calActivityID> - <layerName type="str">aptixia-T.03440c56.4e1a.4def.8406.ec64db91d4c1-L2EthernetPlugin-166a11b6.4d30.40ea.b9e1.ac4fb44f112b-161.105.231.12;1;1default</layerName> - </src> - <dest ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ActivityInfo"> - <name type="str"></name> - <portCount type="int">1</portCount> - <portCountRtp type="int">1</portCountRtp> - <portCountT38 type="int">1</portCountT38> - <portCountMSRP type="int">1</portCountMSRP> - <ipRangeCount type="int">0</ipRangeCount> - <ipCount type="int">0</ipCount> - <ipRule type="int">0</ipRule> - <ipRuleCh type="int">0</ipRuleCh> - <port type="str"></port> - <portRule type="int">0</portRule> - <portRuleCh type="int">0</portRuleCh> - <phone type="str"></phone> - <aliases type="int">1</aliases> - <phoneType type="int">0</phoneType> - <phoneRule type="int">0</phoneRule> - <phoneCount type="int">0</phoneCount> - <telPar type="str"></telPar> - <ipRangeCountRtp type="int">0</ipRangeCountRtp> - <ipCountRtp type="int">0</ipCountRtp> - <ipRuleRtp type="int">0</ipRuleRtp> - <ipRuleChRtp type="int">0</ipRuleChRtp> - <portRtp type="str"></portRtp> - <portT38 type="str"></portT38> - <portMSRP type="str">2855</portMSRP> - <portRuleRtp type="int">0</portRuleRtp> - <portRuleChRtp type="int">0</portRuleChRtp> - <ipRangeCountT38 type="int">0</ipRangeCountT38> - <ipCountT38 type="int">0</ipCountT38> - <ipRangeCountMSRP type="int">1</ipRangeCountMSRP> - <ipCountMSRP type="int">1</ipCountMSRP> - <symType type="int">1</symType> - <enableTLS type="bool">False</enableTLS> - <enableDTLS type="bool">False</enableDTLS> - <enableTLS_MSRP type="bool">False</enableTLS_MSRP> - <enableTLS_HTTP type="bool">False</enableTLS_HTTP> - <tlsPort type="str"></tlsPort> - <tlsDisableUdpAndTcp type="bool">False</tlsDisableUdpAndTcp> - <nodeCount type="int">1</nodeCount> - <coreCount type="int">2</coreCount> - <nicCount type="int">1</nicCount> - <gtpEnabled type="bool">False</gtpEnabled> - <dcpEnabled type="bool">False</dcpEnabled> - <rangeType type="int">0</rangeType> - <calActivityID type="int">0</calActivityID> - <layerName type="str"></layerName> - </dest> - <useServerDest type="bool">False</useServerDest> - <srvDomainDest type="str"></srvDomainDest> - <srvAddrDest type="str"></srvAddrDest> - <srvPortDest type="str">5060</srvPortDest> - <cloudServerDest ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CloudServer"> - <name type="str"></name> - <ipAddr type="str"></ipAddr> - <rangeType type="str"></rangeType> - <ipType type="str"></ipType> - <port type="int">0</port> - <attachedInfo type="str"></attachedInfo> - <firstIp type="str"></firstIp> - <netMask type="str"></netMask> - <ipCount type="str"></ipCount> - <ipStep type="str"></ipStep> - </cloudServerDest> - <transfer ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ActivityInfo"> - <name type="str"></name> - <portCount type="int">0</portCount> - <portCountRtp type="int">0</portCountRtp> - <portCountT38 type="int">0</portCountT38> - <portCountMSRP type="int">0</portCountMSRP> - <ipRangeCount type="int">0</ipRangeCount> - <ipCount type="int">0</ipCount> - <ipRule type="int">0</ipRule> - <ipRuleCh type="int">0</ipRuleCh> - <port type="str"></port> - <portRule type="int">0</portRule> - <portRuleCh type="int">0</portRuleCh> - <phone type="str"></phone> - <aliases type="int">0</aliases> - <phoneType type="int">0</phoneType> - <phoneRule type="int">0</phoneRule> - <phoneCount type="int">0</phoneCount> - <telPar type="str"></telPar> - <ipRangeCountRtp type="int">0</ipRangeCountRtp> - <ipCountRtp type="int">0</ipCountRtp> - <ipRuleRtp type="int">0</ipRuleRtp> - <ipRuleChRtp type="int">0</ipRuleChRtp> - <portRtp type="str"></portRtp> - <portT38 type="str"></portT38> - <portMSRP type="str"></portMSRP> - <portRuleRtp type="int">0</portRuleRtp> - <portRuleChRtp type="int">0</portRuleChRtp> - <ipRangeCountT38 type="int">0</ipRangeCountT38> - <ipCountT38 type="int">0</ipCountT38> - <ipRangeCountMSRP type="int">0</ipRangeCountMSRP> - <ipCountMSRP type="int">0</ipCountMSRP> - <symType type="int">0</symType> - <enableTLS type="bool">False</enableTLS> - <enableDTLS type="bool">False</enableDTLS> - <enableTLS_MSRP type="bool">False</enableTLS_MSRP> - <enableTLS_HTTP type="bool">False</enableTLS_HTTP> - <tlsPort type="str"></tlsPort> - <tlsDisableUdpAndTcp type="bool">False</tlsDisableUdpAndTcp> - <nodeCount type="int">0</nodeCount> - <coreCount type="int">1</coreCount> - <nicCount type="int">1</nicCount> - <gtpEnabled type="bool">False</gtpEnabled> - <dcpEnabled type="bool">False</dcpEnabled> - <rangeType type="int">0</rangeType> - <calActivityID type="int">0</calActivityID> - <layerName type="str"></layerName> - </transfer> - <useServerTransfer type="bool">False</useServerTransfer> - <registrarSrvTransfer type="bool">False</registrarSrvTransfer> - <srvAddrTransfer type="str"></srvAddrTransfer> - <srvPortTransfer type="str">5060</srvPortTransfer> - <cloudServerTransfer ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CloudServer"> - <name type="str"></name> - <ipAddr type="str"></ipAddr> - <rangeType type="str"></rangeType> - <ipType type="str"></ipType> - <port type="int">0</port> - <attachedInfo type="str"></attachedInfo> - <firstIp type="str"></firstIp> - <netMask type="str"></netMask> - <ipCount type="str"></ipCount> - <ipStep type="str"></ipStep> - </cloudServerTransfer> - </info> - <scenarioSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ScenarioSettings"> - <scenarioFile type="str">.\SIPCall.tst</scenarioFile> - <activeScenarioChannel type="int">0</activeScenarioChannel> - <funcsCount type="int">17</funcsCount> - <isModified type="int">68</isModified> - <activityID type="int">6</activityID> - <exportToRM type="int">0</exportToRM> - </scenarioSettings> - <executionSettings ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ExecutionSettings"> - <loopMode type="int">0</loopMode> - <loopCount type="int">1</loopCount> - <loopPreDelay type="int">0</loopPreDelay> - <loopMidDelay type="int">0</loopMidDelay> - <gracefulRampDown type="bool">True</gracefulRampDown> - <rampdownSleep type="bool">False</rampdownSleep> - <aliases type="int">1</aliases> - <ipRule type="int">0</ipRule> - <ipRuleCh type="int">1</ipRuleCh> - <portRule type="int">0</portRule> - <portRuleCh type="int">1</portRuleCh> - <phoneRule type="int">1</phoneRule> - <multipleUsersPerIO type="bool">True</multipleUsersPerIO> - <rtpIpRule type="int">0</rtpIpRule> - <rtpIpRuleCh type="int">1</rtpIpRuleCh> - <rtpPortRule type="int">1</rtpPortRule> - <rtpPortRuleCh type="int">1</rtpPortRuleCh> - <dl_BUG type="bool">True</dl_BUG> - <dl_TRACE type="bool">False</dl_TRACE> - <dl_L_INFO type="bool">True</dl_L_INFO> - <dl_L_ADV type="bool">False</dl_L_ADV> - <dl_L_VRB type="bool">False</dl_L_VRB> - <dl_T_IO type="bool">False</dl_T_IO> - <dl_T_INFO type="bool">False</dl_T_INFO> - <dl_T_ADV type="bool">False</dl_T_ADV> - <dl_T_VRB type="bool">False</dl_T_VRB> - <dl_TG_ADV type="bool">False</dl_TG_ADV> - <dl_TG_VRB type="bool">False</dl_TG_VRB> - <dl_Q_ADV type="bool">False</dl_Q_ADV> - <dl_Q_VRB type="bool">False</dl_Q_VRB> - <dl_S_FSM type="bool">False</dl_S_FSM> - <dl_S_SER type="bool">False</dl_S_SER> - <dl_S_SUA type="bool">False</dl_S_SUA> - <dl_S_WAIT type="bool">False</dl_S_WAIT> - <dl_S_SEND type="bool">False</dl_S_SEND> - <dl_S_INFO type="bool">False</dl_S_INFO> - <dl_S_ADV type="bool">False</dl_S_ADV> - <dl_S_VRB type="bool">False</dl_S_VRB> - <dl_R_DD type="bool">False</dl_R_DD> - <dl_R_VRB type="bool">False</dl_R_VRB> - <dl_R_PAR type="bool">False</dl_R_PAR> - <dl_EE_VRB type="bool">False</dl_EE_VRB> - <dl_EE_DD type="bool">False</dl_EE_DD> - <dl_FLOW type="bool">False</dl_FLOW> - <dl_M_IO type="bool">False</dl_M_IO> - <dl_SDP_DD type="bool">False</dl_SDP_DD> - <dl_1 type="bool">False</dl_1> - <dl_2 type="bool">False</dl_2> - <dl_3 type="bool">False</dl_3> - <log_level type="int">9</log_level> - <log_in_memory type="int">1</log_in_memory> - <rtp_log_in_file type="int">1</rtp_log_in_file> - <log_filesize type="int">32</log_filesize> - <_gbDebugLogs type="bool">False</_gbDebugLogs> - <ccExportProfile type="bool">False</ccExportProfile> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_ipRule1</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">dl_S_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loopMidDelay</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_T_IO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_T_INFO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_SEND</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_rtpIpRule1</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">_estimatedBacklog</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loopPreDelay</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_TG_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">log_filesize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtp_log_in_file</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_T_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">aliases</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_Q_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">multipleUsersPerIO</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">log_level</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpIpRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rampdownSleep</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_portRule1</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">dl_S_SER</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_R_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_L_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_Q_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">portRuleCh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_INFO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpPortRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_M_IO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_EE_DD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpIpRuleCh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_FSM</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loopMode</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">gracefulRampDown</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_FLOW</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_BUG</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_S_SUA</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ipRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ipRuleCh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">phoneRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_rtpPortRule1</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">dl_R_PAR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loopCount</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">dl_S_WAIT</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_SDP_DD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_TRACE</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbDebugLogs</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">rtpPortRuleCh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_TG_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">portRule</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_L_INFO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_EE_VRB</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_R_DD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_T_ADV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ccExportProfile</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">log_in_memory</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dl_L_VRB</item> - <item ref="1"/> - </item> - </_dict> - </state> - </executionSettings> - <customActivityLinkSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ixCustomActivityParameters"> - <enableDbgLog type="bool">False</enableDbgLog> - <dbgLogChannels type="str">1-5</dbgLogChannels> - <bhcaType type="int">0</bhcaType> - <talkTime type="int">10000</talkTime> - <channelsNo type="int">1</channelsNo> - <callSetupTime type="int">500</callSetupTime> - <callTeardownTime type="int">500</callTeardownTime> - <interCallDuration type="int">4000</interCallDuration> - <bhcaObjectiveValue type="int">1</bhcaObjectiveValue> - <cpsOverwriteValueChecked type="int">0</cpsOverwriteValueChecked> - <cpsTotalChannelsChecked type="int">0</cpsTotalChannelsChecked> - <cpsOverwriteValue type="int">18</cpsOverwriteValue> - <cpsType type="int">0</cpsType> - <cpsTalkTime type="int">30000</cpsTalkTime> - <cpsChannelsNo type="int">16750</cpsChannelsNo> - <cpsTotalChannelsNo type="int">33500</cpsTotalChannelsNo> - <cpsOverheadTime type="int">1500</cpsOverheadTime> - <cpsInterCallDuration type="int">2000</cpsInterCallDuration> - <cpsObjectiveValue type="int">500</cpsObjectiveValue> - <cpsRegisterTime type="int">40</cpsRegisterTime> - <cpsSplitTimeline type="int">0</cpsSplitTimeline> - <lpsType type="int">0</lpsType> - <lpsTalkTime type="int">800</lpsTalkTime> - <lpsChannelsNo type="int">2150</lpsChannelsNo> - <lpsOverheadTime type="int">1500</lpsOverheadTime> - <lpsInterLoopDuration type="int">2000</lpsInterLoopDuration> - <lpsObjectiveValue type="int">500</lpsObjectiveValue> - <lpsActiveChannel type="int">0</lpsActiveChannel> - <activeUsersTalkTime type="int">30000</activeUsersTalkTime> - <activeUsersNo type="int">{{activecalls}}</activeUsersNo> - <activeUsersChannel type="int">0</activeUsersChannel> - <activeUsersObjectiveValue type="int">{{activecalls}}</activeUsersObjectiveValue> - </customActivityLinkSettings> - <rtpWaveFiles ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_RTPWaveFiles"> - <wavesCount type="int">1</wavesCount> - </rtpWaveFiles> - <rtpTones ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_RTPTones"> - <usedTonesCount type="int">0</usedTonesCount> - <customTonesCount type="int">35</customTonesCount> - <seqCustTonesCount type="int">0</seqCustTonesCount> - </rtpTones> - <codecCustomPopup ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecCustomPopup"> - <captureFile type="str">Default.cap</captureFile> - <parseRTPPort type="bool">False</parseRTPPort> - <parseSSRC type="bool">False</parseSSRC> - <rtpPort type="int">10000</rtpPort> - <ssrc type="str">0x8078C5D3</ssrc> - </codecCustomPopup> - <codecCustomPropDlg ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecCustomPropDlg"/> - <codecSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecSettings"> - <codecs ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_CodecSettings_codecs" itemtype="ixConfig"> - <item ver="[0, [0, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecG711u"> - <dPayloadIn type="int">0</dPayloadIn> - <dPayloadOut type="int">0</dPayloadOut> - <frameSize type="int">160</frameSize> - </item> - <item ver="[0, [0, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CodecG711a"> - <dPayloadIn type="int">8</dPayloadIn> - <dPayloadOut type="int">8</dPayloadOut> - <frameSize type="int">160</frameSize> - </item> - </codecs> - <codecs_number type="int">2</codecs_number> - <_gbVideoCodecs type="bool">False</_gbVideoCodecs> - <videoPayloadType type="int">96</videoPayloadType> - <_gbDataCodecs type="bool">False</_gbDataCodecs> - <dataCodecs ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_CodecSettings_dataCodecs" itemtype="ixConfig"> - <item ver="[0, [0, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Rtp2833Events"> - <dPayloadType type="int">100</dPayloadType> - </item> - <item ver="[0, [0, [0.1, [1, [0, [0]]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Rtp2833Tones"> - <dPayloadType type="int">101</dPayloadType> - </item> - </dataCodecs> - <crtCustomCodecIndex type="int">-1</crtCustomCodecIndex> - </codecSettings> - <rtpSettings ver="[7, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_RTPSettings"> - <rtpPort type="str">[10000-65535,4]</rtpPort> - <enableAdvStatCalc type="bool">False</enableAdvStatCalc> - <enableRTCP type="bool">False</enableRTCP> - <enableRTCPMux type="bool">False</enableRTCPMux> - <chEnableHwAcc type="bool">False</chEnableHwAcc> - <chDisableHwAcc type="bool">False</chDisableHwAcc> - <enableHwAcc type="bool">False</enableHwAcc> - <enableIxStack type="bool">False</enableIxStack> - <enableNBExec type="bool">False</enableNBExec> - <enablePerStream type="bool">False</enablePerStream> - <enableMDI type="bool">False</enableMDI> - <enableRTP type="bool">False</enableRTP> - <enableMediaSDPParams type="bool">False</enableMediaSDPParams> - <audioB_option type="bool">False</audioB_option> - <audioB_value type="str">AS:48</audioB_value> - <audioRR_option type="bool">False</audioRR_option> - <audioRR_value type="str">800</audioRR_value> - <audioRS_option type="bool">False</audioRS_option> - <audioRS_value type="str">800</audioRS_value> - <videoB_option type="bool">False</videoB_option> - <videoB_value type="str">AS:384</videoB_value> - <videoRR_option type="bool">False</videoRR_option> - <videoRR_value type="str">6400</videoRR_value> - <videoRS_option type="bool">False</videoRS_option> - <videoRS_value type="str">6400</videoRS_value> - <textB_option type="bool">False</textB_option> - <textB_value type="str">AS:48</textB_value> - <textRR_option type="bool">False</textRR_option> - <textRR_value type="str">800</textRR_value> - <textRS_option type="bool">False</textRS_option> - <textRS_value type="str">800</textRS_value> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">videoRR_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbVideoSDPParams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textRS_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">jitMs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbAudioSDPParams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">ixnamSupported</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dedicatedCoreRange</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpTosVal</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">channelTypeQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableMediaSDPParams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTextSDPParams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">activityIdQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioRS_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useJitComp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dedicatedCoreRangeLength</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioB_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioB_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">portIPsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioRS_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableHwAcc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">chEnableHwAcc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">channelsQoVPerZionPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoRR_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableRTCPMux</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textRR_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">silenceMode</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbMediaSDPParams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textB_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">jitCMs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">valueQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableRTCP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">maxMosStreams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableMDI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableIxStack</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableOWD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">unitsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">serviceEnabledQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">chDisableHwAcc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTosGroupBox</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioRR_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enablePerStream</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">limitMos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useMos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textRR_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">customTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoB_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">mosInterval</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableAdvStatCalc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useJitter</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useSilence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">metricsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoRS_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoRS_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">jitCMaxDrop</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioRR_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textB_value</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableTosRtp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoB_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">activityNameQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textRS_option</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableNBExec</item> - <item ref="1"/> - </item> - </_dict> - </state> - </rtpSettings> - <rtcpSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_RTCPSettings"> - <rtcpIgnoreSSRC type="bool">False</rtcpIgnoreSSRC> - <rtcpCNAMEType type="int">0</rtcpCNAMEType> - <hasSDESName type="bool">False</hasSDESName> - <hasSDESTool type="bool">False</hasSDESTool> - <rtcpSDESTool type="str">IxLoad</rtcpSDESTool> - <rtcpReceiverTimer type="int">2000</rtcpReceiverTimer> - <rtcpSenderTimer type="int">2000</rtcpSenderTimer> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">rtcpSDESTool</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">rtcpSenderTimer</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtcpCNAMEType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">hasSDESTool</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtcpReceiverTimer</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtcpIgnoreSSRC</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">hasSDESName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableRTCPMux2</item> - <item ref="1"/> - </item> - </_dict> - </state> - </rtcpSettings> - <audioSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AudioSettings"> - <enableAudio type="bool">False</enableAudio> - <_gbEnableAudio type="bool">False</_gbEnableAudio> - <enableAudioOWD type="bool">False</enableAudioOWD> - <useJitter type="bool">False</useJitter> - <_JB1 type="bool">False</_JB1> - <jitMs type="int">20</jitMs> - <useJitComp type="bool">False</useJitComp> - <jitCMs type="int">1000</jitCMs> - <jitCMaxDrop type="int">7</jitCMaxDrop> - <dodName type="str">rtp_esmad-asordo-l_2170</dodName> - <useMos type="bool">False</useMos> - <useSilence type="bool">False</useSilence> - <silenceMode type="int">1</silenceMode> - <enableTosRtp type="bool">False</enableTosRtp> - <rtpTos type="int">1</rtpTos> - <customTosGroupBox type="bool">False</customTosGroupBox> - <customTos type="str">0x20</customTos> - <rtpTosVal type="int">32</rtpTosVal> - <_COV1 type="bool">False</_COV1> - <useQoV type="bool">False</useQoV> - <qovAnalize type="int">5</qovAnalize> - <qovSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_QoVSettings"> - <activityIdQoV type="int">0</activityIdQoV> - <enableQoV type="bool">False</enableQoV> - <_gbEnableQoV type="bool">False</_gbEnableQoV> - <serviceEnabledQoV type="bool">False</serviceEnabledQoV> - <activityNameQoV type="str"></activityNameQoV> - <portIPsQoV type="str"></portIPsQoV> - <unitsQoV type="int">0</unitsQoV> - <valueQoV type="int">100</valueQoV> - <channelTypeQoV type="int">0</channelTypeQoV> - <metricsQoV type="int">0</metricsQoV> - <channelsQoVPerZionPort type="int">0</channelsQoVPerZionPort> - <radioBtnQoVASR type="int">0</radioBtnQoVASR> - <languageASR type="str">English(US)</languageASR> - </qovSettings> - <activityIdQoV type="int">0</activityIdQoV> - <enableQoV type="bool">False</enableQoV> - <_gbEnableQoV type="bool">False</_gbEnableQoV> - <serviceEnabledQoV type="bool">False</serviceEnabledQoV> - <activityNameQoV type="str"></activityNameQoV> - <portIPsQoV type="str"></portIPsQoV> - <unitsQoV type="int">0</unitsQoV> - <valueQoV type="int">100</valueQoV> - <channelTypeQoV type="int">0</channelTypeQoV> - <metricsQoV type="int">0</metricsQoV> - <channelsQoVPerZionPort type="int">0</channelsQoVPerZionPort> - <radioBtnQoVASR type="int">0</radioBtnQoVASR> - <languageASR type="str">English(US)</languageASR> - <audioClip type="str">US_042.wav</audioClip> - <_audioFormat type="str">Format: PCM, Duration: 32785 ms, Size: 524556 bytes</_audioFormat> - <outputLevel type="int">-20</outputLevel> - <_gbOutputLevel type="bool">False</_gbOutputLevel> - <playTypeAudio type="int">0</playTypeAudio> - <audioDuration type="int">10</audioDuration> - <audioDurationUnit type="int">1</audioDurationUnit> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_gbEnableQoV</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">channelTypeQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">pesqPolqa</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enablePTT</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableP56</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">qovAnalize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">channelsQoVPerZionPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_COV1</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">useTelchemy</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">activityIdQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpTosVal</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useJitComp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioDuration</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_JB1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTosRtp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">portIPsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbQoVMetrics</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dodName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">jitMs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbASRLanguage</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">rtpTos</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">radioBtnQoVASR</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">silenceMode</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">playTypeAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useQoV</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">activityNameQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">jitCMs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">valueQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbOutputLevel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">unitsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">serviceEnabledQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">audioClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">languageASR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTosGroupBox</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">audioDurationUnit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">useMos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTos</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">qovSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useJitter</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useSilence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">metricsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">jitCMaxDrop</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">channelsQoV</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableAudioOWD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_audioFormat</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableAudio</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">outputLevel</item> - <item ref="1"/> - </item> - </_dict> - </state> - </audioSettings> - <editTos ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_EditTos"> - <bits012 type="int">0</bits012> - <minDelay type="bool">False</minDelay> - <maxThroughput type="bool">False</maxThroughput> - <maxReliability type="bool">False</maxReliability> - <_gbBtnTosBit7_0 type="bool">False</_gbBtnTosBit7_0> - <_gbBtnTosBit7_1 type="bool">False</_gbBtnTosBit7_1> - <_gbBtnTosBit6_0 type="bool">False</_gbBtnTosBit6_0> - <_gbBtnTosBit6_1 type="bool">False</_gbBtnTosBit6_1> - <_gbBtnTosBit5_0 type="bool">False</_gbBtnTosBit5_0> - <_gbBtnTosBit5_1 type="bool">False</_gbBtnTosBit5_1> - <_gbBtnTosBit4_0 type="bool">False</_gbBtnTosBit4_0> - <_gbBtnTosBit4_1 type="bool">False</_gbBtnTosBit4_1> - <_gbBtnTosBit3_0 type="bool">False</_gbBtnTosBit3_0> - <_gbBtnTosBit3_1 type="bool">False</_gbBtnTosBit3_1> - <_gbBtnTosBit2_0 type="bool">False</_gbBtnTosBit2_0> - <_gbBtnTosBit2_1 type="bool">False</_gbBtnTosBit2_1> - <_gbDisabledBtns type="bool">False</_gbDisabledBtns> - </editTos> - <srtpSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SRTPSettings"> - <bEnableSRTP type="bool">False</bEnableSRTP> - <bEnableVideoSRTP type="bool">False</bEnableVideoSRTP> - <bEnableTextSRTP type="bool">False</bEnableTextSRTP> - <bDisableSRTCPEncryption type="bool">False</bDisableSRTCPEncryption> - <bDisableSRTPEncryption type="bool">False</bDisableSRTPEncryption> - <bDisableSRTPAuthentication type="bool">False</bDisableSRTPAuthentication> - <bDisableValidations type="bool">False</bDisableValidations> - <bAllowOnlySecureStreams type="bool">False</bAllowOnlySecureStreams> - <bIncludeMKI type="bool">False</bIncludeMKI> - <bEnablePreencryption type="bool">False</bEnablePreencryption> - <bDisableMasterSalt type="bool">False</bDisableMasterSalt> - <bStaticMasterKeySalt type="bool">False</bStaticMasterKeySalt> - <_masterKeySelection type="int">0</_masterKeySelection> - <staticSingleKeySalt type="str"></staticSingleKeySalt> - <staticKeyFile type="str"></staticKeyFile> - <_enableSRTP type="bool">False</_enableSRTP> - <_useStaticKey type="bool">False</_useStaticKey> - <_singleMasterKeyGrp type="bool">False</_singleMasterKeyGrp> - <_multipleMasterKeysGrp type="bool">False</_multipleMasterKeysGrp> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">bEnableSRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_singleMasterKeyGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableSRTPEncryption</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableSRTPAuthentication</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableValidations</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_useStaticKey</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">bEnablePreencryption</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">staticSingleKeySalt</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableSRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bStaticMasterKeySalt</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">staticKeyFile</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableMasterSalt</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_multipleMasterKeysGrp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">bAllowOnlySecureStreams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bDisableSRTCPEncryption</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bEnableVideoSRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bIncludeMKI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bEnableTextSRTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_masterKeySelection</item> - <item ref="1"/> - </item> - </_dict> - </state> - </srtpSettings> - <videoClips ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoClips"> - <videoClipsInfo ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_VideoClips_videoClipsInfo" itemtype="ixConfig"/> - <videoClipsInfoLength type="int">0</videoClipsInfoLength> - <H323MaxProfile type="int">0</H323MaxProfile> - <H323MaxLevel type="int">0</H323MaxLevel> - <H323MaxBitRate type="int">0</H323MaxBitRate> - <H323Packetization type="int">0</H323Packetization> - <MaxProfileIdc type="int">66</MaxProfileIdc> - <MaxProfileIop type="int">0</MaxProfileIop> - <MaxLevel type="int">1</MaxLevel> - </videoClips> - <advancedVideo ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AdvancedVideoSettings"> - <enableCustomMaxMBPS type="bool">False</enableCustomMaxMBPS> - <customMaxMBPS type="int">0</customMaxMBPS> - <enableCustomMaxFS type="bool">False</enableCustomMaxFS> - <customMaxFS type="int">0</customMaxFS> - <enableCustomMaxDPB type="bool">False</enableCustomMaxDPB> - <customMaxDPB type="int">0</customMaxDPB> - <enableCustomMaxBRandCPB type="bool">False</enableCustomMaxBRandCPB> - <customMaxBRandCPB type="int">0</customMaxBRandCPB> - <enableMaxStaticMBPS type="bool">False</enableMaxStaticMBPS> - <maxStaticMBPS type="int">0</maxStaticMBPS> - <enableMaxRcmdNalUnitSize type="bool">False</enableMaxRcmdNalUnitSize> - <maxRcmdNalUnitSize type="int">0</maxRcmdNalUnitSize> - <enableMaxNalUnitSize type="bool">False</enableMaxNalUnitSize> - <maxNalUnitSize type="int">0</maxNalUnitSize> - </advancedVideo> - <videoSettings ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoSettings"> - <enableVideo type="bool">False</enableVideo> - <enableVideoOWD type="bool">False</enableVideoOWD> - <videoMaxSessions type="int">1</videoMaxSessions> - <_gbEnableVideo type="bool">False</_gbEnableVideo> - <videoClip type="str">Fire_avc.mp4</videoClip> - <_videoFormat type="str">Codec: H264, Duration: 12800 ms, Size: 2012176 bytes, Bitrate: 1225 kbps</_videoFormat> - <playTypeVideo type="int">0</playTypeVideo> - <videoDuration type="int">5</videoDuration> - <videoDurationUnit type="int">1</videoDurationUnit> - <useConference type="bool">False</useConference> - <_gbUseConference type="bool">False</_gbUseConference> - <rotationScheme type="int">0</rotationScheme> - <confVideoDuration type="int">1</confVideoDuration> - <confVideoDurationUnit type="int">1</confVideoDurationUnit> - <confDuration type="int">1</confDuration> - <confDurationUnit type="int">1</confDurationUnit> - <btnTelepresence type="bool">False</btnTelepresence> - <_gbUseTelepresence type="bool">False</_gbUseTelepresence> - <tipSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoTelepresenceSettings"> - <tipEndpointType type="int">1</tipEndpointType> - <tipResolution type="int">1</tipResolution> - <tipVersion type="int">1</tipVersion> - <tipSyntheticPayload type="bool">False</tipSyntheticPayload> - <tipMoreClips type="bool">False</tipMoreClips> - <_gbTipMoreClips type="int">0</_gbTipMoreClips> - <tipVideoClip2 type="str">Fire_avc.mp4</tipVideoClip2> - <tipRotationScheme type="int">0</tipRotationScheme> - <tipConfDuration type="int">1</tipConfDuration> - <tipConfDurationUnit type="int">1</tipConfDurationUnit> - <tipAudioDuration type="int">1</tipAudioDuration> - <tipAudioDurationUnit type="int">1</tipAudioDurationUnit> - <_gbTipPresentation type="bool">False</_gbTipPresentation> - <tipUsePresentationStream type="bool">False</tipUsePresentationStream> - <tipVideoClip type="str">Fire_avc.mp4</tipVideoClip> - <tipAudioClip type="str">US_042.wav</tipAudioClip> - <tipStartAfter type="int">1</tipStartAfter> - <tipStartAfterUnit type="int">1</tipStartAfterUnit> - <tipDuration type="int">1</tipDuration> - <tipDurationUnit type="int">1</tipDurationUnit> - <tipPresentationRotation type="int">0</tipPresentationRotation> - <tipLegacyMode type="bool">False</tipLegacyMode> - <_gbTipLegacy type="int">0</_gbTipLegacy> - <tipLegacyClip type="str">Fire_avc.mp4</tipLegacyClip> - <tipLegacyModeAudio type="bool">False</tipLegacyModeAudio> - <_gbTipLegacyAudio type="int">0</_gbTipLegacyAudio> - <tipLegacyClipAudio type="str">US_042.wav</tipLegacyClipAudio> - <tipG722Legacy type="bool">False</tipG722Legacy> - <tipAudioActivityMetric type="bool">False</tipAudioActivityMetric> - <tipDinamicChannels type="bool">False</tipDinamicChannels> - <tipVideoRefresh type="bool">False</tipVideoRefresh> - <tipInbandSets type="bool">False</tipInbandSets> - <tipArithmetingCoding type="bool">False</tipArithmetingCoding> - <tipLTRP type="bool">False</tipLTRP> - <tipGDR type="bool">False</tipGDR> - <tipHighProfile type="bool">False</tipHighProfile> - <tipUnrestrictedMedia type="bool">False</tipUnrestrictedMedia> - <tipRtcpFeedback type="bool">True</tipRtcpFeedback> - </tipSettings> - <_gbTosVideo type="bool">False</_gbTosVideo> - <enableTosVideo type="bool">False</enableTosVideo> - <tosVideo type="int">1</tosVideo> - <customTosVideo type="str">0x20</customTosVideo> - <_gbCustomTosVideo type="bool">False</_gbCustomTosVideo> - <tosValVideo type="int">32</tosValVideo> - <useMosVideo type="bool">False</useMosVideo> - <enableAcceptSSRCChanges type="bool">False</enableAcceptSSRCChanges> - <ignoreHintTrack type="bool">False</ignoreHintTrack> - <hintTrackType type="int">1</hintTrackType> - <enablePACSI type="bool">True</enablePACSI> - <useSingleNALUnit type="bool">False</useSingleNALUnit> - <_gbH323AdvancedSettings type="bool">False</_gbH323AdvancedSettings> - <useH323AdvancedSettings type="bool">False</useH323AdvancedSettings> - <_gbUseH323AdvancedSettings type="bool">False</_gbUseH323AdvancedSettings> - <rtpmap type="str"></rtpmap> - <fmtp type="str"></fmtp> - <isMP4 type="bool">False</isMP4> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">hintTrackType</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">videoMaxSessions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useSingleNALUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableVideo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useConference</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTosVideo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">playTypeVideo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rotationScheme</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbUseH323AdvancedSettings</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">isMP4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confVideoDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tosValVideo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enablePACSI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_videoFormat</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tosVideo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbUseTelepresence</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableVideoOWD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTosVideo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">fmtp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoDurationUnit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbUseConference</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbH323AdvancedSettings</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">_gbTosVideo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbCustomTosVideo</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">ignoreHintTrack</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableAcceptSSRCChanges</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoDuration</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">useH323AdvancedSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">videoClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confVideoDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rtpmap</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableVideo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">btnTelepresence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useMosVideo</item> - <item ref="1"/> - </item> - </_dict> - </state> - </videoSettings> - <videoConfSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoConfSettings"> - <rotationScheme type="int">0</rotationScheme> - <_gbRotationScheme type="int">0</_gbRotationScheme> - <confVideoDuration type="int">0</confVideoDuration> - <confVideoDurationUnit type="int">0</confVideoDurationUnit> - <confDuration type="int">0</confDuration> - <confDurationUnit type="int">0</confDurationUnit> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">rotationScheme</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confVideoDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">confDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbRotationScheme</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">confVideoDuration</item> - <item ref="1"/> - </item> - </_dict> - </state> - </videoConfSettings> - <videoTelepresenceSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_VideoTelepresenceSettings"> - <tipEndpointType type="int">0</tipEndpointType> - <tipResolution type="int">0</tipResolution> - <tipVersion type="int">0</tipVersion> - <tipSyntheticPayload type="bool">False</tipSyntheticPayload> - <tipMoreClips type="bool">False</tipMoreClips> - <_gbTipMoreClips type="int">0</_gbTipMoreClips> - <tipVideoClip2 type="str">Fire_avc.mp4</tipVideoClip2> - <tipRotationScheme type="int">0</tipRotationScheme> - <tipConfDuration type="int">0</tipConfDuration> - <tipConfDurationUnit type="int">0</tipConfDurationUnit> - <tipAudioDuration type="int">0</tipAudioDuration> - <tipAudioDurationUnit type="int">0</tipAudioDurationUnit> - <_gbTipPresentation type="bool">False</_gbTipPresentation> - <tipUsePresentationStream type="bool">False</tipUsePresentationStream> - <tipVideoClip type="str">Fire_avc.mp4</tipVideoClip> - <tipAudioClip type="str">US_042.wav</tipAudioClip> - <tipStartAfter type="int">0</tipStartAfter> - <tipStartAfterUnit type="int">0</tipStartAfterUnit> - <tipDuration type="int">0</tipDuration> - <tipDurationUnit type="int">0</tipDurationUnit> - <tipPresentationRotation type="int">0</tipPresentationRotation> - <tipLegacyMode type="bool">False</tipLegacyMode> - <_gbTipLegacy type="int">0</_gbTipLegacy> - <tipLegacyClip type="str">Fire_avc.mp4</tipLegacyClip> - <tipLegacyModeAudio type="bool">False</tipLegacyModeAudio> - <_gbTipLegacyAudio type="int">0</_gbTipLegacyAudio> - <tipLegacyClipAudio type="str">US_042.wav</tipLegacyClipAudio> - <tipG722Legacy type="bool">False</tipG722Legacy> - <tipAudioActivityMetric type="bool">False</tipAudioActivityMetric> - <tipDinamicChannels type="bool">False</tipDinamicChannels> - <tipVideoRefresh type="bool">False</tipVideoRefresh> - <tipInbandSets type="bool">False</tipInbandSets> - <tipArithmetingCoding type="bool">False</tipArithmetingCoding> - <tipLTRP type="bool">False</tipLTRP> - <tipGDR type="bool">False</tipGDR> - <tipHighProfile type="bool">False</tipHighProfile> - <tipUnrestrictedMedia type="bool">False</tipUnrestrictedMedia> - <tipRtcpFeedback type="bool">True</tipRtcpFeedback> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">tipDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipRotationScheme</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipLegacyMode</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipLegacyClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipVideoClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipVideoRefresh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipUsePresentationStream</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipGDR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipStartAfterUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipArithmetingCoding</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTipLegacyAudio</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tipConfDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipConfDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipG722Legacy</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipLegacyClipAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipLegacyClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipMoreClips</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipInbandSets</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipSyntheticPayload</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipVideoClip2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipAudioDurationUnit</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipResolution</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipVideoClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipLegacyClipAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipAudioDuration</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipLegacyModeAudio</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTipPresentation</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tipHighProfile</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipRtcpFeedback</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipVideoClip2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTipMoreClips</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tipVersion</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipDinamicChannels</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipEndpointType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTipLegacy</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tipLTRP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipStartAfter</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tipAudioClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipPresentationRotation</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipAudioClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipAudioActivityMetric</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tipUnrestrictedMedia</item> - <item ref="1"/> - </item> - </_dict> - </state> - </videoTelepresenceSettings> - <textSettings ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TextSettings"> - <enableText type="bool">False</enableText> - <enableTextOWD type="bool">False</enableTextOWD> - <_gbEnableText type="bool">False</_gbEnableText> - <textClip type="str">The quick brown fox jumps over the lazy dog</textClip> - <textFormat type="str">Format: t140, Max duration: 42300 ms</textFormat> - <textChpsMin type="float">1.0</textChpsMin> - <textChpsMax type="float">1.0</textChpsMax> - <textBufferTime type="int">300</textBufferTime> - <textRedundancyLevel type="int">0</textRedundancyLevel> - <textPlayType type="int">0</textPlayType> - <textDuration type="int">5</textDuration> - <textDurationUnit type="int">1</textDurationUnit> - <_gbTosText type="bool">False</_gbTosText> - <enableTosText type="bool">False</enableTosText> - <tosText type="int">1</tosText> - <customTosText type="str">0x20</customTosText> - <_gbCustomTosText type="bool">False</_gbCustomTosText> - <tosValText type="int">32</tosValText> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">tosValText</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableText</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textClip</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">customTosText</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textChpsMin</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textRedundancyLevel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textChpsMax</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textBufferTime</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textDuration</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableTextOWD</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTosText</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableText</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textPlayType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbCustomTosText</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">enableTosText</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">textFormat</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">textDurationUnit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tosText</item> - <item ref="3"/> - </item> - </_dict> - </state> - </textSettings> - <t38Settings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_T38Settings"> - <enableT38 type="bool">False</enableT38> - <_gbEnableT38 type="bool">False</_gbEnableT38> - <_gbEnableT38_2 type="bool">False</_gbEnableT38_2> - <faxImage type="str">Ixia2Pages.tif</faxImage> - <_faxFormat type="str">Format: TIFF, Img size: 1660 x 2291, Size: 140402 bytes</_faxFormat> - <t38TransportType type="int">1</t38TransportType> - <t38Port type="str">40000</t38Port> - <t38UdpEncapsulation type="int">0</t38UdpEncapsulation> - <_gbT38UdpEncapsulation type="bool">False</_gbT38UdpEncapsulation> - <t38PayloadType type="int">102</t38PayloadType> - <useFaxVersion type="bool">True</useFaxVersion> - <faxVersion type="int">0</faxVersion> - <useT38MaxBitrate type="bool">True</useT38MaxBitrate> - <t38MaxBitrate type="int">5</t38MaxBitrate> - <useT38RateMgmt type="bool">True</useT38RateMgmt> - <t38RateMgmt type="int">0</t38RateMgmt> - <useT38FillBitRemoval type="bool">False</useT38FillBitRemoval> - <t38FillBitRemoval type="int">0</t38FillBitRemoval> - <t38TranscodingMMR type="bool">False</t38TranscodingMMR> - <t38TranscodingJBIG type="bool">False</t38TranscodingJBIG> - <_gbUdpOptions type="bool">False</_gbUdpOptions> - <useErrorRecoverySchema type="bool">True</useErrorRecoverySchema> - <errorRecoverySchema type="int">0</errorRecoverySchema> - <useT38MaxDatagramSize type="bool">True</useT38MaxDatagramSize> - <t38MaxDatagramSize type="int">256</t38MaxDatagramSize> - <useT38MaxBufferSize type="bool">False</useT38MaxBufferSize> - <t38MaxBufferSize type="int">200</t38MaxBufferSize> - <imagesList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_T38Settings_imagesList" itemtype="ixConfig"/> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">t38TranscodingMMR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38UdpEncapsulation</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38MaxBitrate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38RateMgmt</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38TranscodingJBIG</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableT38</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38TransportType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableT38_2</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableT38</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">t38Port</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38FillBitRemoval</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">faxVersion</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38FillBitRemoval</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38RateMgmt</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">faxImage</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38MaxBufferSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">errorRecoverySchema</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38MaxDatagramSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38MaxBufferSize</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_faxFormat</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38PayloadType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useT38MaxDatagramSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t38MaxBitrate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useFaxVersion</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbUdpOptions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbT38UdpEncapsulation</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">imagesList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useErrorRecoverySchema</item> - <item ref="1"/> - </item> - </_dict> - </state> - </t38Settings> - <t30Parameters ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_T30Parameters"> - <t30StationId type="str">5551[000-]</t30StationId> - <t30SendCoding type="int">0</t30SendCoding> - <t30SendDataRate type="int">5</t30SendDataRate> - <t30SendPageSize type="int">0</t30SendPageSize> - <t30SendMSLT type="int">0</t30SendMSLT> - <t30SendProtocol type="int">1</t30SendProtocol> - <t30SendResolution type="int">0</t30SendResolution> - <sendCNG type="int">1</sendCNG> - <t30ReceiveCoding type="int">2</t30ReceiveCoding> - <t30ReceivePageSize type="int">2</t30ReceivePageSize> - <t30ReceiveMSLT type="int">0</t30ReceiveMSLT> - <t30ReceiveProtocol type="int">1</t30ReceiveProtocol> - <t30ReceiveR8x3 type="bool">True</t30ReceiveR8x3> - <t30ReceiveR8x7 type="bool">True</t30ReceiveR8x7> - <t30ReceiveR8x15 type="bool">True</t30ReceiveR8x15> - <t30Receive200x200 type="bool">True</t30Receive200x200> - <t30ReceiveModulations type="int">3</t30ReceiveModulations> - <sendCedBeforeDIS type="int">1</sendCedBeforeDIS> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">t30SendResolution</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">sendCedBeforeDIS</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveR8x7</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30SendPageSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveR8x3</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">t30SendCoding</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveProtocol</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">sendCNG</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30SendProtocol</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveMSLT</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30SendMSLT</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30SendDataRate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceivePageSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveModulations</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveR8x15</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30StationId</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30ReceiveCoding</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">t30Receive200x200</item> - <item ref="1"/> - </item> - </_dict> - </state> - </t30Parameters> - <msrpSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MSRPSettings"> - <enableMSRP type="bool">False</enableMSRP> - <_gbEnableMSRP type="bool">False</_gbEnableMSRP> - <msrpPort type="str">2855</msrpPort> - <domainType type="int">0</domainType> - <localDomain type="str">alice[00-99].example.com</localDomain> - <relays ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_MSRPSettings_relays" itemtype="ixConfig"/> - <relaysCount type="int">0</relaysCount> - <firstRelayIpEnabled type="bool">False</firstRelayIpEnabled> - <firstRelayIp type="str">10.10.10.1</firstRelayIp> - <firstRelayIsIPv4 type="bool">True</firstRelayIsIPv4> - <msrpRelayPort type="int">2855</msrpRelayPort> - <enableMSRPTos type="bool">False</enableMSRPTos> - <msrpTos type="int">0</msrpTos> - <customMSRPTos type="str">0x00</customMSRPTos> - <tosMSRPVal type="int">0</tosMSRPVal> - <automaticMSRPAuth type="bool">True</automaticMSRPAuth> - <msrpReuseTCP type="bool">True</msrpReuseTCP> - <msrpSendEmptyMsg type="bool">False</msrpSendEmptyMsg> - <msrpTransactionTimeout type="int">30000</msrpTransactionTimeout> - <msrpFirstChunkTimeout type="int">60000</msrpFirstChunkTimeout> - <msrpInterChunkTimeout type="int">30000</msrpInterChunkTimeout> - <msrpSessionTimeout type="int">70000</msrpSessionTimeout> - <msrpGuiFiles ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_MSRPSettings_msrpGuiFiles" itemtype="ixConfig"/> - <files ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_MSRPSettings_files" itemtype="ixConfig"/> - <filesCount type="int">0</filesCount> - <advSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MSRPAdvancedSettings"> - <closeTCPConnectionAfterBye type="bool">False</closeTCPConnectionAfterBye> - </advSettings> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">customMSRPTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">filesCount</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">firstRelayIpEnabled</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">automaticMSRPAuth</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpSendEmptyMsg</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpTransactionTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpInterChunkTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tosMSRPVal</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableMSRP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">localDomain</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">relaysCount</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">domainType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">firstRelayIp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">advSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">files</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpFirstChunkTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">firstRelayIsIPv4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbMSRPCustomTos</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">msrpSessionTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableMSRP</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableMSRPTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpReuseTCP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpGuiFiles</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpTos</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">relays</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msrpRelayPort</item> - <item ref="3"/> - </item> - </_dict> - </state> - </msrpSettings> - <_tempFile ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_FileRecord"> - <synthetic type="int">0</synthetic> - <_typeStr type="str"></_typeStr> - <name type="str"></name> - <nameSynthetic type="str"></nameSynthetic> - <fileClientPath type="str"></fileClientPath> - <filePcpuPath type="str"></filePcpuPath> - <_bFileSize type="int">20</_bFileSize> - <_msrpSizeCombo type="int">2</_msrpSizeCombo> - <size type="int">0</size> - <btnMSRPFileBrowse type="int">0</btnMSRPFileBrowse> - <type type="str">application/octet-stream</type> - <fileHash type="str"></fileHash> - </_tempFile> - <_tempAdvSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MSRPAdvancedSettings"> - <closeTCPConnectionAfterBye type="bool">False</closeTCPConnectionAfterBye> - </_tempAdvSettings> - <phoneBookInputLabel ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_PhoneBookInputLabel"> - <label type="str">5</label> - </phoneBookInputLabel> - <akaConfigurationInputLabel ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AKAConfigurationInputLabel"> - <configurationLabel type="str"></configurationLabel> - </akaConfigurationInputLabel> - <phoneBook ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_PhoneBook"> - <fromFile type="int">0</fromFile> - <pattern type="str">201004[0000-]</pattern> - <filePath type="str"></filePath> - <_PN1 type="bool">False</_PN1> - <_bTelGrp type="bool">False</_bTelGrp> - <ckTelURIBook type="bool">False</ckTelURIBook> - <_bkTelURIparams type="str">phone-context=example.com</_bkTelURIparams> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">phoneBookList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">filePath</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">pattern</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ckTelURIBook</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_bkTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_PN1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_bTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fromFile</item> - <item ref="1"/> - </item> - </_dict> - </state> - </phoneBook> - <akaConfiguration ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AKAConfiguration"/> - <milenageConfiguration ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MilenageConfiguration"/> - <msgBox ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_MsgBox"> - <msg1 type="str"></msg1> - <msg2 type="str"></msg2> - </msgBox> - <editCloudRule ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_EditCloudRule"> - <_gbStep1 type="bool">False</_gbStep1> - <requestList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditCloudRule_requestList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">ANY</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">INVITE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">ACK</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">BYE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">CANCEL</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">OPTIONS</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">REGISTER</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">NOTIFY</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">SUBSCRIBE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">REFER</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">MESSAGE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">PRACK</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">INFO</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">UPDATE</str> - </item> - </requestList> - <reqList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditCloudRule_reqList" itemtype="ixConfig"/> - <_gbStep2 type="bool">False</_gbStep2> - <what type="int">2</what> - <reqLine type="int">1</reqLine> - <headerTypeList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditCloudRule_headerTypeList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">To</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">From</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Contact</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Also</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Authorization</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Call-ID</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Content-Length</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Content-Type</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">CSeq</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Event</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Proxy-Authenticate</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Proxy-Authorization</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">RAck</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Record-Route</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Refer-To</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Referred-By</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Replaces</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Route</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">RSeq</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Subscription-State</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Via</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">WWW-Authenticate</str> - </item> - </headerTypeList> - <headerType type="str">To</headerType> - <compactForm type="str">t</compactForm> - <occurFrom type="str">1</occurFrom> - <occurTo type="str">1</occurTo> - <whatExtract type="int">3</whatExtract> - <extractHeaderName type="bool">False</extractHeaderName> - <paramName type="str"></paramName> - <revHeaderOrder type="bool">False</revHeaderOrder> - <keepHeaderCrlf type="bool">False</keepHeaderCrlf> - <_gbStep3 type="bool">False</_gbStep3> - <usePosition type="int">0</usePosition> - <beginAfter type="bool">False</beginAfter> - <afterStr type="str"><</afterStr> - <afterOccur type="str">1</afterOccur> - <endBefore type="bool">False</endBefore> - <endStr type="str">></endStr> - <endOccur type="str">last</endOccur> - <positionFrom type="str">1</positionFrom> - <positionTo type="str">last</positionTo> - <_gbStep4 type="bool">False</_gbStep4> - <formulaSource type="int">0</formulaSource> - <formula type="str"></formula> - <phoneBookPath type="str"></phoneBookPath> - <phoneBookDodPath type="str"></phoneBookDodPath> - <btnPBBrowse type="int">0</btnPBBrowse> - </editCloudRule> - <cloudRules ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CloudRules"> - <rulesList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_CloudRules_rulesList" itemtype="ixConfig"/> - <cloudPhoneBooksAbsolutePath type="str">C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion</cloudPhoneBooksAbsolutePath> - </cloudRules> - <cloudServers ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_VoIP_cloudServers" itemtype="ixConfig"/> - <transferAddress ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TransferAddress"> - <symTransferStr type="str">None</symTransferStr> - <overridePhoneNo type="bool">False</overridePhoneNo> - <_useTPb type="int">0</_useTPb> - <_tBp type="str"><None></_tBp> - <_tBpPrv type="str"></_tBpPrv> - <_tPhone type="str">150[00000000-]</_tPhone> - <tPhoneType type="int">0</tPhoneType> - <tPhone type="str">150[00000000-]</tPhone> - <_tTelGrp type="bool">False</_tTelGrp> - <_ckTTelURIParams type="bool">False</_ckTTelURIParams> - <_tTelURIparams type="str">phone-context=example.com</_tTelURIparams> - <transTelPar type="str"></transTelPar> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_tBpPrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">overridePhoneNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_useTPb</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">transTelPar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_ckTTelURIParams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">symTransferStr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tPhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_tBp</item> - <item ref="3"/> - </item> - </_dict> - </state> - </transferAddress> - <editContact ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_EditContact"> - <useDomainName type="int">0</useDomainName> - <domainName type="str">mysipdomain.ixiacom.com</domainName> - <_useEPb type="int">0</_useEPb> - <_eBp type="str"><None></_eBp> - <_eBpPrv type="str"></_eBpPrv> - <_ePhone type="str">160[00000000-]</_ePhone> - <ePhoneType type="int">0</ePhoneType> - <ePhone type="str">160[00000000-]</ePhone> - <_eTelGrp type="bool">False</_eTelGrp> - <_ckETelURI type="bool">False</_ckETelURI> - <_eTelURIparams type="str">phone-context=example.com</_eTelURIparams> - <editTelPar type="str"></editTelPar> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_useEPb</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_eBpPrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">domainName</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_eBp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_ePhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_eTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_eTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">useDomainName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">editTelPar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_ckETelURI</item> - <item ref="1"/> - </item> - </_dict> - </state> - </editContact> - <dialPlan ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_DialPlan"> - <sourceIPs type="str"></sourceIPs> - <_useSPb type="int">0</_useSPb> - <_sBp type="str"><None></_sBp> - <_sBpPrv type="str"></_sBpPrv> - <_sPhone type="str">{{pncalling}}</_sPhone> - <srcPhoneType type="int">0</srcPhoneType> - <srcPhone type="str">{{pncalling}}</srcPhone> - <_sTelGrp type="bool">False</_sTelGrp> - <_ckSTelURIParams type="bool">False</_ckSTelURIParams> - <_sTelURIparams type="str">phone-context=example.com</_sTelURIparams> - <srcTelPar type="str"></srcTelPar> - <_sTelGrp1 type="bool">False</_sTelGrp1> - <_dTelGrp1 type="bool">False</_dTelGrp1> - <symDestStr type="str">VoIP2_CALLED:{{sipportcalled}}</symDestStr> - <ovrDestPhone type="bool">True</ovrDestPhone> - <_useDPb type="int">0</_useDPb> - <_dBp type="str"><None></_dBp> - <_dBpPrv type="str"></_dBpPrv> - <_dPhone type="str">{{pncalled}}</_dPhone> - <destPhoneType type="int">0</destPhoneType> - <destPhone type="str">{{pncalled}}</destPhone> - <_dTelGrp type="bool">False</_dTelGrp> - <_ckDTelURIParams type="bool">False</_ckDTelURIParams> - <_dTelURIparams type="str">phone-context=example.com</_dTelURIparams> - <destTelPar type="str"></destTelPar> - <enableEmergencyCalls type="bool">False</enableEmergencyCalls> - <useAnonymous type="bool">False</useAnonymous> - <makeEmergencyReg type="bool">False</makeEmergencyReg> - <emergencyService type="str">sos</emergencyService> - <emergencyServiceList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_DialPlan_emergencyServiceList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">sos</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">sos.ambulance</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">sos.fire</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">sos.police</str> - </item> - </emergencyServiceList> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_useSPb</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dTelGrp1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">sourceIPs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableEmergencyCalls</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_sPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dBpPrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">destPhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">destTelPar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useAnonymous</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">symDestStr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEmergencyDest</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_sBp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">makeEmergencyReg</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">destPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srcTelPar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEmergencySource</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_ckSTelURIParams</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_dBp</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">ovrDestPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_sTelGrp1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">emergencyServiceList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_dPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srcPhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbEmergency</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_sTelURIparams</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_UseSrv1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srcPhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_sBpPrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_sTelGrp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">emergencyService</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_useDPb</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_ckDTelURIParams</item> - <item ref="1"/> - </item> - </_dict> - </state> - </dialPlan> - <signalingSettings ver="[1, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SignalingSettings"> - <enableSIP type="bool">True</enableSIP> - <port type="str">{{sipportcalling}}</port> - <tcpWriteImmediate type="bool">False</tcpWriteImmediate> - <fqdn type="bool">False</fqdn> - <realm type="str"></realm> - <user type="str">{{pncalling}}@{{domainname}}</user> - <passwd type="str">{{authpassword}}</passwd> - <akaConfCombo type="str"><None></akaConfCombo> - <akaConfComboSelIndex type="int">0</akaConfComboSelIndex> - <akaSharedSecretType type="int">0</akaSharedSecretType> - <akaOperatorVariantType type="int">0</akaOperatorVariantType> - <akaSharedSecretSequence type="str">ixia</akaSharedSecretSequence> - <akaAbsolutePath type="str">C:\Users\asordo\Documents\__Customers\Orange\OPNFV2_Lannion</akaAbsolutePath> - <akaOperatorVariantSequence type="str">ixia</akaOperatorVariantSequence> - <akaSharedSecretSource type="int">0</akaSharedSecretSource> - <akaOperatorVariantSource type="int">0</akaOperatorVariantSource> - <akaExportComplete type="int">0</akaExportComplete> - <akaUseOPasOPC type="bool">False</akaUseOPasOPC> - <milenageConfCombo type="str"><Default></milenageConfCombo> - <milenage_c1 type="str">00000000000000000000000000000000</milenage_c1> - <milenage_c2 type="str">00000000000000000000000000000001</milenage_c2> - <milenage_c3 type="str">00000000000000000000000000000002</milenage_c3> - <milenage_c4 type="str">00000000000000000000000000000004</milenage_c4> - <milenage_c5 type="str">00000000000000000000000000000008</milenage_c5> - <milenage_r1 type="int">64</milenage_r1> - <milenage_r2 type="int">0</milenage_r2> - <milenage_r3 type="int">32</milenage_r3> - <milenage_r4 type="int">64</milenage_r4> - <milenage_r5 type="int">96</milenage_r5> - <enableTos type="bool">False</enableTos> - <tos type="int">0</tos> - <customSipTos type="str">0x00</customSipTos> - <tosVal type="int">0</tosVal> - <ovrTrans type="bool">False</ovrTrans> - <ovrTransOption type="int">0</ovrTransOption> - <useServer type="bool">True</useServer> - <srvAddr type="str">{{iplistims}}</srvAddr> - <srvPort type="str">5060</srvPort> - <srvDomain type="str">{{domainname}}</srvDomain> - <outboundProxy type="bool">False</outboundProxy> - <useDnsSrv type="bool">False</useDnsSrv> - <registrarSrv type="bool">True</registrarSrv> - <autoRegister type="bool">True</autoRegister> - <overrideRegistrar type="bool">False</overrideRegistrar> - <overrideRegistrarAddress type="str">IP:PORT</overrideRegistrarAddress> - <ovrContact type="bool">False</ovrContact> - <ovrDest type="bool">True</ovrDest> - <ovrDestHostPort type="str">{{domainname}}</ovrDestHostPort> - <nUdpMaxSize type="int">2048</nUdpMaxSize> - <enableSigComp type="bool">False</enableSigComp> - <telURISource type="bool">False</telURISource> - <telURIDest type="bool">False</telURIDest> - <securityMechanismValList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_SignalingSettings_securityMechanismValList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SecurityMechanismVal"> - <checked type="bool">False</checked> - <mechanism type="str">ipsec-3gpp</mechanism> - <algorithm type="int">0</algorithm> - <algorithmStr type="str">hmac-sha-1-96</algorithmStr> - <protocol type="int">0</protocol> - <protocolStr type="str">esp</protocolStr> - <mode type="int">0</mode> - <modeStr type="str">trans</modeStr> - <encrypt_algorithm type="int">0</encrypt_algorithm> - <encrypt_algorithmStr type="str">aes-cbc</encrypt_algorithmStr> - <spi_start_idx type="int">255</spi_start_idx> - <port_c type="str">[3000-4000]</port_c> - <port_s type="str">4060</port_s> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">protocol</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">encrypt_algorithmStr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">algorithm</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">modeStr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">protocolStr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">mechanism</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">algorithmStr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">mode</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">port_s</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">port_c</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">spi_start_idx</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">encrypt_algorithm</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">checked</item> - <item ref="1"/> - </item> - </_dict> - </state> - </item> - </securityMechanismValList> - <useIPSecDoubleSPIPatch type="bool">False</useIPSecDoubleSPIPatch> - <enablePeriodicDNSQueries type="bool">False</enablePeriodicDNSQueries> - <DNSTimeoutValue type="int">60</DNSTimeoutValue> - <skipDeleteDNSRecordsAtLoopEnd type="bool">False</skipDeleteDNSRecordsAtLoopEnd> - <enableVoLTE type="bool">False</enableVoLTE> - <mediaBearerType type="int">0</mediaBearerType> - <enableCCDedicatedBearer type="bool">True</enableCCDedicatedBearer> - <volte_grbox type="bool">False</volte_grbox> - <_enableAutoHeaders type="bool">False</_enableAutoHeaders> - <_btnAutoHeaders type="bool">False</_btnAutoHeaders> - <dontEndMediaOnBye type="bool">False</dontEndMediaOnBye> - <closeTCPConnectionsOnRampdown type="bool">False</closeTCPConnectionsOnRampdown> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_gbSrvSettings</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaSharedSecretType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_btnAutoHeaders</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpWriteImmediate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrDest</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableAutoHeaders</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSIP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fqdn</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaSharedSecretSource</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenageConfCombo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c5</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaConfCombo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_UseSrv1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaOperatorVariantType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">overrideRegistrar</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">port</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">registrarSrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r5</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbRetransmissions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_r1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tos</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">user</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaOperatorVariantSource</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">telURISource</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useServer</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">nUdpMaxSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">retransmit1xx</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srvDomain</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_btnEditContact1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">telURIDest</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enablePeriodicDNSQueries</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useIPSecDoubleSPIPatch</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">securityMechanismValList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">skipDeleteDNSRecordsAtLoopEnd</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">overrideRegistrarAddress</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srvAddr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrDestHostPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">DNSTimeoutValue</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tosVal</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">passwd</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">T2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">autoRegister</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">T1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSigComp</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">akaOperatorVariantSequence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableVoLTE</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">retransmitACK</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaSharedSecretSequence</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">volte_grbox</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">customSipTos</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">dontEndMediaOnBye</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">realm</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaExportComplete</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">mediaBearerType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbPeriodicDNSQuery</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableRetransmissions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">milenage_c1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaUseOPasOPC</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_ovrDest1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">outboundProxy</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ignoreRetransmissions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">closeTCPConnectionsOnRampdown</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrContact</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaAbsolutePath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">serverAddresses</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableCCDedicatedBearer</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">akaConfComboSelIndex</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbCustomTos</item> - <item ref="4"/> - </item> - <item type="tuple"> - <item type="str">ovrTrans</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useDnsSrv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrTransOption</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_enableSIP2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableSIP1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">srvPort</item> - <item ref="1"/> - </item> - </_dict> - </state> - </signalingSettings> - <timerSettings ver="[2, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TimerSettings"> - <enableTimers type="bool">True</enableTimers> - <expirationValList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_TimerSettings_expirationValList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ExpirationVal"> - <checked type="bool">True</checked> - <message type="str">REGISTER</message> - <msgPart type="int">0</msgPart> - <msgPartStr type="str">Expires Header(s)</msgPartStr> - <value type="int">3600</value> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">message</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">msgPart</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">checked</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">value</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msgPartStr</item> - <item ref="1"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ExpirationVal"> - <checked type="bool">True</checked> - <message type="str">INVITE</message> - <msgPart type="int">2</msgPart> - <msgPartStr type="str">Session-Expire(s)</msgPartStr> - <value type="int">90</value> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">message</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">msgPart</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">checked</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">value</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msgPartStr</item> - <item ref="1"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ExpirationVal"> - <checked type="bool">True</checked> - <message type="str">UPDATE</message> - <msgPart type="int">2</msgPart> - <msgPartStr type="str">Session-Expire(s)</msgPartStr> - <value type="int">90</value> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">message</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">msgPart</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">checked</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">value</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">msgPartStr</item> - <item ref="1"/> - </item> - </_dict> - </state> - </item> - </expirationValList> - <sessionRefreshType type="int">1</sessionRefreshType> - <refreshAfterSecs type="int">3000</refreshAfterSecs> - <refreshAfterPercent type="int">50</refreshAfterPercent> - <refreshInSecs type="int">32</refreshInSecs> - <enableRetransmissions type="bool">False</enableRetransmissions> - <T1 type="int">500</T1> - <T2 type="int">4000</T2> - <ignoreRetransmissions type="bool">True</ignoreRetransmissions> - <retransmitACK type="bool">True</retransmitACK> - <stopActiveRetr type="bool">True</stopActiveRetr> - <retransmit1xx type="bool">False</retransmit1xx> - <ovrTimeout type="bool">False</ovrTimeout> - <minInterReregister type="int">0</minInterReregister> - <autoEndCall2 type="bool">False</autoEndCall2> - <enableAutoPRACK type="bool">False</enableAutoPRACK> - <rprSendNegotiatedSDP type="bool">False</rprSendNegotiatedSDP> - <rprTimeUntilNextRPR type="int">150</rprTimeUntilNextRPR> - <rprScenarioHasPRACK type="bool">False</rprScenarioHasPRACK> - <auto4xx type="bool">False</auto4xx> - <auto4xxAbort type="bool">False</auto4xxAbort> - <autoProcedureList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_TimerSettings_autoProcedureList" itemtype="ixConfig"/> - <autoProceduresCount type="int">0</autoProceduresCount> - <procListChanged type="bool">True</procListChanged> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">btnRefreshProcList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">autoEndCall</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ignoreRetransmissions</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">minInterReregister</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">autoEndCall2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTimers</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">refreshInSecs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">retransmit1xx</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbEnableTimers</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrTimeout</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">sessionRefreshType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">auto4xx</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">retransmitACK</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">procListChanged</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">T2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">autoProcedureList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbAutoPRACK</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">T1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">refreshAfterPercent</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableAutoPRACK</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">stopActiveRetr</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableRetransmissions</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rprTimeUntilNextRPR</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">rprScenarioHasPRACK</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">expirationValList</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">refreshAfterSecs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">autoProceduresCount</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">auto4xxAbort</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">rprSendNegotiatedSDP</item> - <item ref="1"/> - </item> - </_dict> - </state> - </timerSettings> - <advancedSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AdvancedSettings"> - <useCloud type="bool">False</useCloud> - <_useCloud1 type="bool">False</_useCloud1> - <cloud type="str"><None></cloud> - <serverRules ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AdvancedSettings_serverRules" itemtype="ixConfig"/> - <enableVirtualIPs type="bool">False</enableVirtualIPs> - <virtualIPTable ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AdvancedSettings_virtualIPTable" itemtype="ixConfig"/> - <ovrCloudRules type="bool">False</ovrCloudRules> - <_ovrCloudRules1 type="bool">False</_ovrCloudRules1> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_gbVirtualIPs</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">useCloud</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ovrCloudRules</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_ovrCloudRules1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">cloud</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableVirtualIPs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">virtualIPTable</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">serverRules</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_useCloud1</item> - <item ref="3"/> - </item> - </_dict> - </state> - </advancedSettings> - <tlsSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsSettings"> - <enableTLS type="bool">False</enableTLS> - <enableDTLS type="bool">False</enableDTLS> - <enableTLS_MSRP type="bool">False</enableTLS_MSRP> - <enableTLS_HTTP type="bool">False</enableTLS_HTTP> - <_enableTLS1 type="bool">False</_enableTLS1> - <_enableTLS2 type="bool">False</_enableTLS2> - <_enableTLS3 type="bool">False</_enableTLS3> - <tlsPort type="str">5061</tlsPort> - <tlsProtocol type="int">3</tlsProtocol> - <tlsSessionRefresh type="bool">False</tlsSessionRefresh> - <_tlsSessionRefresh type="bool">False</_tlsSessionRefresh> - <tlsRefreshInterval type="int">3600</tlsRefreshInterval> - <tlsAuthClient type="int">0</tlsAuthClient> - <tlsReuseConnection type="bool">False</tlsReuseConnection> - <_tlsReuseConnection type="bool">False</_tlsReuseConnection> - <ignoreSubjectAltName type="bool">False</ignoreSubjectAltName> - <tlsMutual type="bool">False</tlsMutual> - <_gbTlsMutual type="bool">False</_gbTlsMutual> - <tlsCyphers ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_TlsSettings_tlsCyphers" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-ECDSA-AES128-GCM-SHA256</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-ECDSA-AES256-GCM-SHA384</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-RSA-AES128-GCM-SHA256</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-ECDSA-AES256-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-ECDSA-AES128-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">ECDHE-RSA-AES128-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">AES128-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">True</enabled> - <name type="str">AES256-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-ECDSA-AES256-SHA384</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-ECDSA-AES128-SHA256</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-RSA-AES256-GCM-SHA384</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-RSA-AES128-SHA256</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">ECDHE-RSA-AES256-SHA384</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">DES-CBC-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">DES-CBC3-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP-DES-CBC-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP-RC2-CBC-MD5</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP-RC4-MD5</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP1024-DES-CBC-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">EXP1024-RC4-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">IDEA-CBC-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">NULL-MD5</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">NULL-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">RC4-MD5</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_TlsCyphers"> - <enabled type="bool">False</enabled> - <name type="str">RC4-SHA</name> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">enabled</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">name</item> - <item ref="3"/> - </item> - </_dict> - </state> - </item> - </tlsCyphers> - <tlsCertificatesPath type="str">C:\Program Files (x86)\Ixia\IxLoad\8.20-EA\aptixia\data\SSL_Certificates</tlsCertificatesPath> - <tlsPrivateKeyCertificate type="str">Unsecured_RSA_key_1024.pem</tlsPrivateKeyCertificate> - <tlsPublicKeyCertificate type="str">Unsecured_RSA_cert_1024.pem</tlsPublicKeyCertificate> - <tlsKeyType type="int">0</tlsKeyType> - <tlsCertType type="int">0</tlsCertType> - <tlsPassword type="str"></tlsPassword> - <sipScheme type="int">0</sipScheme> - <tlsTransportType type="int">0</tlsTransportType> - <tlsDisableUdpAndTcp type="bool">True</tlsDisableUdpAndTcp> - <tlsEnableTcpKeepAlive type="bool">False</tlsEnableTcpKeepAlive> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">tlsCertType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsPassword</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ignoreSubjectAltName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsPrivateKeyCertificate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsTransportType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTLS_HTTP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsCyphers</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsProtocol</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsKeyType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tlsSessionRefresh</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tlsCertificatesPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsEnableTcpKeepAlive</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbTlsMutual</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tlsPublicKeyCertificate</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableCert</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableTLS</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsAuthClient</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsMutual</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_enableTLS4</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_enableTLS1</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_enableTLS2</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_enableTLS3</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableDTLS</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTLS_MSRP</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsReuseConnection</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsRefreshInterval</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsSessionRefresh</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tlsDisableUdpAndTcp</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">sipScheme</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_tlsReuseConnection</item> - <item ref="3"/> - </item> - </_dict> - </state> - </tlsSettings> - <dtlsOptions ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_DtlsOptions"> - <dtlsRetry type="int">200</dtlsRetry> - <dtlsTimeout type="int">30000</dtlsTimeout> - <dtlsSessionTicket type="bool">False</dtlsSessionTicket> - </dtlsOptions> - <iceOptions ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_IceOptions"> - <iceRetryCount type="int">6</iceRetryCount> - <iceInitialRetry type="int">100</iceInitialRetry> - <iceTimeout type="int">30000</iceTimeout> - </iceOptions> - <otherSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_OtherSettings"> - <VOIP_Var0 type="str"></VOIP_Var0> - <VOIP_Var1 type="str"></VOIP_Var1> - <VOIP_Var2 type="str"></VOIP_Var2> - <VOIP_Var3 type="str"></VOIP_Var3> - <VOIP_Var4 type="str"></VOIP_Var4> - <VOIP_IPAddress0 type="str"></VOIP_IPAddress0> - <VOIP_IPAddress1 type="str"></VOIP_IPAddress1> - <VOIP_IPAddress2 type="str"></VOIP_IPAddress2> - <VOIP_IPAddress3 type="str"></VOIP_IPAddress3> - <VOIP_IPAddress4 type="str"></VOIP_IPAddress4> - <ipPreference type="int">0</ipPreference> - <bUseHardcoded type="bool">False</bUseHardcoded> - <_gbHardcodedForDemo type="bool">False</_gbHardcodedForDemo> - <_gbStunSettings type="bool">False</_gbStunSettings> - <bUseStun type="bool">False</bUseStun> - <stunAddr type="str">127.0.0.1</stunAddr> - <stunPort type="str">3478</stunPort> - <bUseIce type="bool">False</bUseIce> - <bIceLite type="bool">False</bIceLite> - <_gbSRVCCSettings type="bool">False</_gbSRVCCSettings> - <bUseSRVCC type="bool">False</bUseSRVCC> - <mobilityPath type="str"></mobilityPath> - <ddgGroupboxSRVCC type="bool">False</ddgGroupboxSRVCC> - <PCO_Groupbox type="bool">False</PCO_Groupbox> - <bUsePCO type="bool">False</bUsePCO> - <_gbPCO type="bool">False</_gbPCO> - <PCO_List type="str"></PCO_List> - <useBHCA type="bool">False</useBHCA> - <loadVariablesFromCsv type="bool">False</loadVariablesFromCsv> - <pathForCsvWithVariables type="str"></pathForCsvWithVariables> - <absolutePathForCsvWithVariables type="str"></absolutePathForCsvWithVariables> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">_gbIceSettings</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">_gbPCO</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress4</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress0</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_IPAddress2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bUseIce</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">mobilityPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var0</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbStunSettings</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">PCO_List</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_gbSRVCCSettings</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">absolutePathForCsvWithVariables</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bIceLite</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">PCO_Groupbox</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">bUseHardcoded</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">bUseSRVCC</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useBHCA</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ipPreference</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnBrowseForVariableCsv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bUsePCO</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">stunPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">bUseStun</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">stunAddr</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ddgGroupboxSRVCC</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">_gbHardcodedForDemo</item> - <item ref="2"/> - </item> - <item type="tuple"> - <item type="str">pathForCsvWithVariables</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">DodPathForCsvWithVariables</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">_varCsvGroupBox</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var1</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">loadVariablesFromCsv</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var3</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var2</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">VOIP_Var4</item> - <item ref="1"/> - </item> - </_dict> - </state> - </otherSettings> - <smsSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSSettings"> - <enableSMS type="bool">False</enableSMS> - <requestURI type="str">sc.home1.net</requestURI> - <enableTelURI type="bool">False</enableTelURI> - <telURI type="str">phone-context=example</telURI> - <smscPhoneNo type="str">61814712345</smscPhoneNo> - <smscTypeOfNo type="int">0</smscTypeOfNo> - <smscNumberingPlan type="int">0</smscNumberingPlan> - <enableSMOrigOverrideDest type="bool">False</enableSMOrigOverrideDest> - <btnSMOrigEdit type="bool">False</btnSMOrigEdit> - <enableSMOrigReqStatusReport type="bool">False</enableSMOrigReqStatusReport> - <enableSMOrigReplyPath type="bool">False</enableSMOrigReplyPath> - <smsAddressOriginator ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSAddressInfo"> - <phoneType type="bool">False</phoneType> - <phoneValue type="str">160[00000000-]</phoneValue> - <comboPhoneBookEntry type="str"><None></comboPhoneBookEntry> - </smsAddressOriginator> - <smOrigTypeOfNo type="int">0</smOrigTypeOfNo> - <smOrigNumberingPlan type="int">0</smOrigNumberingPlan> - <enableSMRecipOverrideSrc type="bool">False</enableSMRecipOverrideSrc> - <btnSMRecipEdit type="bool">False</btnSMRecipEdit> - <enableSMRecipReqStatusReport type="bool">False</enableSMRecipReqStatusReport> - <enableSMRecipReplyPath type="bool">False</enableSMRecipReplyPath> - <smsAddressRecipient ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSAddressInfo"> - <phoneType type="bool">False</phoneType> - <phoneValue type="str">160[00000000-]</phoneValue> - <comboPhoneBookEntry type="str"><None></comboPhoneBookEntry> - </smsAddressRecipient> - <smRecipTypeOfNo type="int">0</smRecipTypeOfNo> - <smRecipNumberingPlan type="int">0</smRecipNumberingPlan> - <depActivities ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_SMSSettings_depActivities" itemtype="ixConfig"/> - <useFilesFromActivity type="bool">False</useFilesFromActivity> - <verifyUserInfo type="bool">False</verifyUserInfo> - <smsImportFilesActivity type="str">None</smsImportFilesActivity> - <smsActivityForFiles type="int">0</smsActivityForFiles> - <pcpuCommonPath type="str"></pcpuCommonPath> - <smsFiles ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_SMSSettings_smsFiles" itemtype="ixConfig"/> - <smsFilesCount type="int">0</smsFilesCount> - <grBoxSMServiceCenter type="bool">False</grBoxSMServiceCenter> - <grBoxSMOriginator type="bool">False</grBoxSMOriginator> - <grBoxSMRecipient type="bool">False</grBoxSMRecipient> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">smOrigNumberingPlan</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsFiles</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableSMS</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSMOrigReplyPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsFilesCount</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnSMRecipEdit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableSMOrigReqStatusReport</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">grBoxSMRecipient</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableSMRecipOverrideSrc</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">grBoxSMOriginator</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">smsAddressOriginator</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">telURI</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">depActivities</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">pcpuCommonPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smOrigTypeOfNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smRecipTypeOfNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">requestURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsFilesBackup</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsAddressRecipient</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">useFilesFromActivity</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">smRecipNumberingPlan</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smscPhoneNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsImportFilesActivity</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">enableSMRecipReplyPath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnSMOrigEdit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">smscNumberingPlan</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">duringLoadFromBackup</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSMRecipReqStatusReport</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">grBoxSMServiceCenter</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">verifyUserInfo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">smscTypeOfNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">enableSMOrigOverrideDest</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">smsActivityForFiles</item> - <item ref="1"/> - </item> - </_dict> - </state> - </smsSettings> - <smsFilesAdd ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSFilesAdd"> - <loadedFileType type="int">0</loadedFileType> - <fileName type="str"></fileName> - <ixSmsFileName type="str"></ixSmsFileName> - <ixSmsFilePath type="str"></ixSmsFilePath> - <segmentOrder type="str"></segmentOrder> - <totalTpudSize type="str"></totalTpudSize> - <segmentNo type="str">0</segmentNo> - <comboCoding type="int">0</comboCoding> - <comboRefNo type="int">0</comboRefNo> - <contentViewEdit type="str"></contentViewEdit> - <contentViewShow type="str"></contentViewShow> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">contentViewShow</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">ixSmsFilePath</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">contentViewEdit</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">segmentOrder</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">comboRefNo</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">loadedFileType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnSmsLoadFiles</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ixSmsFileName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">btnSmsSaveAs</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fileName</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">segmentNo</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">totalTpudSize</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">comboCoding</item> - <item ref="3"/> - </item> - </_dict> - </state> - </smsFilesAdd> - <smsAddressOriginator ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSAddress"> - <radioBtnPhoneNo type="int">0</radioBtnPhoneNo> - <comboPhoneBook type="str"><None></comboPhoneBook> - <phoneBookPreview type="str"></phoneBookPreview> - <userPattern type="str">160[00000000-]</userPattern> - <ePhoneType type="int">0</ePhoneType> - <ePhone type="str">160[00000000-]</ePhone> - <fakeEnableTelURI type="bool">False</fakeEnableTelURI> - <fakeTelURI type="str"></fakeTelURI> - <fakeTelToPort type="str"></fakeTelToPort> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">userPattern</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">phoneBookPreview</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeEnableTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">comboPhoneBook</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">fakeTelToPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">radioBtnPhoneNo</item> - <item ref="1"/> - </item> - </_dict> - </state> - </smsAddressOriginator> - <smsAddressRecipient ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SMSAddress"> - <radioBtnPhoneNo type="int">0</radioBtnPhoneNo> - <comboPhoneBook type="str"><None></comboPhoneBook> - <phoneBookPreview type="str"></phoneBookPreview> - <userPattern type="str">160[00000000-]</userPattern> - <ePhoneType type="int">0</ePhoneType> - <ePhone type="str">160[00000000-]</ePhone> - <fakeEnableTelURI type="bool">False</fakeEnableTelURI> - <fakeTelURI type="str"></fakeTelURI> - <fakeTelToPort type="str"></fakeTelToPort> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">userPattern</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">phoneBookPreview</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhoneType</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">ePhone</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeEnableTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">comboPhoneBook</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">fakeTelToPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">fakeTelURI</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">radioBtnPhoneNo</item> - <item ref="1"/> - </item> - </_dict> - </state> - </smsAddressRecipient> - <compatibility ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_Compatibility"> - <hasRtpChMapRules type="bool">True</hasRtpChMapRules> - </compatibility> - <editAutoHeaderRule ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_EditAutoHeaderRule"> - <defaultMessagesList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditAutoHeaderRule_defaultMessagesList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">INVITE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">ACK</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">BYE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">CANCEL</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">OPTIONS</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">REGISTER</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">NOTIFY</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">SUBSCRIBE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">REFER</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">MESSAGE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">PRACK</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">INFO</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">UPDATE</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">100 (Trying)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">180 (Ringing)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">181 (Call Is Being Forwarded)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">182 (Queued)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">183 (Session Progress)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">200 (OK)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">202 (Accepted)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">300 (Multiple Choices)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">301 (Moved Permanently)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">302 (Moved Temporarily)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">305 (Use Proxy)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">380 (Alternative Service)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">400 (Bad Request)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">401 (Unauthorized)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">402 (Payment Required)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">403 (Forbidden)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">404 (Not Found)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">405 (Method Not Allowed)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">406 (Not Acceptable)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">407 (Proxy Authentication Required)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">408 (Request Timeout)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">410 (Gone)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">413 (Request Entity Too Large)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">414 (Request-URI Too Large)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">415 (Unsupported Media Type)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">416 (Unsupported URI Scheme)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">420 (Bad Extension)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">421 (Extension Required)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">423 (Interval Too Brief)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">480 (Temporarily not available)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">481 (Call Leg/Transaction Does Not Exist)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">482 (Loop Detected)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">483 (Too Many Hops)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">484 (Address Incomplete)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">485 (Ambiguous)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">486 (Busy Here)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">487 (Request Terminated)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">488 (Not Acceptable Here)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">491 (Request Pending)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">493 (Undecipherable)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">500 (Internal Server Error)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">501 (Not Implemented)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">502 (Bad Gateway)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">503 (Service Unavailable)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">504 (Server Time-out)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">505 (SIP Version not supported)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">513 (Message Too Large)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">600 (Busy Everywhere)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">603 (Decline)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">604 (Does not exist anywhere)</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">606 (Not Acceptable)</str> - </item> - </defaultMessagesList> - <messagesList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditAutoHeaderRule_messagesList" itemtype="ixConfig"/> - <autoHeaderTypeList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditAutoHeaderRule_autoHeaderTypeList" itemtype="ixConfig"> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Request-Uri</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Via</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">From</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">To</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Call-ID</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">CSeq</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Contact</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Content-Length</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Route</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Record-Route</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Authorization</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Proxy-Authorization</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Referred-By</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Replaces</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Event</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">RAck</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">RSeq</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Refer-To</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Subscription-State</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">WWW-Authenticate</str> - </item> - <item ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_CString"> - <str type="str">Also</str> - </item> - </autoHeaderTypeList> - <autoHeaderType type="str">To</autoHeaderType> - <option type="int">0</option> - <appendToUri type="bool">False</appendToUri> - <headerValue type="str"></headerValue> - <parsedHeader ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_EditAutoHeaderRule_parsedHeader" itemtype="ixConfig"/> - <valid type="bool">True</valid> - </editAutoHeaderRule> - <autoHeadersSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_AutoHeadersSettings"> - <enableAutoHeaders type="bool">False</enableAutoHeaders> - <tableRules ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AutoHeadersSettings_tableRules" itemtype="ixConfig"/> - <reqAutoHeadRules ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AutoHeadersSettings_reqAutoHeadRules" itemtype="ixConfig"/> - <respAutoHeadRules ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyGroupSequence_AutoHeadersSettings_respAutoHeadRules" itemtype="ixConfig"/> - </autoHeadersSettings> - <sipAdvSettings ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_SipAdvancedSettings"> - <overrideTCPLocalPort type="bool">False</overrideTCPLocalPort> - <tcpLocalPortStart type="int">40000</tcpLocalPortStart> - <tcpLocalPortEnd type="int">60000</tcpLocalPortEnd> - <tcpLocalPortStep type="int">1</tcpLocalPortStep> - <closeNonsecureTcpConnectionsEnable type="bool">False</closeNonsecureTcpConnectionsEnable> - <closeIdleTcpConnectionsEnable type="bool">False</closeIdleTcpConnectionsEnable> - <tcpIdlePeriod type="int">10</tcpIdlePeriod> - <donotCloseTCPInsideCallEnable type="bool">False</donotCloseTCPInsideCallEnable> - <recordingServerEnable type="bool">False</recordingServerEnable> - <state ver="[0, [0, [0]]]" type="ixPropertyStateDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">tcpIdlePeriod</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tcpEndPortLabel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpIdlePeriodLabel</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">donotCloseTCPInsideCallEnable</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">tcpPortStepLabel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpLocalPortStep</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpLocalPortEnd</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpStartPortLabel</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">tcpLocalPortStart</item> - <item ref="3"/> - </item> - <item type="tuple"> - <item type="str">closeIdleTcpConnectionsEnable</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">recordingServerEnable</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">overrideTCPLocalPort</item> - <item ref="1"/> - </item> - <item type="tuple"> - <item type="str">closeNonsecureTcpConnectionsEnable</item> - <item ref="1"/> - </item> - </_dict> - </state> - </sipAdvSettings> - </pm> - <objectID type="int">6</objectID> - <_apiUniqueId type="int">16382</_apiUniqueId> - <uniqueID type="int">39</uniqueID> - <commandIdCounter type="int">59</commandIdCounter> - <networkPluginSettings ver="[0]" type="ixNetworkActivityPluginSupport"> - <serializedNetworkSettingsMap ver="[0, [0, [0]]]" type="ixOrderedDict"> - <_dict type="list"/> - </serializedNetworkSettingsMap> - <protocolName type="str">VoIP</protocolName> - </networkPluginSettings> - </item> - </agentList> - </traffic> - <network ver="[17, [1, [6, [1, [0, [0]]]]]]" type="ixNetworkGroup"> - <resourceSyncTimeStamp type="NoneType">None</resourceSyncTimeStamp> - <name type="str">VM1</name> - <role type="str">Both</role> - <networkType type="str">none</networkType> - <aggregation type="int">0</aggregation> - <lineSpeed type="str">Default</lineSpeed> - <cpuAggregation type="bool">False</cpuAggregation> - <chassisChain ref="6"/> - <cardType type="str">Ixia Virtual Load Module</cardType> - <activePortList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixNetworkPortListSequenceContainer" itemtype="ixConfig"/> - <portList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" oid="21" type="ixNetworkPortListSequenceContainer" itemtype="ixConfig"> - <item ver="[3, [1, [1, [0, [0]]]]]" type="ixPort"> - <chassisId type="int">1</chassisId> - <cardId type="int">1</cardId> - <portId type="int">1</portId> - <enableCapture type="bool">False</enableCapture> - <cardType type="str">Ixia Virtual Load Module</cardType> - <portPersistentSetting ver="[0, [1, [0, [0]]]]" type="ixPortPersistentSetting"> - <viewFilter type="NoneType">None</viewFilter> - </portPersistentSetting> - <analyzerPartialCapture type="str">False;8192</analyzerPartialCapture> - <name type="str"></name> - <afmPort type="NoneType">None</afmPort> - </item> - </portList> - <comment type="str"></comment> - <networkRangeList ver="[0, [2, [0, [3, [0, [0, [0], [0]], [0]]]]]]" type="ixNetworkRangeListSequenceContainer" itemtype="ixNetworkRange"> - <item ver="[13, [1, [1, [1, [0, [0]]]]]]" oid="15" type="ixNetworkRange"> - <_smRangeObjectId type="str">5affc0a7-68f6-46f6-b801-0e18e067a572</_smRangeObjectId> - <name type="str">Network Range IP-R13 in VM1 ({{ipcard1}}+1)</name> - <rangeGroup ver="[3, [0, [1, [0, [0]]]]]" oid="16" type="ixIpDistributionGroup"> - <name type="str">Group1</name> - <ipDistributionMethod type="str">consecutiveIps</ipDistributionMethod> - <objectID type="int">0</objectID> - <_apiUniqueId type="int">15457</_apiUniqueId> - <_networkRangeList ver="[0, [3, [0, [0, [0], [0]], [0]]]]" type="ixWeakrefSequenceContainer" itemtype="ixNetworkRange"> - <item ref="15"/> - </_networkRangeList> - <_rangeGroupObjectId type="str">abf2b6e4-a102-4cbe-bf1b-a11f11b2faac</_rangeGroupObjectId> - <_smPluginObjectId type="str">9ea551b2-a0af-4a7d-9872-e9b94298d7bd</_smPluginObjectId> - </rangeGroup> - <enableStats type="bool">False</enableStats> - </item> - </networkRangeList> - <layerPlugins type="NoneType">None</layerPlugins> - <stack type="NoneType">None</stack> - <rangeGroupList ver="[1, [0, [0, [3, [0, [0, [0], [0]], [0]]]]]]" type="ixIpDistributionGroupList" itemtype="ixIpDistributionGroup"> - <item ref="16"/> - </rangeGroupList> - <dynamicControlPlaneSetting type="int">0</dynamicControlPlaneSetting> - <linkLayerOptions type="int">0</linkLayerOptions> - <ipSourcePortFrom type="int">1024</ipSourcePortFrom> - <ipSourcePortTo type="int">65535</ipSourcePortTo> - <emulatedRouterGateway type="str">0.0.0.0</emulatedRouterGateway> - <emulatedRouterSubnet type="str">255.255.0.0</emulatedRouterSubnet> - <emulatedRouterGatewayIPv6 type="str">::</emulatedRouterGatewayIPv6> - <emulatedRouterSubnetIPv6 type="str">FFFF:FFFF:FFFF:FFFF:FFFF:FFFF::0</emulatedRouterSubnetIPv6> - <emulatedRouterIpAddressPool ver="[3, [0, [0, [0], [0]], [0]]]" type="ixConfigSequenceContainer" itemtype="ixEmulatedRouterIpAddressRange"/> - <macMappingMode type="int">0</macMappingMode> - <arpSettings ver="[0, [1, [0, [0]]]]" type="ixArpSettings"> - <gratuitousArp type="bool">True</gratuitousArp> - <processGratArp type="bool">False</processGratArp> - </arpSettings> - <dnsParameters ver="[1, [1, [0, [0]]]]" type="ixDns"> - <enable type="bool">False</enable> - <cacheTimeout type="int">30000</cacheTimeout> - <serverList ver="[3, [0, [0, [0], [0]], [0]]]" type="ixConfigSequenceContainer" itemtype="_ixDnsServerItem"/> - <suffixList ver="[3, [0, [0, [0], [0]], [0]]]" type="ixConfigSequenceContainer" itemtype="_ixDnsSuffixItem"/> - </dnsParameters> - <tcpParameters ver="[0, [1, [0, [0]]]]" type="ixTcpParameters"> - <tcpParametersFull ver="[4, [1, [0, [0]]]]" oid="17" type="ixTcpParametersFull"> - <enableCongestionNotification type="bool">False</enableCongestionNotification> - <enableTimeStamp type="bool">True</enableTimeStamp> - <timeWaitRecycle type="bool">True</timeWaitRecycle> - <timeWaitReuse type="bool">False</timeWaitReuse> - <enableTxBwLimit type="bool">False</enableTxBwLimit> - <txBwLimitUnit type="int">0</txBwLimitUnit> - <txBwLimit type="int">1024</txBwLimit> - <enableRxBwLimit type="bool">False</enableRxBwLimit> - <rxBwLimitUnit type="int">0</rxBwLimitUnit> - <rxBwLimit type="int">1024</rxBwLimit> - <finTimeout type="int">60</finTimeout> - <keepAliveInterval type="int">75</keepAliveInterval> - <keepAliveProbes type="int">9</keepAliveProbes> - <keepAliveTime type="int">7200</keepAliveTime> - <synRetries type="int">5</synRetries> - <synAckRetries type="int">5</synAckRetries> - <retransmitRetries type="int">5</retransmitRetries> - <transmitBuffer type="int">8192</transmitBuffer> - <receiveBuffer type="int">8192</receiveBuffer> - <tcpSack type="bool">True</tcpSack> - <windowScaling type="bool">False</windowScaling> - <rtoMin type="int">1000</rtoMin> - <rtoMax type="int">60000</rtoMax> - </tcpParametersFull> - <tcpParametersFull ref="17"/> - </tcpParameters> - <impairment ver="[5, [1, [0, [0]]]]" type="ixImpairment"> - <enable type="bool">False</enable> - <addDelay type="bool">False</addDelay> - <addReorder type="bool">False</addReorder> - <addDrop type="bool">False</addDrop> - <addDuplicate type="bool">False</addDuplicate> - <randomizeSeed type="bool">False</randomizeSeed> - <delay type="int">1</delay> - <reorder type="int">1</reorder> - <reorderLength type="int">1</reorderLength> - <sourcePort type="int">0</sourcePort> - <destinationPort type="int">0</destinationPort> - <drop type="int">1</drop> - <duplicate type="int">1</duplicate> - <jitter type="int">0</jitter> - <gap type="int">1</gap> - <destinationIp type="str">any</destinationIp> - <typeOfService type="str">any</typeOfService> - <protocol type="str">any</protocol> - <addFragmentation type="bool">False</addFragmentation> - <fragmentationType type="str">FragmentationPercent</fragmentationType> - <fragmentPercent type="int">50</fragmentPercent> - <mtu type="int">1000</mtu> - <fragmentSequenceSkip type="int">1</fragmentSequenceSkip> - <fragmentSequenceLength type="int">1</fragmentSequenceLength> - <_seed type="int">1</_seed> - </impairment> - <_portGroupId type="str">e7fa1f9e-23d9-4742-96b2-6edce6c4424e</_portGroupId> - <_smExternalLinks ver="[0, [1, [0, [0]]]]" type="_smExternalLinkersMap"> - <externalLinks type="dict"/> - </_smExternalLinks> - <smVersion type="int">1</smVersion> - </network> - <activityParameters ver="[2, [0, [0, [3, [0, [0, [0], [0]], [0]]]]]]" type="ixActivityParametersList" itemtype="ixActivityParameters"> - <item ver="[0, [19, [1, [1, [0, [0]]]]]]" type="ixActivity"> - <agent ref="18"/> - <protocolAndType type="str">VoIP Peer</protocolAndType> - <name type="str">REGISTERING</name> - <enable type="bool">True</enable> - <timeline ver="[2, [1, [1, [0, [0]]]]]" oid="20" type="ixTimeline"> - <name type="str">Timeline1</name> - <iterationTime type="int">{{registeringduration}}</iterationTime> - <totalTime type="int">{{registeringduration}}</totalTime> - <iterations type="int">1</iterations> - <standbyTime type="int">0</standbyTime> - <offlineTime type="int">10</offlineTime> - <sustainTime type="int">0</sustainTime> - <rampUpType type="int">0</rampUpType> - <rampUpValue type="int">{{registeringtotalcalls}}</rampUpValue> - <rampUpInterval type="int">{{registeringduration}}</rampUpInterval> - <rampUpTime type="int">{{registeringduration}}</rampUpTime> - <rampDownTime type="int">0</rampDownTime> - <rampDownValue type="int">0</rampDownValue> - <timelineType type="int">1</timelineType> - <advancedIteration ver="[0, [1, [0, [0]]]]" type="ixAdvancedIteration"> - <segmentList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixTimelineSegmentList" itemtype="ixTimelineSegment"> - <item ver="[2, [0, [1, [0, [0]]]]]" type="ixLinearTimeSegment"> - <name type="str">Linear Segment 1</name> - <noiseAmplitudeScale type="int">0</noiseAmplitudeScale> - <segmentType type="int">1</segmentType> - <startObjectiveScale type="float">0.0</startObjectiveScale> - <endObjectiveScale type="float">1.0</endObjectiveScale> - <duration type="int">{{registeringduration}}</duration> - <objectID type="int">17</objectID> - </item> - </segmentList> - <maxscale type="int">20</maxscale> - <_apiUniqueId type="int">16159</_apiUniqueId> - </advancedIteration> - <objectID type="int">3</objectID> - </timeline> - <customParameters ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ixCustomActivityParameters"> - <enableDbgLog type="bool">False</enableDbgLog> - <dbgLogChannels type="str">1-5</dbgLogChannels> - <bhcaType type="int">0</bhcaType> - <talkTime type="int">10000</talkTime> - <channelsNo type="int">1</channelsNo> - <callSetupTime type="int">500</callSetupTime> - <callTeardownTime type="int">500</callTeardownTime> - <interCallDuration type="int">4000</interCallDuration> - <bhcaObjectiveValue type="int">80000</bhcaObjectiveValue> - <cpsOverwriteValueChecked type="int">0</cpsOverwriteValueChecked> - <cpsTotalChannelsChecked type="int">0</cpsTotalChannelsChecked> - <cpsOverwriteValue type="int">18</cpsOverwriteValue> - <cpsType type="int">0</cpsType> - <cpsTalkTime type="int">1500</cpsTalkTime> - <cpsChannelsNo type="int">5</cpsChannelsNo> - <cpsTotalChannelsNo type="int">2500</cpsTotalChannelsNo> - <cpsOverheadTime type="int">1500</cpsOverheadTime> - <cpsInterCallDuration type="int">2000</cpsInterCallDuration> - <cpsObjectiveValue type="int">100</cpsObjectiveValue> - <cpsRegisterTime type="int">40</cpsRegisterTime> - <cpsSplitTimeline type="int">0</cpsSplitTimeline> - <lpsType type="int">0</lpsType> - <lpsTalkTime type="int">800</lpsTalkTime> - <lpsChannelsNo type="int">2150</lpsChannelsNo> - <lpsOverheadTime type="int">1500</lpsOverheadTime> - <lpsInterLoopDuration type="int">2000</lpsInterLoopDuration> - <lpsObjectiveValue type="int">100</lpsObjectiveValue> - <lpsActiveChannel type="int">0</lpsActiveChannel> - <activeUsersTalkTime type="int">750</activeUsersTalkTime> - <activeUsersNo type="int">86534</activeUsersNo> - <activeUsersChannel type="int">0</activeUsersChannel> - <activeUsersObjectiveValue type="int">100</activeUsersObjectiveValue> - </customParameters> - <role type="str">Peer</role> - <activeRole type="str">Both</activeRole> - <objectivePercent type="float">100.0</objectivePercent> - <objectiveType type="str">concurrentConnections</objectiveType> - <objectiveValue type="int">{{registeringtotalcalls}}</objectiveValue> - <userObjectiveType type="str">activeUsers</userObjectiveType> - <userObjectiveValue type="long">{{registeringtotalcalls}}</userObjectiveValue> - <constraintType type="str">SimulatedUserConstraint</constraintType> - <constraintValue type="int">86534</constraintValue> - <timerGranularity type="int">100</timerGranularity> - <enableConstraint type="bool">True</enableConstraint> - <secondaryConstraintType type="str">SimulatedUserConstraint</secondaryConstraintType> - <secondaryConstraintValue type="int">100</secondaryConstraintValue> - <secondaryEnableConstraint type="bool">False</secondaryEnableConstraint> - <portMapPolicy type="str">protocolSpecific</portMapPolicy> - <concurrentObjectiveBehavior type="int">1</concurrentObjectiveBehavior> - <cpsObjectiveBehavior type="int">0</cpsObjectiveBehavior> - <userIpMapping type="str">1:1</userIpMapping> - <destinationIpMapping type="str">Consecutive</destinationIpMapping> - <playlists ver="[1, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixPlaylistList" itemtype="ixPlaylist"/> - <objectID type="int">2</objectID> - <_apiUniqueId type="int">15566</_apiUniqueId> - <resourceGuid type="str">58ff41761a9072107c63efca</resourceGuid> - <_objectiveValue type="int">{{registeringtotalcalls}}</_objectiveValue> - <timelineScale type="tuple"> - <item type="float">1.0</item> - </timelineScale> - </item> - <item ver="[0, [19, [1, [1, [0, [0]]]]]]" oid="24" type="ixActivity"> - <agent ref="19"/> - <protocolAndType type="str">VoIP Peer</protocolAndType> - <name type="str">CALLING</name> - <enable type="bool">True</enable> - <timeline ref="11"/> - <customParameters ver="[0, [0.1, [1, [0, [0]]]]]" type="#Plugins.agent.VoIP_Peer.VoIP_data$ixPropertyClass_ixCustomActivityParameters"> - <enableDbgLog type="bool">False</enableDbgLog> - <dbgLogChannels type="str">1-5</dbgLogChannels> - <bhcaType type="int">0</bhcaType> - <talkTime type="int">10000</talkTime> - <channelsNo type="int">1</channelsNo> - <callSetupTime type="int">500</callSetupTime> - <callTeardownTime type="int">500</callTeardownTime> - <interCallDuration type="int">4000</interCallDuration> - <bhcaObjectiveValue type="int">80000</bhcaObjectiveValue> - <cpsOverwriteValueChecked type="int">0</cpsOverwriteValueChecked> - <cpsTotalChannelsChecked type="int">0</cpsTotalChannelsChecked> - <cpsOverwriteValue type="int">18</cpsOverwriteValue> - <cpsType type="int">0</cpsType> - <cpsTalkTime type="int">30000</cpsTalkTime> - <cpsChannelsNo type="int">16750</cpsChannelsNo> - <cpsTotalChannelsNo type="int">33500</cpsTotalChannelsNo> - <cpsOverheadTime type="int">1500</cpsOverheadTime> - <cpsInterCallDuration type="int">2000</cpsInterCallDuration> - <cpsObjectiveValue type="int">100</cpsObjectiveValue> - <cpsRegisterTime type="int">40</cpsRegisterTime> - <cpsSplitTimeline type="int">0</cpsSplitTimeline> - <lpsType type="int">0</lpsType> - <lpsTalkTime type="int">800</lpsTalkTime> - <lpsChannelsNo type="int">2150</lpsChannelsNo> - <lpsOverheadTime type="int">1500</lpsOverheadTime> - <lpsInterLoopDuration type="int">2000</lpsInterLoopDuration> - <lpsObjectiveValue type="int">100</lpsObjectiveValue> - <lpsActiveChannel type="int">0</lpsActiveChannel> - <activeUsersTalkTime type="int">30000</activeUsersTalkTime> - <activeUsersNo type="int">{{activecalls}}</activeUsersNo> - <activeUsersChannel type="int">0</activeUsersChannel> - <activeUsersObjectiveValue type="int">100</activeUsersObjectiveValue> - </customParameters> - <role type="str">Peer</role> - <activeRole type="str">Both</activeRole> - <objectivePercent type="float">100.0</objectivePercent> - <objectiveType type="str">concurrentConnections</objectiveType> - <objectiveValue type="int">{{activecalls}}</objectiveValue> - <userObjectiveType type="str">activeUsers</userObjectiveType> - <userObjectiveValue type="long">{{activecalls}}</userObjectiveValue> - <constraintType type="str">SimulatedUserConstraint</constraintType> - <constraintValue type="int">{{activecalls}}</constraintValue> - <timerGranularity type="int">100</timerGranularity> - <enableConstraint type="bool">True</enableConstraint> - <secondaryConstraintType type="str">SimulatedUserConstraint</secondaryConstraintType> - <secondaryConstraintValue type="int">100</secondaryConstraintValue> - <secondaryEnableConstraint type="bool">False</secondaryEnableConstraint> - <portMapPolicy type="str">protocolSpecific</portMapPolicy> - <concurrentObjectiveBehavior type="int">1</concurrentObjectiveBehavior> - <cpsObjectiveBehavior type="int">0</cpsObjectiveBehavior> - <userIpMapping type="str">1:1</userIpMapping> - <destinationIpMapping type="str">Consecutive</destinationIpMapping> - <playlists ver="[1, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixPlaylistList" itemtype="ixPlaylist"/> - <objectID type="int">6</objectID> - <_apiUniqueId type="int">16446</_apiUniqueId> - <resourceGuid type="str">58ff41761a9072107c63efca</resourceGuid> - <_objectiveValue type="int">{{activecalls}}</_objectiveValue> - <timelineScale type="tuple"> - <item type="float">1.0</item> - </timelineScale> - </item> - </activityParameters> - <timeline ref="20"/> - <communityCapture ver="[0, [1, [0, [0]]]]" type="ixViewCommunityCapture"> - <captureViewOptions ref="12"/> - <filter ver="[0, [1, [0, [0]]]]" type="ixViewFilter"> - <filterString type="str"></filterString> - </filter> - <portList ref="21"/> - <enable type="bool">False</enable> - <_apiUniqueId type="int">15466</_apiUniqueId> - </communityCapture> - <payload type="NoneType">None</payload> - <activityIpWiring ver="[0, [1, [0, [0]]]]" oid="22" type="ixRangeAgentEndpointWiring"> - <rangeAgentConnections type="list"/> - <_apiUniqueId type="int">15451</_apiUniqueId> - <rangeAgentDict ver="[0, [0, [0]]]" type="ixOrderedDict"> - <_dict type="list"> - <item type="tuple"> - <item ref="15"/> - <item ver="[0, [1, [0, [0]]]]" type="ixRangeAgentWiring"> - <range ref="15"/> - <agentEndpointConnections type="list"/> - <agentConnectionsDict ver="[0, [0, [0]]]" type="ixOrderedDict"> - <_dict type="list"> - <item type="tuple"> - <item ref="18"/> - <item ver="[0, [1, [0, [0]]]]" type="ixAgentEndpointWiring"> - <agent ref="18"/> - <endpoints type="list"/> - <endpointsDict ver="[0, [0, [0]]]" type="ixOrderedDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">SIP</item> - <item ver="[0, [1, [0, [0]]]]" type="ixEndpoint"> - <endpointName type="str">SIP</endpointName> - <isAvailable type="bool">True</isAvailable> - </item> - </item> - <item type="tuple"> - <item type="str">RTP</item> - <item ver="[0, [1, [0, [0]]]]" type="ixEndpoint"> - <endpointName type="str">RTP</endpointName> - <isAvailable type="bool">True</isAvailable> - </item> - </item> - <item type="tuple"> - <item type="str">T38</item> - <item ver="[0, [1, [0, [0]]]]" type="ixEndpoint"> - <endpointName type="str">T38</endpointName> - <isAvailable type="bool">True</isAvailable> - </item> - </item> - <item type="tuple"> - <item type="str">MSRP</item> - <item ver="[0, [1, [0, [0]]]]" type="ixEndpoint"> - <endpointName type="str">MSRP</endpointName> - <isAvailable type="bool">True</isAvailable> - </item> - </item> - </_dict> - </endpointsDict> - </item> - </item> - <item type="tuple"> - <item ref="19"/> - <item ver="[0, [1, [0, [0]]]]" type="ixAgentEndpointWiring"> - <agent ref="19"/> - <endpoints type="list"/> - <endpointsDict ver="[0, [0, [0]]]" type="ixOrderedDict"> - <_dict type="list"> - <item type="tuple"> - <item type="str">SIP</item> - <item ver="[0, [1, [0, [0]]]]" type="ixEndpoint"> - <endpointName type="str">SIP</endpointName> - <isAvailable type="bool">True</isAvailable> - </item> - </item> - <item type="tuple"> - <item type="str">RTP</item> - <item ver="[0, [1, [0, [0]]]]" type="ixEndpoint"> - <endpointName type="str">RTP</endpointName> - <isAvailable type="bool">True</isAvailable> - </item> - </item> - <item type="tuple"> - <item type="str">T38</item> - <item ver="[0, [1, [0, [0]]]]" type="ixEndpoint"> - <endpointName type="str">T38</endpointName> - <isAvailable type="bool">True</isAvailable> - </item> - </item> - <item type="tuple"> - <item type="str">MSRP</item> - <item ver="[0, [1, [0, [0]]]]" type="ixEndpoint"> - <endpointName type="str">MSRP</endpointName> - <isAvailable type="bool">True</isAvailable> - </item> - </item> - </_dict> - </endpointsDict> - </item> - </item> - </_dict> - </agentConnectionsDict> - </item> - </item> - </_dict> - </rangeAgentDict> - </activityIpWiring> - <tcpAccelerationAllowedFlag type="bool">True</tcpAccelerationAllowedFlag> - <iterations type="int">1</iterations> - <standbyTime type="int">0</standbyTime> - <offlineTime type="int">10</offlineTime> - <sustainTime type="int">244522</sustainTime> - <iterationTime type="int">3549</iterationTime> - <totalTime type="int">3549</totalTime> - <portMapPolicy type="str">protocolSpecific</portMapPolicy> - <objectiveType type="str">n/a</objectiveType> - <objectiveValue type="int">{{registeringtotalcalls}}</objectiveValue> - <rampUpType type="int">0</rampUpType> - <rampUpValue type="int">5</rampUpValue> - <rampUpInterval type="int">1</rampUpInterval> - <rampUpTime type="int">17307</rampUpTime> - <rampDownTime type="int">20</rampDownTime> - <userObjectiveType type="str">activeUsers</userObjectiveType> - <userObjectiveValue type="long">{{registeringtotalcalls}}</userObjectiveValue> - <totalUserObjectiveValue type="long">{{registeringtotalcalls}}</totalUserObjectiveValue> - <objectID type="int">0</objectID> - <_apiUniqueId type="int">15450</_apiUniqueId> - <isVisible type="bool">True</isVisible> - <activityIpWiring ref="22"/> - <_portOperationModesAllowed type="dict"> - <item> - <key type="int">0</key> - <value type="bool">True</value> - </item> - <item> - <key type="int">1</key> - <value type="bool">True</value> - </item> - <item> - <key type="int">2</key> - <value type="bool">False</value> - </item> - <item> - <key type="int">3</key> - <value type="bool">True</value> - </item> - <item> - <key type="int">4</key> - <value type="bool">True</value> - </item> - <item> - <key type="int">8</key> - <value type="bool">True</value> - </item> - </_portOperationModesAllowed> - <_tcpAccelerationAllowed type="dict"> - <item> - <key type="int">0</key> - <value type="bool">True</value> - </item> - <item> - <key type="int">1</key> - <value type="bool">False</value> - </item> - </_tcpAccelerationAllowed> - </item> - </elementList> - <objectID type="int">0</objectID> - <_apiUniqueId type="int">15447</_apiUniqueId> - </item> - <item ver="[0, [1, [0, [0]]]]" type="ixTrafficColumn"> - <name type="str">Terminate</name> - <elementList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixScenarioElementList" itemtype="ixScenarioElement"> - <item ref="23"/> - </elementList> - <objectID type="int">2</objectID> - <_apiUniqueId type="int">15449</_apiUniqueId> - </item> - </columnList> - <links ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixActivityLinkList" itemtype="ixActivityLink"> - <item ver="[1, [0, [1, [0, [0]]]]]" type="ixActivityLink"> - <objectiveType type="str">concurrentConnections</objectiveType> - <objectiveValue type="int">{{activecalls}}</objectiveValue> - <portMapPolicy type="str">protocolSpecific</portMapPolicy> - <userObjectiveType type="str">activeUsers</userObjectiveType> - <userObjectiveValue type="long">{{activecalls}}</userObjectiveValue> - <timeline ref="11"/> - <constraintValue type="int">{{activecalls}}</constraintValue> - <enableConstraint type="bool">True</enableConstraint> - <name type="str">VoiceLink1</name> - <activityList ver="[1, [0, [0, [3, [0, [0, [0], [0]], [0]]]]]]" type="ixActivityListWeakrefSequenceContainer" itemtype="ixActivityParameters"> - <item ref="24"/> - <item ref="25"/> - </activityList> - <objectID type="int">0</objectID> - <_apiUniqueId type="int">16586</_apiUniqueId> - </item> - </links> - <appMixList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixAppMixList" itemtype="ixAppMix"/> - <objectID type="int">0</objectID> - <_apiUniqueId type="int">15446</_apiUniqueId> - </item> - </scenarioList> - <currentUniqueIDForAgent type="int">45</currentUniqueIDForAgent> - <enableNetworkDiagnostics type="bool">True</enableNetworkDiagnostics> - <showNetworkDiagnosticsFromApplyConfig type="bool">True</showNetworkDiagnosticsFromApplyConfig> - <showNetworkDiagnosticsAfterRunStops type="bool">True</showNetworkDiagnosticsAfterRunStops> - <resetNetworkDiagnosticsAtStartRun type="bool">True</resetNetworkDiagnosticsAtStartRun> - <enableNetworkDiagnosticsLogging type="bool">False</enableNetworkDiagnosticsLogging> - <enableTcpAdvancedStats type="bool">False</enableTcpAdvancedStats> - <enableFrameSizeDistributionStats type="bool">False</enableFrameSizeDistributionStats> - <isFrameSizeDistributionViewSupported type="bool">False</isFrameSizeDistributionViewSupported> - <statViewThroughputUnits type="str">Kbps</statViewThroughputUnits> - <totalUserObjectiveInfoList ver="[0, [3, [0, [0, [0], [0]], [0]]]]" type="ixTotalUserObjectiveInfoList" itemtype="ixTotalUserObjectiveInfo"/> - <activitiesGroupedByObjective type="bool">False</activitiesGroupedByObjective> - <eventHandlerSettings ver="[0, [1, [0, [0]]]]" type="ixEventHandlerSettings"> - <disabledEventClasses type="str"></disabledEventClasses> - <disabledPorts type="str"></disabledPorts> - <_apiUniqueId type="int">15684</_apiUniqueId> - </eventHandlerSettings> - <allowMixedObjectiveTypes type="bool">False</allowMixedObjectiveTypes> - <networkProtocolOptions type="NoneType">None</networkProtocolOptions> - <seedForRandomBehavior type="int">0</seedForRandomBehavior> - <csvThroughputScalingFactor type="int">0</csvThroughputScalingFactor> - <reporterThroughputScalingFactor type="int">0</reporterThroughputScalingFactor> - <profileDirectory ver="[2, [1, [0, [0]]]]" type="ixProfileDirectory"> - <categoryList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixProfileCategoryList" itemtype="ixProfileCategory"> - <item ver="[0, [1, [0, [0]]]]" type="ixProfileCategory"> - <name type="str">Playlist</name> - <categoryId type="str">playlist</categoryId> - <profileList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixProfileList" itemtype="ixProfile"/> - <pm ver="[0, [1, [0.1, [1, [0, [0]]]]]]" type="#Plugins.profile.Playlist.ixPropertyMap_PlaylistCategory$ixPropertyMap_PlaylistCategory"/> - <temporaryProfileList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixProfileList" itemtype="ixProfile"/> - <objectID type="int">0</objectID> - </item> - <item ver="[0, [1, [0, [0]]]]" type="ixProfileCategory"> - <name type="str">Random Data</name> - <categoryId type="str">rdge</categoryId> - <profileList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixProfileList" itemtype="ixProfile"/> - <pm ver="[0, [1, [0.1, [1, [0, [0]]]]]]" type="#Plugins.profile.RandomData.ixPropertyMap_RandomDataCategory$ixPropertyMap_RandomDataCategory"> - <startcore type="int">0</startcore> - <totalcores type="int">1</totalcores> - </pm> - <temporaryProfileList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixProfileList" itemtype="ixProfile"/> - <objectID type="int">1</objectID> - </item> - <item ver="[0, [1, [0, [0]]]]" type="ixProfileCategory"> - <name type="str">Real File</name> - <categoryId type="str">realfile</categoryId> - <profileList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixProfileList" itemtype="ixProfile"/> - <pm type="NoneType">None</pm> - <temporaryProfileList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixProfileList" itemtype="ixProfile"/> - <objectID type="int">2</objectID> - </item> - <item ver="[0, [1, [0, [0]]]]" type="ixProfileCategory"> - <name type="str">Unified File System</name> - <categoryId type="str">ufs</categoryId> - <profileList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixProfileList" itemtype="ixProfile"/> - <pm type="NoneType">None</pm> - <temporaryProfileList ver="[0, [0, [3, [0, [0, [0], [0]], [0]]]]]" type="ixProfileList" itemtype="ixProfile"/> - <objectID type="int">3</objectID> - </item> - </categoryList> - <_profileMru type="str"></_profileMru> - </profileDirectory> - <communityList type="NoneType">None</communityList> - <autoUpdateAppFlowsToLatest type="bool">True</autoUpdateAppFlowsToLatest> - <downgradeAppLibFlowsToLatestValidVersion type="bool">True</downgradeAppLibFlowsToLatestValidVersion> - <objectID type="int">0</objectID> - <_apiUniqueId type="int">15445</_apiUniqueId> - <lastStatViewerConfiguration type="str"></lastStatViewerConfiguration> - <statManagerOptions ver="[1, [1, [0, [0]]]]" type="ixStatManagerOptions"> - <pollingInterval type="int">2</pollingInterval> - <allowCsvLogging type="bool">True</allowCsvLogging> - <enableDataStore type="bool">False</enableDataStore> - <svConfiguration type="str">begin 666 <data> M>)S=G6MOXSBRAO^*D(,9S& GMJB[,ND,TD[2$W1NB-T]N]A>--0VDVC;EKR2 MG,L>G/]^*-E.1+)DUTQ$"LB'[C@65:5Z0Y;X4)?:_^UQ-C7N:9;':?)NA_3, MG=\.]H=%5'R.Z0/-7C9Y/<_LF3TKM'98 YJ7WY[%>6%\I$_O=J)Y$3_&42^_ M[\W+/?*")F/:J[7[(XOF;!/;>7!Y,3J^&!G]@_VKZ^,A^W@X.KV\$'__>GQT M.CI\?W9<;AA<GK\_O3@^>G:=/W_"'(#D_&#_)*/_6; V3\9]-%W0=SO63N4H MOS]+;V_CY';]_2A;T&K3*)[1X5,R?D_OHOLXS=8-S.>M>1'-YE<9'<?5@:VV MV]7VX]N,'4NIZNAI3M?;2+7MDJD\3:/)5986=%S4]GUV_G)<O\>3"4U*0_FZ MU4DTS9?-CI/HVY0>144T+-*,R@VN7L2I'X<#[;W1$SN@RT4Q7Q3/0IXOID4\ MGXJQ58V.AEN:G4>/9:_+V?$-%GF1SCZP/]G=<QMO[?,DGM*KJ'C>4GU_.*59 MD:]_&JQ+)_G>8QZ_V[DKBOE>O__P\-![L'MI=MNW3)/T_WY^-AS?T5FT&R?L MC\;$V'G>:[)]K\II?^WUB-Y$+*9*)_ZWJAF_>9"EJUZ04<I:,ZU'I>@'^X_Y M7EY9-V)V"!?TH?H[T&)U9&6HZT/$'.&R[2R?,"OO=A99LK*>[\[B,3N(]*;8 M':>S/=9N=]EJISH&.J4SFA1&$LTH?QC+5GNG^>J;=SM%U3M7WY]'<?(<3MES M*:UB/DPF'[)T,<^?6YZEXZALLG3(#H+UAL>R-RY_OTOC,35F<7(Y'B^RO!I@ ML^AQ_=LB^98ND@F=0,<+> 6=Y,O.2 $3IT<[1L':O=MAFZ9I<KLC'$L?V.DJ MRM@O?VG7"_9_;;>\R&+<CF4P?VG'P1T=?R]'V\L?K_K#59:&3RP[S'I_Q,DD M?<A[)VDVRWLO>_QB0 U^,3ZOSA-.KSQ+F+\8 ];G%QE]E]!%D4737XRKQ;=I M/&;)>I1^I\F[;[X?N6/7(Z'M4#,(:Y%$R=,R-HSNQ=U?TN RF[#SP<N><5)@ M=EMFR$EMQV]I.J51 NS<Y_I97^R%_1?CJZU5Q\>T7([D@_U)?'-SF^TM?T2S MOS+F5_LL36S;9^UH]YZP8764CA?E,1VO#TT>?,;J",N,)F\ES]TO2Q^J/T@E MW6J?NR@?W$7)+66"LBS-<FTUY$^/#LS]/OM_?SWF#G;)?O_YE_UR/!U4CO;[ MU>?]2L7*Y7Y_J>A+?SZP]ONUW_;+#G70+^VQG_O5057VEY]69\C)09GY]OOK MWYA9*;@_+X<%R$$0<A!!#E-28W4*P@E" $'6!@1A3"VZV( N%D(72]!%[B57 M:588@ZM/1ADKFQ7%8UZB\CC^K$*@S;IHKI[>Y "JV0C5;$$U2U+M!^,HSK\; MGXIX&O\W*F>KG&AEW']6-,AD73-+BV0N()F#D,S9*MDH+:*I<4YG:?;TT\?W M/[]:,-F@_G'I 7*Y"+G<K7(Q5J!MJB79JXNE9SCZ@%@>0BQOJUAEKCEC\&@< MWM\:/Q'C/$X6!7V]:(UVZ^+96L0+ /%\A'C^GQ3/7069MZU>W7!=/D>+?"$@ M7X"0+_BS?4^9?J1)0%>+@,0$% P1"H;;3Z;K0%]_#GVQ5%?(TZ,0-)<GF,D\ M$6?S\C3MS-JUJ^E4;MRDF3&8QB60E1.MUT_7-MKN8-I&0 I 88#( 40&@;,X M^5Y%2U_=W>JF],\]" 0%!$,%1,("4"9J#.>4OGY4UDWIGW40B ((!@.(R & M3"<9^S\WANR[%J9H-5OZI_X$FOL3S.2?B+/_S4(9UVT,/MF@_DD9@>;_! , M1"0 0++/T32>&*LXK^F8QO<MC,8&J_JG9 3B 8(! B(2 5:\=GK>)M,=3,P@ M,B 8-" B&P ROG\JVDIO=5,=S,X@ B 8!" B T RQ44M%1D_??PV;P$ &JS6 MQ?/U+,M"DW^"F?T3<?K?V,=:2W"BN;I<@1ZY(!*P,"1@2230T->XM--J?X,M MUT4,]8@(48"%H0 +00&C+$KR65P8A]F<A?R?!<U?G^%@H]R45P\:6.#U M0% M P0:"&'.IT]M*U>9Y'33=/D)8@4+PPH6@A56(ZO5+@?:Y)33 P\6! \6!AXL M!#SP4;;1X0"+G&IZ^,&"^,'"\(,E\<.V):,AS>YIIF;)B+?=P9*1!;&$A6$) M2[JZX+[=)2,+8@4+PPJ6=!T!E.EM+!E9$"M8&%:PI.L%LDQO:,G(AKC PG"! M)5T6V"C4VUDRLB$VL#%L8(ML $CVQI>,;(@); P3V"(38,5[BTM&-H0'-@8/ M;!$/ !G?S)*1#=X_A+J!2+J#")#I;2\9V1 0V!@@L*5[B9KZV!M:,K(A$K Q M)&!+]Q(U]+6WOV1D0Q1@8RC 1E# VUXRLB$TL#%H8"/0X.TN&=D0*]@85K 1 MK/"6EXP<"!YL##S8"'AXJTM&#L0/#H8?'.1=1J,[YNCV;KXHEBL\[2P6R5:[ MN"$<X@<'PP^.R ^.O$JYNG%*S<1NLW']2TD.Q! .AB$<D2&V2*EDWK+=@?YE M)P?B#0?#&X[(&X"DJS5:-;USLW']"U,.^!P#ZD$&D3ZV2*FD=VYWH'_ARH$( MQ<$0BK/]6L7G]/1J&,]?_W#6RE G#VDY$'XX&/QP1/QP (9;Y$_&[^DB,P;1 MM'SN)<H76?7486[\M K[YU>?J]?Z(;UQW=#4)#-$*@Z&5!R15$K=19E_'QR^ M?KEOK6)EK(.>"$&)@X$21X026*)!FQ(-NCC9NA!].!CZ<$3Z 9KN6M"IRI& M)F2:'X::!(1 Q,6 B"N"2*DH^+3@.M;6>IMH5O_0="$$<3$(XDH((LMV."Y* M1&U=-\EN!P,6 @X7 QRN!!RR<,/%>$SS_&:AH-.!MCMXM!?""Q>#%ZZ$%[* M?T194KXQJ'7U9,/ZY[XNA!,N!B=<"2=DZ4ZBF!UJ^\I)=O5?L'7!!Z113TB+ MT !ENV]IN8."="<9UG^1UH5HPL70A(N@B;,TG:N8G4AV^:F)IDP'$8*+(017 M) 17GO[*Z=RHHE9XOE@[Z&"Z I&$BR$)5R0)0$H^0[4L(VQ<_\3%@TC#Q9"& M*Y(&(*%P>FQ9PP;K^B<O'D0;'H8V/)$V !&%?-^RB W6]4]C/(@]/ Q[>")[ M ")R;-6RA*!M_=,9#V(0#\,@GL@@@("G24&S*CCC:)%5KP R?CJ\O_W9^.<L M_U=K6FYSHW^JXT%DXF'(Q)/(!%B+B:9J%F)$N_Q41U./A,C$PY"))Y))J:68 M%XN"SN95[BJ#;2\CBG8[>',31"8>ADP\D4P X08I2U3C]H63['8PG0%?XX1Z MCY/()8!PJTF;JH[79+Z#"0W$*!Z&43R140 9GR\:MBN?:+:#*0S$(QZ&1SR1 M1Z!\E^0/-&L_W0EF]4]<?(A!/ R#>"*#- ]:19VNP;K^:8H/,8B/81!?9!! MQ.-D%9IQFL1%S 1IX<&-E82@;?TWU/L0?_@8_O!%_M@H8'L/ODCZP?>(Z[FE MWH?HP\?0AR_2QT;Y!M6+E]7TOYIM_3?9^Q!G^!C.\$7. 2L;DB^H5G[YP_ MLOZ;ZWV(-'P,:?@(TJCN-VE7M;K)#FZH]R' \#& X2, 8WU!MMUY"F>T@YOI M?8@M? Q;^ BVN*;_5L%DHMD.;J7WP;?#HEX/BX*)29RI44XTW,$-]3Y$%#Z& M*'P$42S/>@]Q<6<<+HH[MBD>+Y?<RD<O6/3MG60QKCA]]:!' *&'CT$/'X$> MRZ#+XD'&IZ.KEK5\,<OIIH<V H@V @QM! C:J 4X&BC1K3++Z:8',@((,@(, M9 0(R*@'>#94HEMIEM--#UT$$%T$&+H($'11"_ \?F0)OYK3SM/L]<^S 1I* M+C@]]<!& ,%&@(&- 'E1HWHB0-65#=DX?WE#4Q*$H"/ 0$<@0D>P]?*&T<_I M6-4UCI5Q_1<Z HA# @R'!"*' !(*%R3:E1 VKO^21P!A28#!DD#$$D!"?F&S M705!V_HO=@00GP08/@E$/H&&,;>\WO(HAFSKO^P1@/4K4 4L1$@!!)36E]K5 ML,F\_LL@(<0B 89% I%% !E?%IS:U4^RJ__21PC!2(B!D5"$$3 #_EO9.02T MK?_21PA128BADE"D$E! ?B&E;0E!Z_HO@(00HH081 E%1(&F,EO73UJ>W6#] MZ;]0$D+L$F+8)139I5'H]>**"E$%V_HOEH00MX08;@D1W,*OLB@3\,5V!Y=/ M0@A;0@RVA!ALX=9;U"GX;+N#BRDA1"TAAEI"!+4TK[8H4Q/VT\'EEA#"F1"# M,Z'T!'K#TLXHGJE;VI&,\TL[FF9$$-*$&*0)1:0I585$'-)B,:^B57$?]287 M^I=YB D6Z$-5Z!/9!M!S%$V_*U,2-JY_G8>8< D_7 T_$70 %=?WP2A3LMF! M_D4?8H)U_$Q4(3]3I!ZH3RX?"BG#5?F\Q#8W^E>#B F6_C-1M?],Z6GXIM>K M*GBKC&B7/_'HH4AB@A4!351)0%.N\R$7-%V&N7Y!99LWT@&6NSC5@)4"352I M0%,N]]$D8.NW<6YZS:^N,PQ8,=!$E0PTI4?BH==>WL9YL<Q2*D9PHWU^).M9 MIB F6$+01-40-.4B@K*<+Q?QN, 57"04['<QJL%"@B:JDJ IEQ*4Q:P]UZY& MS68'78QTL."@B:HX:,HE!X'R&.OG(E1("1OO8!()UAVOQ$7(*!<?W#3$CZCJ M02YYZ&#N")<IQ]4IEPN5;Q[FJA3=Y$+_54724+ <5[%<+E;8.-15R=ED7O]U M1@(7-<=5-9?*FF^9'RF[?VJS$WZFI.=Z!(&KH./*H,MUT(D\96^8R:BZIPIR MTL&<":Z9CBN:+E=-!V1MFM*TJ^L6+QW,GN#*ZKC2ZG)M]8W]54A[JGHL[*:+ M&14(3;C"ZW+E]<U]5JFV6_UT,;L"(0I7CEVJQ[[M_%5=QU%\^A)]<)IJNA9, MX.+MN.KM<OEV(B\E2R&K6$C>[*2#LQ=<UAU7UUTN[ [(R@]+9<)N<]/!^0LL M 4]0->")5 0>R /#TROCG"6_Z%;)#+;)/#_Z=6D)XA6J%#R1:\%;0#T'%NVJ M$E)+A0OK.@J6NQCG(%2AZL$3N2#\-@'9MKS%17O0=A<C&B0H5'%X(E>'WR;B M>52,[U2I^&R\@]DG6"B>H"K%$[E4?*.,^9Q- ]LJ0\J+R)ON8(X)5HTGJ++Q M1*X;#TCX$F/+8UDVW,%J'5@KGJ"*Q1.I6OSV'JAF)$O6.UBK ZO)$U0Y>2+5 MDX>$/+WX?#HZ5G1JAHWK?S* @-7F":K</)'JS6-D;'E0-YG7_WP >O1$U1! M>B)5I,=(V?;@;K2O_QD E:J)ZA2]42J58\1\YH6JQM;%"K*.]'_9 !:]@3 M5!%[(E6QAV0]''Q4E#(!RQT\&4# \O4$5;^>2 7LMRK8<K8$;7?P= !J]L3 M5'E[(M6WWZIBVXD2-M[!LP $+'1/4)7NB53J?JN.2G+D!@\=O)")V"#?V"B^ ML3%\\_X?JB:5@.4.7KE$;!!Q;!3BV!C$X>)L.4."MCMX 1.Q0;ZQ47QC8_B& MB[3M# D;[^"%3,0& <=& 8Z- 1PNU*J\01)-IT]J)87\=/#:)N* S&.CF,?& M, \7M9+SSP8/';RXB3@@^#@H\'$PX$,>'U4M44*F.0TU48X#4HZ#HAP'0SE\ MH"V?@F#CW&JY)M9Q0-9Q4*SC8%B'#[7MC-E@G5-2$^\X(.\X*-YQ,+S#QZHD M46YRP6FJB7T<D'T<%/LX&/:QU&5*R#2GH2;:<4#:<5"TXV!HQU*9*6'CG(Z: MF,<!F<=!,8^#81Y+::9LL,XIJ8E[')!['!3W.!CNL=1GRDTN.$TU,9 #,I"# M8B 'PT"VNDP)F>8TU$0Z+D@Z#HIT' SIV"HS)6R<TU$3W[@@W[@HOG$Q?&,K MS90-UCDE-5&."U*.BZ(<%T,YMOI,N<D%_ZB*)DU!XG%1Q.-BB,=1ERDAT_PM MDYHT!%G'1;&.BV$=1V6FA(US.FKB&Q?D&Q?%-RZ&;QREF;+!.J>D)LIQ0<IQ M493C8BC'49\I-[G@--5$/"Y(/"Z*>%P,\;CJ,B5DFM-0$^NX(.NX*-9Q,:SC MJLR4L'%.1TU\XX)\XZ+XQL7PC:LT4S98YY341#D>2#DNBG)<#.6XZC/E)A>< MIIJ(QP.)QT,1CX<A'D]=IH1,<QIJ8AT/9!T/Q3H>AG4\E9D2-L[=?:Z);SR0 M;SP4WW@8OO&49LH&ZYR2FBC' RG'0U&.AZ$<3WVFW.2"TU03\7@@\7@HXO$P MQ#,XO!@<GQEJ;K^"C7,Z:N(=#^0=#\4['H9WQ%!;SI=-YCDM-7&.!W*.A^(< M#\,Y8K!MY\Q&^YR:FHC' XG'0Q&/AR$>,5HE>7.S$TY7303D@03DH0C(PQ#0 MY=7H]/)BJ"AU-ECGE-1$0#Y(0!Z*@#P, 4FQMIP\&^US:FIB'Q]D'Q_%/CZ& M?:1HVTZ?S0XX/35QD ]RD(_B(!_#05*X2A+H%B_<XZ2:R,@'R<A'D9&/(:/K MXP^GP]'QM:(4VF2>TU(3&_D@&_DH-O(Q;"0'V_:SXHT..#TU<9$/<I&/XB(? MPT5RN&VGT0T>.$4U$9(/$I*/(B0?]18#*5XEB72;&TY;3<3D@\3DHXC)QQ#3 MQ>7H].0?BO(H;)S341,K^2 K^2A6\C&L)(;:<@YM,L]IJ8F/?)"/?!0?^1@^ M$H-M.W\VVN?4U,1( <A(/HJ1? PCB=$JR9V;G7"Z:J*E *2E $5+ 8:6AI_> M#P?7I^]5/8'::)]34Q,K!2 K!2A6"E!O;I.C;3F%;O# O2M&$R,%(",%*$8* M4*]RD^-M_0U&&UQPFFIBI0!DI0#%2@'JS6YRP$K2Z58_G+J:R"D R2E D5. M(Z<3A4@/V.94U$1+ 4A+ 8J6 APMG2B%>= ZIZ0F-@I -@I0;!1@V$B(M7V, MA\US6FKBHP#DHP#%1P&&CX1@%0'\!A^<JII(*0!)*4"14H AI?/CX?#P@ZH9 M:(-U3DE-E!2"E!2@*"G 4)(4:\MYL]$^IZ8F-@I!-@I1;!1BV$B*MNW<V>R MTU,3'84@'84H.@HQ="2%JR1_;O'"O092$R6%("6%*$H*,91T>G%RJ2A]0J8Y M#35140A248BBHA!#17R@+2=.V#BGHR;^"4'^"5'\$V+XAP^U_3>2@M8Y)34Q M4 @R4(ABH!##0'RLBEY'VNR"TU03#84@#84H&@HQ-/3IZNA0V3N<8>.<CII( M* 1)*$214(@A(3'4EO-EDWE.2TW\$X+\$Z+X)\3PCQALVSFST3ZGIAX&LDR0 M@4(4 X48!A*C59(W-SOA=-5#0Y8)T5"E]E9=62N$KE?7ZM[D#-KF5-3#0)8) M,5"E+4)%# ,)D;:<-ANLUY4,]#"/94+,4^F+4!+#/$*L;2?-)O.<EGK8QS(A M]JD41FB)81\A6"4I<Z,/3E4])&29$ E56B-4Q9#0IXN/%Y=_7*B;)#79Y]34 M0T.6"=%0I3%"30P-2=&V/DUJ=,#IJ8>$+!,BH4IEA)XH$GH.5]$SKLT..#WU M$)%E0D14J8S0$T5$4KCJ.NC&YUT#/5QDF1 753HC%,5PT;*TU/HTP78VSO/; M]LK,-YGGM-1$102BHDIAA)88*BJ#/;U-TJPJ5KX*.L_+ZL2M"MKH@U-5$Q,1 MD(D(BHD(ZNZY>AG#RVS.;+7=/T7CG(Z:J(B 5$105$3P%4_764V-D)+UNI*A M)BHB(!41%!41D8J@.KRT&F\LW)N,YG>4%[$\F+\LHFR9?Y6<IED[ 5F(H%B( MB"QD >7B3Z*8':ZQ6<G7=,=F!W5!=75($((("H*("$&0G,/%>,PBO5E,%4JZ MV4E=5DW$3D :(B@:(B(-0;)>TS&-[Y7VTTTNZI+J&O@@$!$4$!$1B"!)#]D< M<#8OE&JZT0>73S6)"E(105$1$:D(.!\=9UF:J:@(+QOFST:Z] ,9B* 8B(@, M5"DJ"#C*XMM;FAG+>%OKAZ+9#LX\%H@\!(4\1$0>2+KKT57;LM5-=G!6L4"> ML5 \8XD\ TFV+B+5MFZ2W0[.'Q8(,18*8BP18L"A&L]HNBA:'ZJ"V0[.$A9( M+1:*6BR16N LQXALGF;MBR<9YM[1H4D^$%DL%+)8,K+(\I6 .XBF4^-DFCZT M+2%LG'M\3Y.,(*I8*%2Q9%2!9:R6J%L_W0*6N3M\-0D(0HF%@A)+AA)8P.%1 MZV==T2QW8X FZ4#XL%#P8<GPT2S=ARG[WABDR20N6E^<A1UP*XJ:Y 2QPT)A MAR5B1Y.<QX]%%HT+XW.4Q>71YRKZ9;,3;GE1DZP@C5@H&K$P-%*M\"N:(X*V MN4FV)C"Q03"Q4&!BB6 ",/$1G49/*IA8-LPSL:;IC@U2BHVB%%NBE%)1\6Z5 M-"^,HYAUDRIBXZ?#^]N?C7_.\G^U=[/*!A<=L+(-LHN-8A=;8A= TG,ZB:-5 MK*._JU!T@X<.2-H&B<9&$8TM$0U"T//H4;&@-0\=T+4-,HZ-8AQ;8AR,H'&B M6M 7#QTPMPW2CHVB'5NBG2V"7BL?\M?-0U[7:0FD'QM%/[9$/PA!U0[YZ^8A MKXG';9");!03V1(38015.N2OFX>\)CZW02JR451D2U34,'':O8K'WQ=SM5.G M9B<=L+L-4I&-HB);HB*<K.V/_<U..F!X!\0D&X5)MG3]!BEKZQE@LY,.&-X! MZ<E!T9.#H:?/\82FAA9Q,:ZZ('P'Q"D'A5,.!J>: V\]+V!<<1IK(BP')"P' M15@.AK : V__E(9QQ6FL";H<$+H<%'0Y&.A:!JX>O;;ZX=351& .2& .BL < M#($U1*TH12#7"W2M$CH@CCDH'',P. 9'K2HY8)>W-+&9 [*9@V(S!\-F<M1J M"&VK'TY=3:#F@*#FH$#-P8!:0]0:,L.&906BB=<<D-<<%*\Y&%Z#H]:1&3:L M@A%-V.:"V.:@L,T1L0VHMK7(BW1F5$XY(2OW@)(FH&3=2+^3"RXN2&$NBL)< MD<*:5'JE/H(R?VU>WS]*QXL9.[;C*2U_L&]6$2Y_1+.R#=-A5%IAGP=9FN>E ME=+:P?YU-(G3RIBP(6:VV#0XKDPVMAI,8^;T),UFBVDTI$41)[>Y<1]-%_3= MSO_^^#^/1[^R_PY__?$_B[3X]3/-RGNFE[_L+7^0GKO\\(O4N@QUU?:?+QO_ M]?+Q_UX^[AA]]H>@>7&]2,3C^'%:_/K;XVQJW"_]OUM[-I<?#)J,TPG;8[5A M4=SL$F_Y^;<?;XM?:T?&3*V\G"8WZ9!F<32-_QN5MV*\CVX-YB7)]Q[S>&7J MKBCF>_W^P\-#[\'NI=EMWS)-TO_[^=EP?$=GT2[K>T64C.GJ2-;[3Y#[+UOQ MQV@8Y5'.OA8K-5C'B\=763K/Q7;+EF4\94<NMY:?2?EEO_XMO,^ =>C;-'LJ M6WQ.XS%=)\[G_>LM9!N#F]N3>$K+,5 V&.Q]^<3&8?XERM-LDGY9=^S\R]>O MRP%3;KS,RD'[Y?+JXN2S]?4L2A*F_)?KXP]?!X=G9U^K[[]>7A]>?#C^>A_> M];+'F^IP!&=P1#1;1[P\AN= 7C;(.QXM*IV,?N/FWQ]6'7]#F^&V-N5A7'[[ M-QT7\3W--[7Z/;Z]F[)_16.KJ](5BXIEM G[+[Z):5:V=.W0_T9#?]>]\2>[ MCNW:N]]N'']WXMV8MN>0\8T75IHT&9!=L0Y8[UOL5]<A;F6DMDG>K^P*P].C M<N-PE^RZNQ;9M4V7>*YK.^XNL^'Y[)A,?]<F%H/AT#'-7>('KE?9KNT.'A,; M%&7&OTS*%I9)_%UFR3)'A.R9WIYM]P+'M<+0_9MI[9GF^G"YO1KLIO-YV<)@ M.6 OB:>K<5RF\M40;_B;+#/I>32^BQ.ZUN5X>'YXM'LXO+P^NMP]6W9DJ-T6 M<X>324;S:OB3T.H1+^B1'B'6RV[$[)D]EZ7BEV]6#=U>K=D-#<R]/6+>F'L. MI=_V?/-FCUB1_X,CM0EO[#W+GY ]SYUX>TY@^S\05VP5F1[=8WV-[OG^-[(7 M3NP??#[9]IL"D4,^?;R@Q4.:?5^?9EBKH&>7D1%OF=2@)AL,7=,IC?)*X=/' MLS2:&$PXTS@^Y(W5FFTP5LMS+!F79V:CS$BY\=-CX/W\Y?0QCKXLO7PICWI7 M]-*<NDX?KVEYCS3-:F'9/;^,W'975H F</KX=#X<1],J&F*N^K[PO;SC\+ZV M^>,W=JHI=^.^!<=+&90\(JJ=,2>PVHF.YN7<_7)>W139,";2Z93ESW**5C8X MHD7U).>RF_';&G<^HU&6T$EY\B_;W413]H>O&1"V-]HI;\9>SN% ,_SF1BLL M#Y<M2X6JAE6:J9D1MV\RM'J@;9,ML4FSN2PMTG$ZK>X'O(G&%+8(MFHT>ITN M"GI=S=DA:\)FR,QL7F:/T7-W$:6'MC?URXW];=DO)T])V6L_TB?@3,PU^5Q. M5*5&ST.O8;99MJ[FO?W!Y<7H^&+$\.+Z>,@^');%.,LM]=^_'A^=C@[?GQV7 M&P:7Y^]/+XX9T%33[.JK_/XRF3Y5OY/RB[,X^4XGS]O[+_NLGR9_^92#V\_8 M).%@O^K(1L+.5>]V*FL[SS/Q';+#;U_.]':,=(EL#..BZM'@,WI/IPSAEO%6 M>QSL#Y/9W&#ROMN)V-^!)=!>?M^;K^<F8]HK&ZSF*N4D>Z>,>Z54N6F0)C?Q M[2*K!*W30LXVCMG&ZN^Q^OT^RI;'N#R/E_NOSNA1-2>3S_03FH^SN.HAJXVU MZ3JSRDYI4W8^6T_YRK_VRE'=[X3>;]FAUJ)?/_+7]HUJ]S+.\@<;\^7?CO'I &_P,I\+)D end </svConfiguration> - <svRestConfiguration type="str"></svRestConfiguration> - </statManagerOptions> - <currentUniqueIDForAgent type="int">45</currentUniqueIDForAgent> - <_scenarioElementFactory ver="[0, [1, [0, [0]]]]" type="ixScenarioElementFactory"> - <singletonDict type="dict"/> - <referenceCountDict type="dict"> - <item> - <key type="str">qovCoprocessor</key> - <value type="int">0</value> - </item> - <item> - <key type="str">Impairment</key> - <value type="int">0</value> - </item> - <item> - <key type="str">asrCoprocessor</key> - <value type="int">0</value> - </item> - </referenceCountDict> - </_scenarioElementFactory> - </item> - </testList> -</root> diff --git a/functest/opnfv_tests/vnf/ims/ixia/files/Registration_only_LPS.tst b/functest/opnfv_tests/vnf/ims/ixia/files/Registration_only_LPS.tst Binary files differdeleted file mode 100644 index a7bce95a0..000000000 --- a/functest/opnfv_tests/vnf/ims/ixia/files/Registration_only_LPS.tst +++ /dev/null diff --git a/functest/opnfv_tests/vnf/ims/ixia/files/SIPCall.tst b/functest/opnfv_tests/vnf/ims/ixia/files/SIPCall.tst Binary files differdeleted file mode 100644 index 783918861..000000000 --- a/functest/opnfv_tests/vnf/ims/ixia/files/SIPCall.tst +++ /dev/null diff --git a/functest/opnfv_tests/vnf/ims/ixia/utils/IxChassisUtils.py b/functest/opnfv_tests/vnf/ims/ixia/utils/IxChassisUtils.py deleted file mode 100644 index 973e0264d..000000000 --- a/functest/opnfv_tests/vnf/ims/ixia/utils/IxChassisUtils.py +++ /dev/null @@ -1,150 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2017 IXIA and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 - -import httplib2 -import json -import logging - - -okStates = [200, 201, 202] -states = [ - 'Queued', - 'In Progress', - 'Manual Step Required', - 'Error', - 'Finished', - 'Aborted', - 'Retried', - 'IRebooting', - 'Force Continue', - 'Pending', - ] -notStartedState = 'Not_Started' -errorStates = ['Error', 'Aborted', 'Force Continue'] -finishedStates = ['Manual Step Required', 'Finished'] - -logger = logging.getLogger(__name__) - - -class TestFailedError(Exception): - pass - - -class ChassisRestAPI: - @staticmethod - def postWithPayload(loginUrl, payload=None): - urlHeadersJson = {'content-type': 'application/json'} - try: - h = httplib2.Http('.cache', - disable_ssl_certificate_validation=True) - if payload is None: - logger.debug('POST: ' + loginUrl) - (response, content) = h.request(loginUrl, 'POST', '', - urlHeadersJson) - logger.debug(content) - else: - logger.debug('POST: ' + loginUrl + ' <- Data: ' + str(payload)) - (response, content) = h.request(loginUrl, 'POST', - body=payload, - headers=urlHeadersJson) - logger.debug(response) - logger.debug(content) - except Exception, e: - raise Exception('Got an error code: ', e) - return content - - @staticmethod - def postWithPayloadAndHeaders(loginUrl, urlHeadersJson, - payload=None): - try: - h = httplib2.Http('.cache', - disable_ssl_certificate_validation=True) - if payload is None: - logger.debug('POST: ' + loginUrl) - (response, content) = h.request(loginUrl, 'POST', '', - urlHeadersJson) - else: - logger.debug('POST: ' + loginUrl + ' <- Data: ' + str(payload)) - (response, content) = h.request(loginUrl, 'POST', - body=payload, - headers=urlHeadersJson) - except Exception, e: - raise Exception('Got an error code: ', e) - return content - - @staticmethod - def postOperation(url, apiKey, payload=''): - urlHeadersJson = {'content-type': 'application/json', - 'X-Api-Key': '%s' % str(apiKey)} - try: - h = httplib2.Http('.cache', - disable_ssl_certificate_validation=True) - if payload is None: - logger.debug('POST: ' + url) - (response, content) = h.request(url, 'POST', - json.dumps(payload), - urlHeadersJson) - else: - logger.debug('POST: ' + url + ' <- Data: ' + str(payload)) - (response, content) = h.request(url, 'POST', - json.dumps(payload), - headers=urlHeadersJson) - except Exception, e: - raise Exception('Got an error code: ', e) - return content - - @staticmethod - def patch(url, payload, apiKey): - urlHeadersJson = {'content-type': 'application/json', - 'X-Api-Key': '%s' % str(apiKey)} - try: - h = httplib2.Http('.cache', - disable_ssl_certificate_validation=True) - logger.debug('PATCH: ' + url + ' <-- Attribute: ' + - str(payload)) - (response, content) = h.request(url, 'PATCH', - json.dumps(payload), - urlHeadersJson) - except Exception, e: - - # print (response, content) - - raise Exception('Got an error code: ', e) - return content - - @staticmethod - def delete(url, apiKey): - urlHeadersJson = {'content-type': 'application/json', - 'X-Api-Key': '%s' % str(apiKey)} - try: - h = httplib2.Http('.cache', - disable_ssl_certificate_validation=True) - (response, content) = h.request(url, 'DELETE', '', urlHeadersJson) - logger.debug('DELETE: ' + url) - except Exception, e: - raise Exception('Got an error code: ', e) - if response.status not in okStates: - raise TestFailedError(json.loads(content)['error']) - return json.loads(content) - - @staticmethod - def getWithHeaders(url, apiKey): - urlHeadersJson = {'content-type': 'application/json', - 'X-Api-Key': '%s' % str(apiKey)} - try: - h = httplib2.Http('.cache', - disable_ssl_certificate_validation=True) - logger.debug('GET: ' + url) - (response, content) = h.request(url, 'GET', '', urlHeadersJson) - except Exception, e: - raise Exception('Got an error code: ', e) - if response.status not in okStates: - raise TestFailedError(json.loads(content)['error']) - output = json.loads(content) - return output diff --git a/functest/opnfv_tests/vnf/ims/ixia/utils/IxLoadUtils.py b/functest/opnfv_tests/vnf/ims/ixia/utils/IxLoadUtils.py deleted file mode 100644 index 50dfbc661..000000000 --- a/functest/opnfv_tests/vnf/ims/ixia/utils/IxLoadUtils.py +++ /dev/null @@ -1,398 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2017 IXIA and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 - -import requests -import sys -import time -import logging - -from functest.opnfv_tests.vnf.ims.ixia.utils import IxRestUtils - - -kActionStateFinished = 'finished' -kActionStatusSuccessful = 'Successful' -kActionStatusError = 'Error' -kTestStateUnconfigured = 'Unconfigured' - -logger = logging.getLogger(__name__) - - -def stripApiAndVersionFromURL(url): - - # remove the slash (if any) at the beginning of the url - - if url[0] == '/': - url = url[1:] - - urlElements = url.split('/') - if 'api' in url: - - # strip the api/v0 part of the url - - urlElements = urlElements[2:] - - return '/'.join(urlElements) - - -def waitForActionToFinish(connection, replyObj, actionUrl): - """ - This method waits for an action to finish executing. after a POST request - is sent in order to start an action, The HTTP reply will contain, - in the header, a 'location' field, that contains an URL. - The action URL contains the status of the action. we perform a GET on that - URL every 0.5 seconds until the action finishes with a success. - If the action fails, we will throw an error and - print the action's error message. - """ - - actionResultURL = replyObj.headers.get('location') - if actionResultURL: - actionResultURL = stripApiAndVersionFromURL(actionResultURL) - actionFinished = False - - while not actionFinished: - actionStatusObj = connection.httpGet(actionResultURL) - - if actionStatusObj.state == kActionStateFinished: - if actionStatusObj.status == kActionStatusSuccessful: - actionFinished = True - else: - errorMsg = "Error while executing action '%s'." \ - % actionUrl - - if actionStatusObj.status == kActionStatusError: - errorMsg += actionStatusObj.error - - print errorMsg - - sys.exit(1) - else: - time.sleep(0.1) - - -def performGenericOperation(connection, url, payloadDict): - """ - This will perform a generic operation on the given url, - it will wait for it to finish. - """ - - data = IxRestUtils.formatDictToJSONPayload(payloadDict) - reply = connection.httpPost(url=url, data=data) - - waitForActionToFinish(connection, reply, url) - - return reply - - -def performGenericPost(connection, listUrl, payloadDict): - """ - This will perform a generic POST method on a given url - """ - - data = IxRestUtils.formatDictToJSONPayload(payloadDict) - - reply = connection.httpPost(url=listUrl, data=data) - try: - newObjPath = reply.headers['location'] - except: - raise Exception('Location header is not present. \ - Please check if the action was created successfully.') - - newObjID = newObjPath.split('/')[-1] - return newObjID - - -def performGenericDelete(connection, listUrl, payloadDict): - """ - This will perform a generic DELETE method on a given url - """ - - data = IxRestUtils.formatDictToJSONPayload(payloadDict) - - reply = connection.httpDelete(url=listUrl, data=data) - return reply - - -def performGenericPatch(connection, url, payloadDict): - """ - This will perform a generic PATCH method on a given url - """ - - data = IxRestUtils.formatDictToJSONPayload(payloadDict) - - reply = connection.httpPatch(url=url, data=data) - return reply - - -def createSession(connection, ixLoadVersion): - """ - This method is used to create a new session. - It will return the url of the newly created session - """ - - sessionsUrl = 'sessions' - data = {'ixLoadVersion': ixLoadVersion} - - sessionId = performGenericPost(connection, sessionsUrl, data) - - newSessionUrl = '%s/%s' % (sessionsUrl, sessionId) - startSessionUrl = '%s/operations/start' % newSessionUrl - - # start the session - - performGenericOperation(connection, startSessionUrl, {}) - - logger.debug('Created session no %s' % sessionId) - - return newSessionUrl - - -def deleteSession(connection, sessionUrl): - """ - This method is used to delete an existing session. - """ - - deleteParams = {} - performGenericDelete(connection, sessionUrl, deleteParams) - - -def uploadFile(connection, url, fileName, uploadPath, overwrite=True): - headers = {'Content-Type': 'multipart/form-data'} - params = {'overwrite': overwrite, 'uploadPath': uploadPath} - - logger.debug('Uploading...') - try: - with open(fileName, 'rb') as f: - resp = requests.post(url, data=f, params=params, - headers=headers) - except requests.exceptions.ConnectionError, e: - raise Exception('Upload file failed. Received connection error. \ - One common cause for this error is the size of the \ - file to be uploaded.The web server sets a limit of 1GB\ - for the uploaded file size. \ - Received the following error: %s' % str(e)) - except IOError, e: - raise Exception('Upload file failed. Received IO error: %s' - % str(e)) - except Exception: - raise Exception('Upload file failed. Received the following error: %s' - % str(e)) - else: - logger.debug('Upload file finished.') - logger.debug('Response status code %s' % resp.status_code) - logger.debug('Response text %s' % resp.text) - - -def loadRepository(connection, sessionUrl, rxfFilePath): - """ - This method will perform a POST request to load a repository. - """ - - loadTestUrl = '%s/ixload/test/operations/loadTest' % sessionUrl - data = {'fullPath': rxfFilePath} - - performGenericOperation(connection, loadTestUrl, data) - - -def saveRxf(connection, sessionUrl, rxfFilePath): - """ - This method saves the current rxf to the disk of the machine on - which the IxLoad instance is running. - """ - - saveRxfUrl = '%s/ixload/test/operations/saveAs' % sessionUrl - rxfFilePath = rxfFilePath.replace('\\', '\\\\') - data = {'fullPath': rxfFilePath, 'overWrite': 1} - - performGenericOperation(connection, saveRxfUrl, data) - - -def runTest(connection, sessionUrl): - """ - This method is used to start the currently loaded test. - After starting the 'Start Test' action, wait for the action to complete. - """ - - startRunUrl = '%s/ixload/test/operations/runTest' % sessionUrl - data = {} - - performGenericOperation(connection, startRunUrl, data) - - -def getTestCurrentState(connection, sessionUrl): - """ - This method gets the test current state. - (for example - running, unconfigured, ..) - """ - - activeTestUrl = '%s/ixload/test/activeTest' % sessionUrl - testObj = connection.httpGet(activeTestUrl) - - return testObj.currentState - - -def getTestRunError(connection, sessionUrl): - """ - This method gets the error that appeared during the last test run. - If no error appeared (the test ran successfully), - the return value will be 'None'. - """ - - activeTestUrl = '%s/ixload/test/activeTest' % sessionUrl - testObj = connection.httpGet(activeTestUrl) - - return testObj.testRunError - - -def waitForTestToReachUnconfiguredState(connection, sessionUrl): - """ - This method waits for the current test to reach the 'Unconfigured' state. - """ - - while getTestCurrentState(connection, sessionUrl) \ - != kTestStateUnconfigured: - time.sleep(0.1) - - -def pollStats(connection, sessionUrl, watchedStatsDict, pollingInterval=4): - """ - This method is used to poll the stats. - Polling stats is per request but this method does a continuous poll. - """ - - statSourceList = watchedStatsDict.keys() - statsDict = {} - - collectedTimestamps = {} - testIsRunning = True - - # check stat sources - - for statSource in statSourceList[:]: - statSourceUrl = '%s/ixload/stats/%s/values' % (sessionUrl, statSource) - statSourceReply = connection.httpRequest('GET', statSourceUrl) - if statSourceReply.status_code != 200: - logger.debug("Warning - Stat source '%s' does not exist. \ - Will ignore it." % statSource) - statSourceList.remove(statSource) - - # check the test state, and poll stats while the test is still running - - while testIsRunning: - - # the polling interval is configurable. - # by default, it's set to 4 seconds - - time.sleep(pollingInterval) - - for statSource in statSourceList: - valuesUrl = '%s/ixload/stats/%s/values' % (sessionUrl, statSource) - - valuesObj = connection.httpGet(valuesUrl) - valuesDict = valuesObj.getOptions() - - # get just the new timestamps - that were not previously - # retrieved in another stats polling iteration - - newTimestamps = [int(timestamp) for timestamp in - valuesDict.keys() if timestamp - not in collectedTimestamps.get(statSource, - [])] - newTimestamps.sort() - - for timestamp in newTimestamps: - timeStampStr = str(timestamp) - - collectedTimestamps.setdefault( - statSource, []).append(timeStampStr) - - timestampDict = statsDict.setdefault( - statSource, {}).setdefault(timestamp, {}) - - # save the values for the current timestamp, - # and later print them - - logger.info(' -- ') - for (caption, value) in \ - valuesDict[timeStampStr].getOptions().items(): - if caption in watchedStatsDict[statSource]: - logger.info(' %s -> %s' % (caption, value)) - timestampDict[caption] = value - - testIsRunning = getTestCurrentState(connection, sessionUrl) \ - == 'Running' - - logger.debug('Stopped receiving stats.') - return timestampDict - - -def clearChassisList(connection, sessionUrl): - """ - This method is used to clear the chassis list. - After execution no chassis should be available in the chassisListself. - """ - - chassisListUrl = '%s/ixload/chassischain/chassisList' % sessionUrl - deleteParams = {} - performGenericDelete(connection, chassisListUrl, deleteParams) - - -def configureLicenseServer(connection, sessionUrl, licenseServerIp): - """ - This method is used to clear the chassis list. - After execution no chassis should be available in the chassisList. - """ - - chassisListUrl = '%s/ixload/preferences' % sessionUrl - patchParams = {'licenseServer': licenseServerIp} - performGenericPatch(connection, chassisListUrl, patchParams) - - -def addChassisList(connection, sessionUrl, chassisList): - """ - This method is used to add one or more chassis to the chassis list. - """ - - chassisListUrl = '%s/ixload/chassisChain/chassisList' % sessionUrl - - for chassisName in chassisList: - data = {'name': chassisName} - chassisId = performGenericPost(connection, chassisListUrl, data) - - # refresh the chassis - - refreshConnectionUrl = '%s/%s/operations/refreshConnection' \ - % (chassisListUrl, chassisId) - performGenericOperation(connection, refreshConnectionUrl, {}) - - -def assignPorts(connection, sessionUrl, portListPerCommunity): - """ - This method is used to assign ports from a connected chassis - to the required NetTraffics. - """ - - communtiyListUrl = '%s/ixload/test/activeTest/communityList' \ - % sessionUrl - - communityList = connection.httpGet(url=communtiyListUrl) - - for community in communityList: - portListForCommunity = portListPerCommunity.get(community.name) - - portListUrl = '%s/%s/network/portList' % (communtiyListUrl, - community.objectID) - - if portListForCommunity: - for portTuple in portListForCommunity: - (chassisId, cardId, portId) = portTuple - paramDict = {'chassisId': chassisId, 'cardId': cardId, - 'portId': portId} - - performGenericPost(connection, portListUrl, paramDict) diff --git a/functest/opnfv_tests/vnf/ims/ixia/utils/IxRestUtils.py b/functest/opnfv_tests/vnf/ims/ixia/utils/IxRestUtils.py deleted file mode 100644 index 63db403b3..000000000 --- a/functest/opnfv_tests/vnf/ims/ixia/utils/IxRestUtils.py +++ /dev/null @@ -1,192 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2017 IXIA and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 - -from urlparse import urljoin -import requests - - -def getConnection(server, port): - """ - Gets a Connection instance, that will be used to - make the HTTP requests to the application - """ - connectionUrl = 'http://%s:%s/' % (server, port) - - conn = Connection(connectionUrl, 'v0') - return conn - - -def formatDictToJSONPayload(dictionary): - """ - Converts a given python dict instance to a string - JSON payload that can be sent to a REST API. - """ - jsonPayload = '{' - optionsList = [] - for (key, val) in dictionary.items(): - valStr = str(val) - if type(val) is str: - valStr = '"%s"' % val - if type(val) is bool: - valStr = valStr.lower() - optionsList.append('"%s":%s' % (key, valStr)) - - jsonPayload += ','.join(optionsList) - jsonPayload += '}' - - return jsonPayload - - -class Connection(object): - - """ - Class that executes the HTTP requests to the application instance. - It handles creating the HTTP session and executing HTTP methods. - """ - - kHeaderContentType = 'content-type' - kContentJson = 'application/json' - - def __init__(self, siteUrl, apiVersion): - self.httpSession = None - - self.url = Connection.urljoin(siteUrl, 'api') - self.url = Connection.urljoin(self.url, apiVersion) - - def _getHttpSession(self): - """ - This is a lazy initializer for the HTTP session. - It does not need to be active until it is required. - """ - - if self.httpSession is None: - self.httpSession = requests.Session() - return self.httpSession - - @classmethod - def urljoin(cls, base, end): - """ Join two URLs. If the second URL is absolute, the base is ignored. - - Use this instead of urlparse.urljoin directly so that we can customize - its behavior if necessary. - Currently differs in that it - 1. appends a / to base if not present. - 2. casts end to a str as a convenience - """ - - if base and not base.endswith('/'): - base = base + '/' - return urljoin(base, str(end)) - - def httpRequest(self, method, url='', data='', params={}, headers={}): - """ - Method for making a HTTP request. - The method type (GET, POST, PATCH, DELETE) will be sent as a parameter. - Along with the url and request data. The HTTP response is returned - """ - - headers[Connection.kHeaderContentType] = Connection.kContentJson - - absUrl = Connection.urljoin(self.url, url) - result = self._getHttpSession().request(method, - absUrl, - data=str(data), - params=params, - headers=headers) - return result - - def httpGet(self, url='', data='', params={}, headers={}): - """ - Method for calling HTTP GET. - This will return a WebObject that has the fields returned - in JSON format by the GET operation. - """ - - reply = self.httpRequest('GET', url, data, params, headers) - return _WebObject(reply.json()) - - def httpPost(self, url='', data='', params={}, headers={}): - """ - Method for calling HTTP POST. Will return the HTTP reply. - """ - - return self.httpRequest('POST', url, data, params, headers) - - def httpPatch(self, url='', data='', params={}, headers={}): - """ - Method for calling HTTP PATCH. Will return the HTTP reply. - """ - - return self.httpRequest('PATCH', url, data, params, headers) - - def httpDelete(self, url='', data='', params={}, headers={}): - """ - Method for calling HTTP DELETE. Will return the HTTP reply. - """ - - return self.httpRequest('DELETE', url, data, params, headers) - - -def _WebObject(value): - """ - Method used for creating a wrapper object corresponding to the JSON string - received on a GET request. - """ - - if isinstance(value, dict): - result = WebObject(**value) - elif isinstance(value, list): - result = WebList(entries=value) - else: - result = value - return result - - -class WebList(list): - - """ - Using this class a JSON list will be transformed - in a list of WebObject instances. - """ - - def __init__(self, entries=[]): - """ - Create a WebList from a list of items that - are processed by the _WebObject function - """ - - for item in entries: - self.append(_WebObject(item)) - - -class WebObject(object): - - """ - A WebObject instance will have its fields set to correspond to - the JSON format received on a GET request. - """ - - def __init__(self, **entries): - """ - Create a WebObject instance by providing a dict having a - property - value structure. - """ - - self.jsonOptions = {} - for (key, value) in entries.iteritems(): - webObj = _WebObject(value) - self.jsonOptions[key] = webObj - self.__dict__[key] = webObj - - def getOptions(self): - ''' - Get the JSON dictionary which represents the WebObject Instance - ''' - - return self.jsonOptions diff --git a/functest/opnfv_tests/vnf/ims/orchestra.yaml b/functest/opnfv_tests/vnf/ims/orchestra.yaml deleted file mode 100644 index f81f55fbe..000000000 --- a/functest/opnfv_tests/vnf/ims/orchestra.yaml +++ /dev/null @@ -1,68 +0,0 @@ ---- -tenant_images: - orchestrator: - ubuntu-14.04-server-cloudimg-amd64-disk1: - /home/opnfv/functest/images/trusty-server-cloudimg-amd64-disk1.img - orchestra_openims: - openims: /home/opnfv/functest/images/img - orchestra_clearwaterims: - ubuntu-14.04-server-cloudimg-amd64-disk1: - /home/opnfv/functest/images/trusty-server-cloudimg-amd64-disk1.img -mano: - name: OpenBaton - version: '3.2.0' - requirements: - flavor: - name: openbaton - ram_min: 4096 - disk: 5 - vcpus: 2 - image: 'ubuntu-14.04-server-cloudimg-amd64-disk1' - bootstrap: - url: http://get.openbaton.org/bootstraps/bootstrap_3.2.0_opnfv/bootstrap - config: - url: - http://get.openbaton.org/bootstraps/bootstrap_3.2.0_opnfv/bootstrap-config-file - gvnfm: - userdata: - url: - https://raw.githubusercontent.com/openbaton/generic-vnfm/3.2.0/src/main/resources/user-data.sh - credentials: - username: admin - password: openbaton - -orchestra_openims: - name: OpenIMS - descriptor: - url: - http://marketplace.openbaton.org:8080/api/v1/nsds/fokus/OpenImsCore/3.2.0/json - requirements: - flavor: - name: m1.small - ram_min: 2048 - disk: 5 - vcpus: 2 - test: - scscf: - ports: [3870, 6060] - pcscf: - ports: [4060] - icscf: - ports: [3869, 5060] - fhoss: - ports: [3868] - bind9: - ports: [] - -orchestra_clearwaterims: - name: Clearwater IMS - descriptor: - url: - http://marketplace.openbaton.org:8080/api/v1/nsds/fokus/ClearwaterIMS/3.2.0/json - requirements: - flavor: - name: m1.small - ram_min: 2048 - disk: 5 - vcpus: 2 - test: diff --git a/functest/opnfv_tests/vnf/ims/orchestra_clearwaterims.py b/functest/opnfv_tests/vnf/ims/orchestra_clearwaterims.py deleted file mode 100644 index 3db53e35e..000000000 --- a/functest/opnfv_tests/vnf/ims/orchestra_clearwaterims.py +++ /dev/null @@ -1,667 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2016 Orange and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 - -"""Orchestra Clearwater IMS testcase implementation.""" - -import json -import logging -import os -import socket -import time -import pkg_resources -import yaml - -import functest.core.vnf as vnf -import functest.utils.openstack_utils as os_utils -from functest.opnfv_tests.openstack.snaps import snaps_utils -from functest.utils.constants import CONST - -from org.openbaton.cli.errors.errors import NfvoException -from org.openbaton.cli.agents.agents import MainAgent -from snaps.config.flavor import FlavorConfig -from snaps.config.image import ImageConfig -from snaps.config.network import NetworkConfig, PortConfig, SubnetConfig -from snaps.config.router import RouterConfig -from snaps.config.security_group import ( - Direction, Protocol, SecurityGroupConfig, SecurityGroupRuleConfig) -from snaps.config.vm_inst import VmInstanceConfig -from snaps.openstack.utils import keystone_utils -from snaps.openstack.create_flavor import OpenStackFlavor -from snaps.openstack.create_image import OpenStackImage -from snaps.openstack.create_instance import OpenStackVmInstance -from snaps.openstack.create_network import OpenStackNetwork -from snaps.openstack.create_router import OpenStackRouter -from snaps.openstack.create_security_group import OpenStackSecurityGroup - - -__author__ = "Pauls, Michael <michael.pauls@fokus.fraunhofer.de>" -# ---------------------------------------------------------- -# -# UTILS -# -# ----------------------------------------------------------- - - -def get_config(parameter, file_path): - """ - Get config parameter. - - Returns the value of a given parameter in file.yaml - parameter must be given in string format with dots - Example: general.openstack.image_name - """ - with open(file_path) as config_file: - file_yaml = yaml.safe_load(config_file) - config_file.close() - value = file_yaml - for element in parameter.split("."): - value = value.get(element) - if value is None: - raise ValueError("The parameter %s is not defined in" - " reporting.yaml", parameter) - return value - - -def servertest(host, port): - """Method to test that a server is reachable at IP:port""" - args = socket.getaddrinfo(host, port, socket.AF_INET, socket.SOCK_STREAM) - for family, socktype, proto, canonname, sockaddr in args: - sock = socket.socket(family, socktype, proto) - try: - sock.connect(sockaddr) - except socket.error: - return False - else: - sock.close() - return True - - -def get_userdata(orchestrator=dict): - """Build userdata for Open Baton machine""" - userdata = "#!/bin/bash\n" - userdata += "echo \"Executing userdata...\"\n" - userdata += "set -x\n" - userdata += "set -e\n" - userdata += "echo \"Set nameserver to '8.8.8.8'...\"\n" - userdata += "echo \"nameserver 8.8.8.8\" >> /etc/resolv.conf\n" - userdata += "echo \"Install curl...\"\n" - userdata += "apt-get install curl\n" - userdata += "echo \"Inject public key...\"\n" - userdata += ("echo \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuPXrV3" - "geeHc6QUdyUr/1Z+yQiqLcOskiEGBiXr4z76MK4abiFmDZ18OMQlc" - "fl0p3kS0WynVgyaOHwZkgy/DIoIplONVr2CKBKHtPK+Qcme2PVnCtv" - "EqItl/FcD+1h5XSQGoa+A1TSGgCod/DPo+pes0piLVXP8Ph6QS1k7S" - "ic7JDeRQ4oT1bXYpJ2eWBDMfxIWKZqcZRiGPgMIbJ1iEkxbpeaAd9O" - "4MiM9nGCPESmed+p54uYFjwEDlAJZShcAZziiZYAvMZhvAhe6USljc" - "7YAdalAnyD/jwCHuwIrUw/lxo7UdNCmaUxeobEYyyFA1YVXzpNFZya" - "XPGAAYIJwEq/ openbaton@opnfv\" >> /home/ubuntu/.ssh/aut" - "horized_keys\n") - userdata += "echo \"Download bootstrap...\"\n" - userdata += ("curl -s %s " - "> ./bootstrap\n" % orchestrator['bootstrap']['url']) - userdata += ("curl -s %s" "> ./config_file\n" % - orchestrator['bootstrap']['config']['url']) - userdata += ("echo \"Disable usage of mysql...\"\n") - userdata += "sed -i s/mysql=.*/mysql=no/g /config_file\n" - userdata += ("echo \"Setting 'rabbitmq_broker_ip' to '%s'\"\n" - % orchestrator['details']['fip'].ip) - userdata += ("sed -i s/rabbitmq_broker_ip=localhost/rabbitmq_broker_ip" - "=%s/g /config_file\n" % orchestrator['details']['fip'].ip) - userdata += "echo \"Set autostart of components to 'false'\"\n" - userdata += "export OPENBATON_COMPONENT_AUTOSTART=false\n" - userdata += "echo \"Execute bootstrap...\"\n" - bootstrap = "sh ./bootstrap release -configFile=./config_file" - userdata += bootstrap + "\n" - userdata += "echo \"Setting 'nfvo.plugin.timeout' to '300000'\"\n" - userdata += ("echo \"nfvo.plugin.timeout=600000\" >> " - "/etc/openbaton/openbaton-nfvo.properties\n") - userdata += ( - "wget %s -O /etc/openbaton/openbaton-vnfm-generic-user-data.sh\n" % - orchestrator['gvnfm']['userdata']['url']) - userdata += "sed -i '113i"'\ \ \ \ '"sleep 60' " \ - "/etc/openbaton/openbaton-vnfm-generic-user-data.sh\n" - userdata += ("sed -i s/nfvo.marketplace.port=8082/nfvo.marketplace." - "port=8080/g /etc/openbaton/openbaton-nfvo.properties\n") - userdata += "echo \"Starting NFVO\"\n" - userdata += "service openbaton-nfvo restart\n" - userdata += "echo \"Starting Generic VNFM\"\n" - userdata += "service openbaton-vnfm-generic restart\n" - userdata += "echo \"...end of userdata...\"\n" - return userdata - - -class ClearwaterImsVnf(vnf.VnfOnBoarding): - """Clearwater IMS VNF deployed with openBaton orchestrator""" - - # logger = logging.getLogger(__name__) - - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = "orchestra_clearwaterims" - super(ClearwaterImsVnf, self).__init__(**kwargs) - self.logger = logging.getLogger("functest.ci.run_tests.orchestra") - self.logger.info("kwargs %s", (kwargs)) - - self.case_dir = pkg_resources.resource_filename( - 'functest', 'opnfv_tests/vnf/ims/') - self.data_dir = CONST.__getattribute__('dir_ims_data') - self.test_dir = CONST.__getattribute__('dir_repo_vims_test') - self.created_resources = [] - self.logger.info("%s VNF onboarding test starting", self.case_name) - - try: - self.config = CONST.__getattribute__( - 'vnf_{}_config'.format(self.case_name)) - except BaseException: - raise Exception("Orchestra VNF config file not found") - - config_file = self.case_dir + self.config - - self.mano = dict( - get_config("mano", config_file), - details={} - ) - self.logger.debug("Orchestrator configuration %s", self.mano) - - self.details['orchestrator'] = dict( - name=self.mano['name'], - version=self.mano['version'], - status='ERROR', - result='' - ) - - self.vnf = dict( - get_config(self.case_name, config_file), - ) - self.logger.debug("VNF configuration: %s", self.vnf) - - self.details['vnf'] = dict( - name=self.vnf['name'], - ) - - self.details['test_vnf'] = dict( - name=self.case_name, - ) - - # Orchestra base Data directory creation - if not os.path.exists(self.data_dir): - os.makedirs(self.data_dir) - - self.images = get_config("tenant_images.orchestrator", config_file) - self.images.update( - get_config( - "tenant_images.%s" % - self.case_name, - config_file)) - self.snaps_creds = None - - def prepare(self): - """Prepare testscase (Additional pre-configuration steps).""" - super(ClearwaterImsVnf, self).prepare() - - self.logger.info("Additional pre-configuration steps") - - public_auth_url = keystone_utils.get_endpoint( - self.snaps_creds, 'identity') - - self.creds = { - "tenant": self.tenant_name, - "username": self.tenant_name, - "password": self.tenant_name, - "auth_url": public_auth_url - } - self.prepare_images() - self.prepare_flavor() - self.prepare_security_groups() - self.prepare_network() - self.prepare_floating_ip() - - def prepare_images(self): - """Upload images if they doen't exist yet""" - self.logger.info("Upload images if they doen't exist yet") - for image_name, image_file in self.images.iteritems(): - self.logger.info("image: %s, file: %s", image_name, image_file) - if image_file and image_name: - image = OpenStackImage( - self.snaps_creds, - ImageConfig(name=image_name, - image_user='cloud', - img_format='qcow2', - image_file=image_file, - public=True)) - image.create() - # self.created_resources.append(image); - - def prepare_security_groups(self): - """Create Open Baton security group if it doesn't exist yet""" - self.logger.info( - "Creating security group for Open Baton if not yet existing...") - sg_rules = list() - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name="orchestra-sec-group-allowall", - direction=Direction.ingress, - protocol=Protocol.tcp, - port_range_min=1, - port_range_max=65535)) - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name="orchestra-sec-group-allowall", - direction=Direction.egress, - protocol=Protocol.tcp, - port_range_min=1, - port_range_max=65535)) - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name="orchestra-sec-group-allowall", - direction=Direction.ingress, - protocol=Protocol.udp, - port_range_min=1, - port_range_max=65535)) - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name="orchestra-sec-group-allowall", - direction=Direction.egress, - protocol=Protocol.udp, - port_range_min=1, - port_range_max=65535)) - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name="orchestra-sec-group-allowall", - direction=Direction.ingress, - protocol=Protocol.icmp)) - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name="orchestra-sec-group-allowall", - direction=Direction.egress, - protocol=Protocol.icmp)) - security_group = OpenStackSecurityGroup( - self.snaps_creds, - SecurityGroupConfig( - name="orchestra-sec-group-allowall", - rule_settings=sg_rules)) - - security_group_info = security_group.create() - self.created_resources.append(security_group) - self.mano['details']['sec_group'] = security_group_info.name - self.logger.info( - "Security group orchestra-sec-group-allowall prepared") - - def prepare_flavor(self): - """Create Open Baton flavor if it doesn't exist yet""" - self.logger.info( - "Create Flavor for Open Baton NFVO if not yet existing") - - flavor_settings = FlavorConfig( - name=self.mano['requirements']['flavor']['name'], - ram=self.mano['requirements']['flavor']['ram_min'], - disk=self.mano['requirements']['flavor']['disk'], - vcpus=self.mano['requirements']['flavor']['vcpus']) - flavor = OpenStackFlavor(self.snaps_creds, flavor_settings) - flavor_info = flavor.create() - self.created_resources.append(flavor) - self.mano['details']['flavor'] = {} - self.mano['details']['flavor']['name'] = flavor_settings.name - self.mano['details']['flavor']['id'] = flavor_info.id - - def prepare_network(self): - """Create network/subnet/router if they doen't exist yet""" - self.logger.info( - "Creating network/subnet/router if they doen't exist yet...") - subnet_settings = SubnetConfig( - name='%s_subnet' % - self.case_name, - cidr="192.168.100.0/24") - network_settings = NetworkConfig( - name='%s_net' % - self.case_name, - subnet_settings=[subnet_settings]) - orchestra_network = OpenStackNetwork( - self.snaps_creds, network_settings) - orchestra_network_info = orchestra_network.create() - self.mano['details']['network'] = {} - self.mano['details']['network']['id'] = orchestra_network_info.id - self.mano['details']['network']['name'] = orchestra_network_info.name - self.mano['details']['external_net_name'] = snaps_utils.\ - get_ext_net_name(self.snaps_creds) - self.created_resources.append(orchestra_network) - orchestra_router = OpenStackRouter( - self.snaps_creds, - RouterConfig( - name='%s_router' % - self.case_name, - external_gateway=self.mano['details']['external_net_name'], - internal_subnets=[ - subnet_settings.name])) - orchestra_router.create() - self.created_resources.append(orchestra_router) - self.logger.info("Created network and router for Open Baton NFVO...") - - def prepare_floating_ip(self): - """Select/Create Floating IP if it doesn't exist yet""" - self.logger.info("Retrieving floating IP for Open Baton NFVO") - neutron_client = snaps_utils.neutron_utils.neutron_client( - self.snaps_creds) - # Finding Tenant ID to check to which tenant the Floating IP belongs - tenant_id = os_utils.get_tenant_id( - os_utils.get_keystone_client(self.creds), - self.tenant_name) - # Use os_utils to retrieve complete information of Floating IPs - floating_ips = os_utils.get_floating_ips(neutron_client) - my_floating_ips = [] - # Filter Floating IPs with tenant id - for floating_ip in floating_ips: - if floating_ip.get('tenant_id') == tenant_id: - my_floating_ips.append(floating_ip.get('floating_ip_address')) - # Select if Floating IP exist else create new one - if len(my_floating_ips) >= 1: - # Get Floating IP object from snaps for clean up - snaps_floating_ips = snaps_utils.neutron_utils.get_floating_ips( - neutron_client) - for my_floating_ip in my_floating_ips: - for snaps_floating_ip in snaps_floating_ips: - if snaps_floating_ip.ip == my_floating_ip: - self.mano['details']['fip'] = snaps_floating_ip - self.logger.info( - "Selected floating IP for Open Baton NFVO %s", - (self.mano['details']['fip'].ip)) - break - if self.mano['details']['fip'] is not None: - break - else: - self.logger.info("Creating floating IP for Open Baton NFVO") - self.mano['details']['fip'] = snaps_utils.neutron_utils.\ - create_floating_ip( - neutron_client, - self.mano['details']['external_net_name']) - self.logger.info( - "Created floating IP for Open Baton NFVO %s", - (self.mano['details']['fip'].ip)) - - def get_vim_descriptor(self): - """"Create VIM descriptor to be used for onboarding""" - self.logger.info( - "Building VIM descriptor with PoP creds: %s", - self.creds) - # Depending on API version either tenant ID or project name must be - # used - if os_utils.is_keystone_v3(): - self.logger.info( - "Using v3 API of OpenStack... -> Using OS_PROJECT_ID") - project_id = os_utils.get_tenant_id( - os_utils.get_keystone_client(), - self.creds.get("project_name")) - else: - self.logger.info( - "Using v2 API of OpenStack... -> Using OS_TENANT_NAME") - project_id = self.creds.get("tenant_name") - self.logger.debug("VIM project/tenant id: %s", project_id) - vim_json = { - "name": "vim-instance", - "authUrl": self.creds.get("auth_url"), - "tenant": project_id, - "username": self.creds.get("username"), - "password": self.creds.get("password"), - "securityGroups": [ - self.mano['details']['sec_group'] - ], - "type": "openstack", - "location": { - "name": "opnfv", - "latitude": "52.525876", - "longitude": "13.314400" - } - } - self.logger.info("Built VIM descriptor: %s", vim_json) - return vim_json - - def deploy_orchestrator(self): - self.logger.info("Deploying Open Baton...") - self.logger.info("Details: %s", self.mano['details']) - start_time = time.time() - - self.logger.info("Creating orchestra instance...") - userdata = get_userdata(self.mano) - self.logger.info("flavor: %s\n" - "image: %s\n" - "network_id: %s\n", - self.mano['details']['flavor']['name'], - self.mano['requirements']['image'], - self.mano['details']['network']['id']) - self.logger.debug("userdata: %s\n", userdata) - # setting up image - image_settings = ImageConfig( - name=self.mano['requirements']['image'], - image_user='ubuntu', - exists=True) - # setting up port - port_settings = PortConfig( - name='%s_port' % self.case_name, - network_name=self.mano['details']['network']['name']) - # build configuration of vm - orchestra_settings = VmInstanceConfig( - name=self.case_name, - flavor=self.mano['details']['flavor']['name'], - port_settings=[port_settings], - security_group_names=[self.mano['details']['sec_group']], - userdata=str(userdata)) - orchestra_vm = OpenStackVmInstance(self.snaps_creds, - orchestra_settings, - image_settings) - - orchestra_vm.create() - self.created_resources.append(orchestra_vm) - self.mano['details']['id'] = orchestra_vm.get_vm_info()['id'] - self.logger.info( - "Created orchestra instance: %s", - self.mano['details']['id']) - - self.logger.info("Associating floating ip: '%s' to VM '%s' ", - self.mano['details']['fip'].ip, - self.case_name) - nova_client = os_utils.get_nova_client() - if not os_utils.add_floating_ip( - nova_client, - self.mano['details']['id'], - self.mano['details']['fip'].ip): - duration = time.time() - start_time - self.details["orchestrator"].update( - status='FAIL', duration=duration) - self.logger.error("Cannot associate floating IP to VM.") - return False - - self.logger.info("Waiting for Open Baton NFVO to be up and running...") - timeout = 0 - while timeout < 20: - if servertest( - self.mano['details']['fip'].ip, - "8080"): - break - else: - self.logger.info( - "Open Baton NFVO is not started yet (%ss)", - (timeout * 60)) - time.sleep(60) - timeout += 1 - - if timeout >= 20: - duration = time.time() - start_time - self.details["orchestrator"].update( - status='FAIL', duration=duration) - self.logger.error("Open Baton is not started correctly") - return False - - self.logger.info("Waiting for all components to be up and running...") - time.sleep(60) - duration = time.time() - start_time - self.details["orchestrator"].update(status='PASS', duration=duration) - self.logger.info("Deploy Open Baton NFVO: OK") - return True - - def deploy_vnf(self): - start_time = time.time() - self.logger.info("Deploying %s...", self.vnf['name']) - - main_agent = MainAgent( - nfvo_ip=self.mano['details']['fip'].ip, - nfvo_port=8080, - https=False, - version=1, - username=self.mano['credentials']['username'], - password=self.mano['credentials']['password']) - - self.logger.info( - "Create %s Flavor if not existing", self.vnf['name']) - flavor_settings = FlavorConfig( - name=self.vnf['requirements']['flavor']['name'], - ram=self.vnf['requirements']['flavor']['ram_min'], - disk=self.vnf['requirements']['flavor']['disk'], - vcpus=self.vnf['requirements']['flavor']['vcpus']) - flavor = OpenStackFlavor(self.snaps_creds, flavor_settings) - flavor_info = flavor.create() - self.logger.debug("Flavor id: %s", flavor_info.id) - - self.logger.info("Getting project 'default'...") - project_agent = main_agent.get_agent("project", "") - for project in json.loads(project_agent.find()): - if project.get("name") == "default": - self.mano['details']['project_id'] = project.get("id") - self.logger.info("Found project 'default': %s", project) - break - - vim_json = self.get_vim_descriptor() - self.logger.info("Registering VIM: %s", vim_json) - - main_agent.get_agent( - "vim", project_id=self.mano['details']['project_id']).create( - entity=json.dumps(vim_json)) - - market_agent = main_agent.get_agent( - "market", project_id=self.mano['details']['project_id']) - - try: - self.logger.info("sending: %s", self.vnf['descriptor']['url']) - nsd = market_agent.create(entity=self.vnf['descriptor']['url']) - if nsd.get('id') is None: - self.logger.error("NSD not onboarded correctly") - duration = time.time() - start_time - self.details["vnf"].update(status='FAIL', duration=duration) - return False - self.mano['details']['nsd_id'] = nsd.get('id') - self.logger.info("Onboarded NSD: " + nsd.get("name")) - - nsr_agent = main_agent.get_agent( - "nsr", project_id=self.mano['details']['project_id']) - - self.mano['details']['nsr'] = nsr_agent.create( - self.mano['details']['nsd_id']) - except NfvoException as exc: - self.logger.error(exc.message) - duration = time.time() - start_time - self.details["vnf"].update(status='FAIL', duration=duration) - return False - - if self.mano['details']['nsr'].get('code') is not None: - self.logger.error( - "%s cannot be deployed: %s -> %s", - self.vnf['name'], - self.mano['details']['nsr'].get('code'), - self.mano['details']['nsr'].get('message')) - self.logger.error("%s cannot be deployed", self.vnf['name']) - duration = time.time() - start_time - self.details["vnf"].update(status='FAIL', duration=duration) - return False - - timeout = 0 - self.logger.info("Waiting for NSR to go to ACTIVE...") - while self.mano['details']['nsr'].get("status") != 'ACTIVE' \ - and self.mano['details']['nsr'].get("status") != 'ERROR': - timeout += 1 - self.logger.info("NSR is not yet ACTIVE... (%ss)", 60 * timeout) - if timeout == 30: - self.logger.error("INACTIVE NSR after %s sec..", 60 * timeout) - duration = time.time() - start_time - self.details["vnf"].update(status='FAIL', duration=duration) - return False - time.sleep(60) - self.mano['details']['nsr'] = json.loads( - nsr_agent.find(self.mano['details']['nsr'].get('id'))) - - duration = time.time() - start_time - if self.mano['details']['nsr'].get("status") == 'ACTIVE': - self.details["vnf"].update(status='PASS', duration=duration) - self.logger.info("Sleep for 60s to ensure that all " - "services are up and running...") - time.sleep(60) - result = True - else: - self.details["vnf"].update(status='FAIL', duration=duration) - self.logger.error("NSR: %s", self.mano['details'].get('nsr')) - result = False - return result - - def test_vnf(self): - self.logger.info( - "Testing VNF Clearwater IMS is not yet implemented...") - start_time = time.time() - - duration = time.time() - start_time - self.details["test_vnf"].update(status='PASS', duration=duration) - self.logger.info("Test VNF: OK") - return True - - def clean(self): - self.logger.info("Cleaning %s...", self.case_name) - try: - main_agent = MainAgent( - nfvo_ip=self.mano['details']['fip'].ip, - nfvo_port=8080, - https=False, - version=1, - username=self.mano['credentials']['username'], - password=self.mano['credentials']['password']) - self.logger.info("Terminating %s...", self.vnf['name']) - if (self.mano['details'].get('nsr')): - main_agent.get_agent( - "nsr", - project_id=self.mano['details']['project_id']).delete( - self.mano['details']['nsr'].get('id')) - self.logger.info("Sleeping 60 seconds...") - time.sleep(60) - else: - self.logger.info("No need to terminate the VNF...") - # os_utils.delete_instance(nova_client=os_utils.get_nova_client(), - # instance_id=self.mano_instance_id) - except (NfvoException, KeyError) as exc: - self.logger.error('Unexpected error cleaning - %s', exc) - - try: - neutron_client = os_utils.get_neutron_client(self.creds) - self.logger.info("Deleting Open Baton Port...") - port = snaps_utils.neutron_utils.get_port( - neutron_client, - port_name='%s_port' % self.case_name) - snaps_utils.neutron_utils.delete_port(neutron_client, port) - time.sleep(10) - except Exception as exc: # pylint: disable=broad-except - self.logger.error('Unexpected error cleaning - %s', exc) - try: - self.logger.info("Deleting Open Baton Floating IP...") - snaps_utils.neutron_utils.delete_floating_ip( - neutron_client, self.mano['details']['fip']) - except Exception as exc: # pylint: disable=broad-except - self.logger.error('Unexpected error cleaning - %s', exc) - - for resource in reversed(self.created_resources): - try: - self.logger.info("Cleaning %s", str(resource)) - resource.clean() - except Exception as exc: # pylint: disable=broad-except - self.logger.error('Unexpected error cleaning - %s', exc) - super(ClearwaterImsVnf, self).clean() diff --git a/functest/opnfv_tests/vnf/ims/orchestra_openims.py b/functest/opnfv_tests/vnf/ims/orchestra_openims.py deleted file mode 100644 index d609a0fba..000000000 --- a/functest/opnfv_tests/vnf/ims/orchestra_openims.py +++ /dev/null @@ -1,690 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2016 Orange and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 - -"""Orchestra OpenIMS testcase implementation.""" - -import json -import logging -import os -import socket -import time -import pkg_resources -import yaml - -import functest.core.vnf as vnf -import functest.utils.openstack_utils as os_utils -from functest.utils.constants import CONST - -from org.openbaton.cli.errors.errors import NfvoException -from org.openbaton.cli.agents.agents import MainAgent -from snaps.config.flavor import FlavorConfig -from snaps.config.image import ImageConfig -from snaps.config.network import NetworkConfig, PortConfig, SubnetConfig -from snaps.config.router import RouterConfig -from snaps.config.security_group import ( - Direction, Protocol, SecurityGroupConfig, SecurityGroupRuleConfig) -from snaps.config.vm_inst import VmInstanceConfig -from snaps.openstack.utils import keystone_utils -from snaps.openstack.create_image import OpenStackImage -from snaps.openstack.create_flavor import OpenStackFlavor -from snaps.openstack.create_security_group import OpenStackSecurityGroup -from snaps.openstack.create_network import OpenStackNetwork -from snaps.openstack.create_router import OpenStackRouter -from snaps.openstack.create_instance import OpenStackVmInstance - -from functest.opnfv_tests.openstack.snaps import snaps_utils - - -__author__ = "Pauls, Michael <michael.pauls@fokus.fraunhofer.de>" -# ---------------------------------------------------------- -# -# UTILS -# -# ----------------------------------------------------------- - - -def get_config(parameter, file_path): - """ - Get config parameter. - - Returns the value of a given parameter in file.yaml - parameter must be given in string format with dots - Example: general.openstack.image_name - """ - with open(file_path) as config_file: - file_yaml = yaml.safe_load(config_file) - config_file.close() - value = file_yaml - for element in parameter.split("."): - value = value.get(element) - if value is None: - raise ValueError("The parameter %s is not defined in" - " reporting.yaml", parameter) - return value - - -def servertest(host, port): - """Method to test that a server is reachable at IP:port""" - args = socket.getaddrinfo(host, port, socket.AF_INET, socket.SOCK_STREAM) - for family, socktype, proto, canonname, sockaddr in args: - sock = socket.socket(family, socktype, proto) - try: - sock.connect(sockaddr) - except socket.error: - return False - else: - sock.close() - return True - - -def get_userdata(orchestrator=dict): - """Build userdata for Open Baton machine""" - userdata = "#!/bin/bash\n" - userdata += "echo \"Executing userdata...\"\n" - userdata += "set -x\n" - userdata += "set -e\n" - userdata += "echo \"Set nameserver to '8.8.8.8'...\"\n" - userdata += "echo \"nameserver 8.8.8.8\" >> /etc/resolv.conf\n" - userdata += "echo \"Install curl...\"\n" - userdata += "apt-get install curl\n" - userdata += "echo \"Inject public key...\"\n" - userdata += ("echo \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuPXrV3" - "geeHc6QUdyUr/1Z+yQiqLcOskiEGBiXr4z76MK4abiFmDZ18OMQlc" - "fl0p3kS0WynVgyaOHwZkgy/DIoIplONVr2CKBKHtPK+Qcme2PVnCtv" - "EqItl/FcD+1h5XSQGoa+A1TSGgCod/DPo+pes0piLVXP8Ph6QS1k7S" - "ic7JDeRQ4oT1bXYpJ2eWBDMfxIWKZqcZRiGPgMIbJ1iEkxbpeaAd9O" - "4MiM9nGCPESmed+p54uYFjwEDlAJZShcAZziiZYAvMZhvAhe6USljc" - "7YAdalAnyD/jwCHuwIrUw/lxo7UdNCmaUxeobEYyyFA1YVXzpNFZya" - "XPGAAYIJwEq/ openbaton@opnfv\" >> /home/ubuntu/.ssh/aut" - "horized_keys\n") - userdata += "echo \"Download bootstrap...\"\n" - userdata += ("curl -s %s " - "> ./bootstrap\n" % orchestrator['bootstrap']['url']) - userdata += ("curl -s %s" "> ./config_file\n" % - orchestrator['bootstrap']['config']['url']) - userdata += ("echo \"Disable usage of mysql...\"\n") - userdata += "sed -i s/mysql=.*/mysql=no/g /config_file\n" - userdata += ("echo \"Setting 'rabbitmq_broker_ip' to '%s'\"\n" - % orchestrator['details']['fip'].ip) - userdata += ("sed -i s/rabbitmq_broker_ip=localhost/rabbitmq_broker_ip" - "=%s/g /config_file\n" % orchestrator['details']['fip'].ip) - userdata += "echo \"Set autostart of components to 'false'\"\n" - userdata += "export OPENBATON_COMPONENT_AUTOSTART=false\n" - userdata += "echo \"Execute bootstrap...\"\n" - bootstrap = "sh ./bootstrap release -configFile=./config_file" - userdata += bootstrap + "\n" - userdata += "echo \"Setting 'nfvo.plugin.timeout' to '300000'\"\n" - userdata += ("echo \"nfvo.plugin.timeout=600000\" >> " - "/etc/openbaton/openbaton-nfvo.properties\n") - userdata += ( - "wget %s -O /etc/openbaton/openbaton-vnfm-generic-user-data.sh\n" % - orchestrator['gvnfm']['userdata']['url']) - userdata += "sed -i '113i"'\ \ \ \ '"sleep 60' " \ - "/etc/openbaton/openbaton-vnfm-generic-user-data.sh\n" - userdata += ("sed -i s/nfvo.marketplace.port=8082/nfvo.marketplace." - "port=8080/g /etc/openbaton/openbaton-nfvo.properties\n") - userdata += "echo \"Starting NFVO\"\n" - userdata += "service openbaton-nfvo restart\n" - userdata += "echo \"Starting Generic VNFM\"\n" - userdata += "service openbaton-vnfm-generic restart\n" - userdata += "echo \"...end of userdata...\"\n" - return userdata - - -class OpenImsVnf(vnf.VnfOnBoarding): - """OpenIMS VNF deployed with openBaton orchestrator""" - - # logger = logging.getLogger(__name__) - - def __init__(self, **kwargs): - if "case_name" not in kwargs: - kwargs["case_name"] = "orchestra_openims" - super(OpenImsVnf, self).__init__(**kwargs) - self.logger = logging.getLogger("functest.ci.run_tests.orchestra") - self.logger.info("kwargs %s", (kwargs)) - - self.case_dir = pkg_resources.resource_filename( - 'functest', 'opnfv_tests/vnf/ims/') - self.data_dir = CONST.__getattribute__('dir_ims_data') - self.test_dir = CONST.__getattribute__('dir_repo_vims_test') - self.created_resources = [] - self.logger.info("%s VNF onboarding test starting", self.case_name) - - try: - self.config = CONST.__getattribute__( - 'vnf_{}_config'.format(self.case_name)) - except BaseException: - raise Exception("Orchestra VNF config file not found") - config_file = self.case_dir + self.config - - self.mano = dict( - get_config("mano", config_file), - details={} - ) - self.logger.debug("Orchestrator configuration %s", self.mano) - - self.details['orchestrator'] = dict( - name=self.mano['name'], - version=self.mano['version'], - status='ERROR', - result='' - ) - - self.vnf = dict( - get_config(self.case_name, config_file), - ) - self.logger.debug("VNF configuration: %s", self.vnf) - - self.details['vnf'] = dict( - name=self.vnf['name'], - ) - - self.details['test_vnf'] = dict( - name=self.case_name, - ) - - # Orchestra base Data directory creation - if not os.path.exists(self.data_dir): - os.makedirs(self.data_dir) - - self.images = get_config("tenant_images.orchestrator", config_file) - self.images.update(get_config("tenant_images.%s" % - self.case_name, config_file)) - - def prepare(self): - """Prepare testscase (Additional pre-configuration steps).""" - super(OpenImsVnf, self).prepare() - - public_auth_url = keystone_utils.get_endpoint( - self.snaps_creds, 'identity') - - self.logger.info("Additional pre-configuration steps") - self.creds = { - "tenant": self.tenant_name, - "username": self.tenant_name, - "password": self.tenant_name, - "auth_url": public_auth_url - } - self.prepare_images() - self.prepare_flavor() - self.prepare_security_groups() - self.prepare_network() - self.prepare_floating_ip() - - def prepare_images(self): - """Upload images if they doen't exist yet""" - self.logger.info("Upload images if they doen't exist yet") - for image_name, image_file in self.images.iteritems(): - self.logger.info("image: %s, file: %s", image_name, image_file) - if image_file and image_name: - image = OpenStackImage( - self.snaps_creds, - ImageConfig(name=image_name, - image_user='cloud', - img_format='qcow2', - image_file=image_file, - public=True)) - image.create() - # self.created_resources.append(image); - - def prepare_security_groups(self): - """Create Open Baton security group if it doesn't exist yet""" - self.logger.info( - "Creating security group for Open Baton if not yet existing...") - sg_rules = list() - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name="orchestra-sec-group-allowall", - direction=Direction.ingress, - protocol=Protocol.tcp, - port_range_min=1, - port_range_max=65535)) - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name="orchestra-sec-group-allowall", - direction=Direction.egress, - protocol=Protocol.tcp, - port_range_min=1, - port_range_max=65535)) - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name="orchestra-sec-group-allowall", - direction=Direction.ingress, - protocol=Protocol.udp, - port_range_min=1, - port_range_max=65535)) - sg_rules.append( - SecurityGroupRuleConfig( - sec_grp_name="orchestra-sec-group-allowall", - direction=Direction.egress, - protocol=Protocol.udp, - port_range_min=1, - port_range_max=65535)) - security_group = OpenStackSecurityGroup( - self.snaps_creds, - SecurityGroupConfig( - name="orchestra-sec-group-allowall", - rule_settings=sg_rules)) - - security_group_info = security_group.create() - self.created_resources.append(security_group) - self.mano['details']['sec_group'] = security_group_info.name - self.logger.info( - "Security group orchestra-sec-group-allowall prepared") - - def prepare_flavor(self): - """Create Open Baton flavor if it doesn't exist yet""" - self.logger.info( - "Create Flavor for Open Baton NFVO if not yet existing") - - flavor_settings = FlavorConfig( - name=self.mano['requirements']['flavor']['name'], - ram=self.mano['requirements']['flavor']['ram_min'], - disk=self.mano['requirements']['flavor']['disk'], - vcpus=self.mano['requirements']['flavor']['vcpus']) - flavor = OpenStackFlavor(self.snaps_creds, flavor_settings) - flavor_info = flavor.create() - self.created_resources.append(flavor) - self.mano['details']['flavor'] = {} - self.mano['details']['flavor']['name'] = flavor_settings.name - self.mano['details']['flavor']['id'] = flavor_info.id - - def prepare_network(self): - """Create network/subnet/router if they doen't exist yet""" - self.logger.info( - "Creating network/subnet/router if they doen't exist yet...") - subnet_settings = SubnetConfig( - name='%s_subnet' % - self.case_name, - cidr="192.168.100.0/24") - network_settings = NetworkConfig( - name='%s_net' % - self.case_name, - subnet_settings=[subnet_settings]) - orchestra_network = OpenStackNetwork( - self.snaps_creds, network_settings) - orchestra_network_info = orchestra_network.create() - self.mano['details']['network'] = {} - self.mano['details']['network']['id'] = orchestra_network_info.id - self.mano['details']['network']['name'] = orchestra_network_info.name - self.mano['details']['external_net_name'] = \ - snaps_utils.get_ext_net_name(self.snaps_creds) - self.created_resources.append(orchestra_network) - orchestra_router = OpenStackRouter( - self.snaps_creds, - RouterConfig( - name='%s_router' % - self.case_name, - external_gateway=self.mano['details']['external_net_name'], - internal_subnets=[ - subnet_settings.name])) - orchestra_router.create() - self.created_resources.append(orchestra_router) - self.logger.info("Created network and router for Open Baton NFVO...") - - def prepare_floating_ip(self): - """Select/Create Floating IP if it doesn't exist yet""" - self.logger.info("Retrieving floating IP for Open Baton NFVO") - neutron_client = snaps_utils.neutron_utils.neutron_client( - self.snaps_creds) - # Finding Tenant ID to check to which tenant the Floating IP belongs - tenant_id = os_utils.get_tenant_id( - os_utils.get_keystone_client(self.creds), - self.tenant_name) - # Use os_utils to retrieve complete information of Floating IPs - floating_ips = os_utils.get_floating_ips(neutron_client) - my_floating_ips = [] - # Filter Floating IPs with tenant id - for floating_ip in floating_ips: - # self.logger.info("Floating IP: %s", floating_ip) - if floating_ip.get('tenant_id') == tenant_id: - my_floating_ips.append(floating_ip.get('floating_ip_address')) - # Select if Floating IP exist else create new one - if len(my_floating_ips) >= 1: - # Get Floating IP object from snaps for clean up - snaps_floating_ips = snaps_utils.neutron_utils.get_floating_ips( - neutron_client) - for my_floating_ip in my_floating_ips: - for snaps_floating_ip in snaps_floating_ips: - if snaps_floating_ip.ip == my_floating_ip: - self.mano['details']['fip'] = snaps_floating_ip - self.logger.info( - "Selected floating IP for Open Baton NFVO %s", - (self.mano['details']['fip'].ip)) - break - if self.mano['details']['fip'] is not None: - break - else: - self.logger.info("Creating floating IP for Open Baton NFVO") - self.mano['details']['fip'] = ( - snaps_utils.neutron_utils. create_floating_ip( - neutron_client, self.mano['details']['external_net_name'])) - self.logger.info( - "Created floating IP for Open Baton NFVO %s", - (self.mano['details']['fip'].ip)) - - def get_vim_descriptor(self): - """"Create VIM descriptor to be used for onboarding""" - self.logger.info( - "Building VIM descriptor with PoP creds: %s", - self.creds) - # Depending on API version either tenant ID or project name must be - # used - if os_utils.is_keystone_v3(): - self.logger.info( - "Using v3 API of OpenStack... -> Using OS_PROJECT_ID") - project_id = os_utils.get_tenant_id( - os_utils.get_keystone_client(), - self.creds.get("project_name")) - else: - self.logger.info( - "Using v2 API of OpenStack... -> Using OS_TENANT_NAME") - project_id = self.creds.get("tenant_name") - self.logger.debug("VIM project/tenant id: %s", project_id) - vim_json = { - "name": "vim-instance", - "authUrl": self.creds.get("auth_url"), - "tenant": project_id, - "username": self.creds.get("username"), - "password": self.creds.get("password"), - "securityGroups": [ - self.mano['details']['sec_group'] - ], - "type": "openstack", - "location": { - "name": "opnfv", - "latitude": "52.525876", - "longitude": "13.314400" - } - } - self.logger.info("Built VIM descriptor: %s", vim_json) - return vim_json - - def deploy_orchestrator(self): - self.logger.info("Deploying Open Baton...") - self.logger.info("Details: %s", self.mano['details']) - start_time = time.time() - - self.logger.info("Creating orchestra instance...") - userdata = get_userdata(self.mano) - self.logger.info("flavor: %s\n" - "image: %s\n" - "network_id: %s\n", - self.mano['details']['flavor']['name'], - self.mano['requirements']['image'], - self.mano['details']['network']['id']) - self.logger.debug("userdata: %s\n", userdata) - # setting up image - image_settings = ImageConfig( - name=self.mano['requirements']['image'], - image_user='ubuntu', - exists=True) - # setting up port - port_settings = PortConfig( - name='%s_port' % self.case_name, - network_name=self.mano['details']['network']['name']) - # build configuration of vm - orchestra_settings = VmInstanceConfig( - name=self.case_name, - flavor=self.mano['details']['flavor']['name'], - port_settings=[port_settings], - security_group_names=[self.mano['details']['sec_group']], - userdata=str(userdata)) - orchestra_vm = OpenStackVmInstance(self.snaps_creds, - orchestra_settings, - image_settings) - - orchestra_vm.create() - self.created_resources.append(orchestra_vm) - self.mano['details']['id'] = orchestra_vm.get_vm_info()['id'] - self.logger.info( - "Created orchestra instance: %s", - self.mano['details']['id']) - - self.logger.info("Associating floating ip: '%s' to VM '%s' ", - self.mano['details']['fip'].ip, - self.case_name) - nova_client = os_utils.get_nova_client() - if not os_utils.add_floating_ip( - nova_client, - self.mano['details']['id'], - self.mano['details']['fip'].ip): - duration = time.time() - start_time - self.details["orchestrator"].update( - status='FAIL', duration=duration) - self.logger.error("Cannot associate floating IP to VM.") - return False - - self.logger.info("Waiting for Open Baton NFVO to be up and running...") - timeout = 0 - while timeout < 20: - if servertest( - self.mano['details']['fip'].ip, - "8080"): - break - else: - self.logger.info("Open Baton NFVO is not started yet (%ss)", - (timeout * 60)) - time.sleep(60) - timeout += 1 - - if timeout >= 20: - duration = time.time() - start_time - self.details["orchestrator"].update( - status='FAIL', duration=duration) - self.logger.error("Open Baton is not started correctly") - return False - - self.logger.info("Waiting for all components to be up and running...") - time.sleep(60) - duration = time.time() - start_time - self.details["orchestrator"].update(status='PASS', duration=duration) - self.logger.info("Deploy Open Baton NFVO: OK") - return True - - def deploy_vnf(self): - start_time = time.time() - self.logger.info("Deploying %s...", self.vnf['name']) - - main_agent = MainAgent( - nfvo_ip=self.mano['details']['fip'].ip, - nfvo_port=8080, - https=False, - version=1, - username=self.mano['credentials']['username'], - password=self.mano['credentials']['password']) - - self.logger.info( - "Create %s Flavor if not existing", self.vnf['name']) - flavor_settings = FlavorConfig( - name=self.vnf['requirements']['flavor']['name'], - ram=self.vnf['requirements']['flavor']['ram_min'], - disk=self.vnf['requirements']['flavor']['disk'], - vcpus=self.vnf['requirements']['flavor']['vcpus']) - flavor = OpenStackFlavor(self.snaps_creds, flavor_settings) - flavor_info = flavor.create() - self.logger.debug("Flavor id: %s", flavor_info.id) - - self.logger.info("Getting project 'default'...") - project_agent = main_agent.get_agent("project", "") - for project in json.loads(project_agent.find()): - if project.get("name") == "default": - self.mano['details']['project_id'] = project.get("id") - self.logger.info("Found project 'default': %s", project) - break - - vim_json = self.get_vim_descriptor() - self.logger.info("Registering VIM: %s", vim_json) - - main_agent.get_agent( - "vim", project_id=self.mano['details']['project_id']).create( - entity=json.dumps(vim_json)) - - market_agent = main_agent.get_agent( - "market", project_id=self.mano['details']['project_id']) - - try: - self.logger.info("sending: %s", self.vnf['descriptor']['url']) - nsd = market_agent.create(entity=self.vnf['descriptor']['url']) - if nsd.get('id') is None: - self.logger.error("NSD not onboarded correctly") - duration = time.time() - start_time - self.details["vnf"].update(status='FAIL', duration=duration) - return False - self.mano['details']['nsd_id'] = nsd.get('id') - self.logger.info("Onboarded NSD: " + nsd.get("name")) - - nsr_agent = main_agent.get_agent( - "nsr", project_id=self.mano['details']['project_id']) - - self.mano['details']['nsr'] = nsr_agent.create( - self.mano['details']['nsd_id']) - except NfvoException as exc: - self.logger.error(exc.message) - duration = time.time() - start_time - self.details["vnf"].update(status='FAIL', duration=duration) - return False - - if self.mano['details']['nsr'].get('code') is not None: - self.logger.error( - "%s cannot be deployed: %s -> %s", - self.vnf['name'], - self.mano['details']['nsr'].get('code'), - self.mano['details']['nsr'].get('message')) - self.logger.error("%s cannot be deployed", self.vnf['name']) - duration = time.time() - start_time - self.details["vnf"].update(status='FAIL', duration=duration) - return False - - timeout = 0 - self.logger.info("Waiting for NSR to go to ACTIVE...") - while self.mano['details']['nsr'].get("status") != 'ACTIVE' \ - and self.mano['details']['nsr'].get("status") != 'ERROR': - timeout += 1 - self.logger.info("NSR is not yet ACTIVE... (%ss)", 60 * timeout) - if timeout == 30: - self.logger.error("INACTIVE NSR after %s sec..", 60 * timeout) - duration = time.time() - start_time - self.details["vnf"].update(status='FAIL', duration=duration) - return False - time.sleep(60) - self.mano['details']['nsr'] = json.loads( - nsr_agent.find(self.mano['details']['nsr'].get('id'))) - - duration = time.time() - start_time - if self.mano['details']['nsr'].get("status") == 'ACTIVE': - self.details["vnf"].update(status='PASS', duration=duration) - self.logger.info("Sleep for 60s to ensure that all " - "services are up and running...") - time.sleep(60) - result = True - else: - self.details["vnf"].update(status='FAIL', duration=duration) - self.logger.error("NSR: %s", self.mano['details'].get('nsr')) - result = False - return result - - def test_vnf(self): - self.logger.info("Testing VNF OpenIMS...") - start_time = time.time() - self.logger.info( - "Testing if %s works properly...", - self.mano['details']['nsr'].get('name')) - for vnfr in self.mano['details']['nsr'].get('vnfr'): - self.logger.info( - "Checking ports %s of VNF %s", - self.vnf['test'][vnfr.get('name')]['ports'], - vnfr.get('name')) - for vdu in vnfr.get('vdu'): - for vnfci in vdu.get('vnfc_instance'): - self.logger.debug( - "Checking ports of VNFC instance %s", - vnfci.get('hostname')) - for floating_ip in vnfci.get('floatingIps'): - self.logger.debug( - "Testing %s:%s", - vnfci.get('hostname'), - floating_ip.get('ip')) - for port in self.vnf['test'][vnfr.get( - 'name')]['ports']: - if servertest(floating_ip.get('ip'), port): - self.logger.info( - "VNFC instance %s is reachable at %s:%s", - vnfci.get('hostname'), - floating_ip.get('ip'), - port) - else: - self.logger.error( - "VNFC instance %s is not reachable " - "at %s:%s", - vnfci.get('hostname'), - floating_ip.get('ip'), - port) - duration = time.time() - start_time - self.details["test_vnf"].update( - status='FAIL', duration=duration, esult=( - "Port %s of server %s -> %s is " - "not reachable", - port, - vnfci.get('hostname'), - floating_ip.get('ip'))) - self.logger.error("Test VNF: ERROR") - return False - duration = time.time() - start_time - self.details["test_vnf"].update(status='PASS', duration=duration) - self.logger.info("Test VNF: OK") - return True - - def clean(self): - self.logger.info("Cleaning %s...", self.case_name) - try: - main_agent = MainAgent( - nfvo_ip=self.mano['details']['fip'].ip, - nfvo_port=8080, - https=False, - version=1, - username=self.mano['credentials']['username'], - password=self.mano['credentials']['password']) - self.logger.info("Terminating %s...", self.vnf['name']) - if (self.mano['details'].get('nsr')): - main_agent.get_agent( - "nsr", - project_id=self.mano['details']['project_id']).\ - delete(self.mano['details']['nsr'].get('id')) - self.logger.info("Sleeping 60 seconds...") - time.sleep(60) - else: - self.logger.info("No need to terminate the VNF...") - except (NfvoException, KeyError) as exc: - self.logger.error('Unexpected error cleaning - %s', exc) - - try: - neutron_client = os_utils.get_neutron_client(self.creds) - self.logger.info("Deleting Open Baton Port...") - port = snaps_utils.neutron_utils.get_port( - neutron_client, - port_name='%s_port' % self.case_name) - snaps_utils.neutron_utils.delete_port(neutron_client, port) - time.sleep(10) - except Exception as exc: # pylint: disable=broad-except - self.logger.error('Unexpected error cleaning - %s', exc) - try: - self.logger.info("Deleting Open Baton Floating IP...") - snaps_utils.neutron_utils.delete_floating_ip( - neutron_client, self.mano['details']['fip']) - except Exception as exc: # pylint: disable=broad-except - self.logger.error('Unexpected error cleaning - %s', exc) - - for resource in reversed(self.created_resources): - try: - self.logger.info("Cleaning %s", str(resource)) - resource.clean() - except Exception as exc: - self.logger.error('Unexpected error cleaning - %s', exc) - super(OpenImsVnf, self).clean() diff --git a/functest/opnfv_tests/vnf/router/cloudify_vrouter.py b/functest/opnfv_tests/vnf/router/cloudify_vrouter.py index f2cd63fb2..32d675347 100644 --- a/functest/opnfv_tests/vnf/router/cloudify_vrouter.py +++ b/functest/opnfv_tests/vnf/router/cloudify_vrouter.py @@ -7,352 +7,197 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 +# pylint: disable=missing-docstring + """vrouter testcase implementation.""" import logging import os import time -from cloudify_rest_client import CloudifyClient -from cloudify_rest_client.executions import Execution -from scp import SCPClient -import yaml +import pkg_resources -from functest.opnfv_tests.openstack.snaps import snaps_utils -import functest.opnfv_tests.vnf.router.vrouter_base as vrouter_base +from functest.core import cloudify +from functest.opnfv_tests.vnf.router import vrouter_base from functest.opnfv_tests.vnf.router.utilvnf import Utilvnf -from functest.utils.constants import CONST +from functest.utils import config +from functest.utils import env +from functest.utils import functest_utils -from git import Repo -from snaps.config.flavor import FlavorConfig -from snaps.config.image import ImageConfig -from snaps.config.keypair import KeypairConfig -from snaps.config.network import NetworkConfig, PortConfig, SubnetConfig -from snaps.config.router import RouterConfig -from snaps.config.security_group import ( - Direction, Protocol, SecurityGroupConfig, SecurityGroupRuleConfig) -from snaps.config.vm_inst import FloatingIpConfig, VmInstanceConfig +__author__ = "Shuya Nakama <shuya.nakama@okinawaopenlabs.org>" -from snaps.openstack.create_flavor import OpenStackFlavor -from snaps.openstack.create_image import OpenStackImage -from snaps.openstack.create_instance import OpenStackVmInstance -from snaps.openstack.create_keypairs import OpenStackKeypair -from snaps.openstack.create_network import OpenStackNetwork -from snaps.openstack.create_security_group import OpenStackSecurityGroup -from snaps.openstack.create_router import OpenStackRouter -import snaps.openstack.utils.glance_utils as glance_utils -from snaps.openstack.utils import keystone_utils +class CloudifyVrouter(cloudify.Cloudify): + # pylint: disable=too-many-instance-attributes + """vrouter testcase deployed with Cloudify Orchestrator.""" + __logger = logging.getLogger(__name__) -__author__ = "Shuya Nakama <shuya.nakama@okinawaopenlabs.org>" + filename_alt = '/home/opnfv/functest/images/vyos-1.1.8-amd64.qcow2' + flavor_alt_ram = 1024 + flavor_alt_vcpus = 1 + flavor_alt_disk = 3 -class CloudifyVrouter(vrouter_base.VrouterOnBoardingBase): - """vrouter testcase deployed with Cloudify Orchestrator.""" + check_console_loop = 12 - __logger = logging.getLogger(__name__) - name = __name__ + cop_yaml = ("https://github.com/cloudify-cosmo/cloudify-openstack-plugin/" + "releases/download/2.14.7/plugin.yaml") + cop_wgn = ("https://github.com/cloudify-cosmo/cloudify-openstack-plugin/" + "releases/download/2.14.7/cloudify_openstack_plugin-2.14.7-py27" + "-none-linux_x86_64-centos-Core.wgn") def __init__(self, **kwargs): if "case_name" not in kwargs: kwargs["case_name"] = "vyos_vrouter" - super(CloudifyVrouter, self).__init__(**kwargs) + super().__init__(**kwargs) # Retrieve the configuration try: - self.config = CONST.__getattribute__( - 'vnf_{}_config'.format(self.case_name)) - except Exception: - raise Exception("VNF config file not found") - - self.snaps_creds = '' - self.created_object = [] - - self.cfy_manager_ip = '' - self.util_info = {} - self.deployment_name = '' + self.config = getattr( + config.CONF, f'vnf_{self.case_name}_config') + except Exception as exc: + raise Exception("VNF config file not found") from exc + self.case_dir = pkg_resources.resource_filename( + 'functest', 'opnfv_tests/vnf/router') config_file = os.path.join(self.case_dir, self.config) self.orchestrator = dict( - requirements=get_config("orchestrator.requirements", config_file), + requirements=functest_utils.get_parameter_from_yaml( + "orchestrator.requirements", config_file), ) self.details['orchestrator'] = dict( - name=get_config("orchestrator.name", config_file), - version=get_config("orchestrator.version", config_file), + name=functest_utils.get_parameter_from_yaml( + "orchestrator.name", config_file), + version=functest_utils.get_parameter_from_yaml( + "orchestrator.version", config_file), status='ERROR', result='' ) self.__logger.debug("Orchestrator configuration %s", self.orchestrator) - self.__logger.debug("name = %s", self.name) + self.__logger.debug("name = %s", __name__) self.vnf = dict( - descriptor=get_config("vnf.descriptor", config_file), - inputs=get_config("vnf.inputs", config_file), - requirements=get_config("vnf.requirements", config_file) + descriptor=functest_utils.get_parameter_from_yaml( + "vnf.descriptor", config_file), + inputs=functest_utils.get_parameter_from_yaml( + "vnf.inputs", config_file), + requirements=functest_utils.get_parameter_from_yaml( + "vnf.requirements", config_file) ) self.details['vnf'] = dict( descriptor_version=self.vnf['descriptor']['version'], - name=get_config("vnf.name", config_file), - version=get_config("vnf.version", config_file), + name=functest_utils.get_parameter_from_yaml( + "vnf.name", config_file), + version=functest_utils.get_parameter_from_yaml( + "vnf.version", config_file), ) self.__logger.debug("VNF configuration: %s", self.vnf) self.util = Utilvnf() + self.util.set_credentials(self.cloud) + credentials = {"cloud": self.cloud} + self.util_info = {"credentials": credentials, + "vnf_data_dir": self.util.vnf_data_dir} self.details['test_vnf'] = dict( - name=get_config("vnf_test_suite.name", config_file), - version=get_config("vnf_test_suite.version", config_file) + name=functest_utils.get_parameter_from_yaml( + "vnf_test_suite.name", config_file), + version=functest_utils.get_parameter_from_yaml( + "vnf_test_suite.version", config_file) ) - self.images = get_config("tenant_images", config_file) + self.images = functest_utils.get_parameter_from_yaml( + "tenant_images", config_file) self.__logger.info("Images needed for vrouter: %s", self.images) - def prepare(self): - super(CloudifyVrouter, self).prepare() - - self.__logger.info("Additional pre-configuration steps") + self.image_alt = None + self.flavor_alt = None - self.util.set_credentials(self.snaps_creds) + def check_requirements(self): + if env.get('NEW_USER_ROLE').lower() == "admin": + self.__logger.warning( + "Defining NEW_USER_ROLE=admin will easily break the testcase " + "because Cloudify doesn't manage tenancy (e.g. subnet " + "overlapping)") - # needs some images - self.__logger.info("Upload some OS images if it doesn't exist") - for image_name, image_file in self.images.iteritems(): - self.__logger.info("image: %s, file: %s", image_name, image_file) - if image_file and image_name: - image_creator = OpenStackImage( - self.snaps_creds, - ImageConfig(name=image_name, - image_user='cloud', - img_format='qcow2', - image_file=image_file)) - image_creator.create() - self.created_object.append(image_creator) - - def deploy_orchestrator(self): + def execute(self): + # pylint: disable=too-many-locals,too-many-statements """ Deploy Cloudify Manager. network, security group, fip, VM creation """ # network creation - + super().execute() start_time = time.time() - self.__logger.info("Creating keypair ...") - kp_file = os.path.join(self.data_dir, "cloudify_vrouter.pem") - keypair_settings = KeypairConfig(name='cloudify_vrouter_kp', - private_filepath=kp_file) - keypair_creator = OpenStackKeypair(self.snaps_creds, keypair_settings) - keypair_creator.create() - self.created_object.append(keypair_creator) - - self.__logger.info("Creating full network ...") - subnet_settings = SubnetConfig(name='cloudify_vrouter_subnet', - cidr='10.67.79.0/24') - network_settings = NetworkConfig(name='cloudify_vrouter_network', - subnet_settings=[subnet_settings]) - network_creator = OpenStackNetwork(self.snaps_creds, network_settings) - network_creator.create() - self.created_object.append(network_creator) - ext_net_name = snaps_utils.get_ext_net_name(self.snaps_creds) - router_creator = OpenStackRouter( - self.snaps_creds, - RouterConfig( - name='cloudify_vrouter_router', - external_gateway=ext_net_name, - internal_subnets=[subnet_settings.name])) - router_creator.create() - self.created_object.append(router_creator) - - # security group creation - self.__logger.info("Creating security group for cloudify manager vm") - sg_rules = list() - sg_rules.append( - SecurityGroupRuleConfig(sec_grp_name="sg-cloudify-manager", - direction=Direction.ingress, - protocol=Protocol.tcp, port_range_min=1, - port_range_max=65535)) - sg_rules.append( - SecurityGroupRuleConfig(sec_grp_name="sg-cloudify-manager", - direction=Direction.ingress, - protocol=Protocol.udp, port_range_min=1, - port_range_max=65535)) - - security_group_creator = OpenStackSecurityGroup( - self.snaps_creds, - SecurityGroupConfig( - name="sg-cloudify-manager", - rule_settings=sg_rules)) - - security_group_creator.create() - self.created_object.append(security_group_creator) - - # orchestrator VM flavor - self.__logger.info("Get or create flavor for cloudify manager vm ...") - - flavor_settings = FlavorConfig( - name=self.orchestrator['requirements']['flavor']['name'], - ram=self.orchestrator['requirements']['flavor']['ram_min'], - disk=50, - vcpus=2) - flavor_creator = OpenStackFlavor(self.snaps_creds, flavor_settings) - flavor_creator.create() - self.created_object.append(flavor_creator) - image_settings = ImageConfig( - name=self.orchestrator['requirements']['os_image'], - image_user='centos', - exists=True) - - port_settings = PortConfig(name='cloudify_manager_port', - network_name=network_settings.name) - - manager_settings = VmInstanceConfig( - name='cloudify_manager', - flavor=flavor_settings.name, - port_settings=[port_settings], - security_group_names=[ - security_group_creator.sec_grp_settings.name], - floating_ip_settings=[FloatingIpConfig( - name='cloudify_manager_fip', - port_name=port_settings.name, - router_name=router_creator.router_settings.name)]) - - manager_creator = OpenStackVmInstance(self.snaps_creds, - manager_settings, - image_settings, - keypair_settings) - - self.__logger.info("Creating cloudify manager VM") - manager_creator.create() - self.created_object.append(manager_creator) - - public_auth_url = keystone_utils.get_endpoint( - self.snaps_creds, 'identity') - - self.__logger.info("Set creds for cloudify manager") - cfy_creds = dict(keystone_username=self.tenant_name, - keystone_password=self.tenant_name, - keystone_tenant_name=self.tenant_name, - keystone_url=public_auth_url) - - cfy_client = CloudifyClient(host=manager_creator.get_floating_ip().ip, - username='admin', - password='admin', - tenant='default_tenant') - - self.orchestrator['object'] = cfy_client - - self.cfy_manager_ip = manager_creator.get_floating_ip().ip - - self.__logger.info("Attemps running status of the Manager") - cfy_status = None - retry = 10 - while str(cfy_status) != 'running' and retry: - try: - cfy_status = cfy_client.manager.get_status()['status'] - self.__logger.debug("The current manager status is %s", - cfy_status) - except Exception: # pylint: disable=broad-except - self.__logger.warning("Cloudify Manager isn't " + - "up and running. Retrying ...") - retry = retry - 1 - time.sleep(30) - - if str(cfy_status) == 'running': - self.__logger.info("Cloudify Manager is up and running") - else: - raise Exception("Cloudify Manager isn't up and running") + self.put_private_key() + self.upload_cfy_plugins(self.cop_yaml, self.cop_wgn) - self.__logger.info("Put OpenStack creds in manager") - secrets_list = cfy_client.secrets.list() - for k, val in cfy_creds.iteritems(): - if not any(d.get('key', None) == k for d in secrets_list): - cfy_client.secrets.create(k, val) - else: - cfy_client.secrets.update(k, val) + self.image_alt = self.publish_image_alt() + self.flavor_alt = self.create_flavor_alt() duration = time.time() - start_time - - self.__logger.info("Put private keypair in manager") - if manager_creator.vm_ssh_active(block=True): - ssh = manager_creator.ssh_client() - scp = SCPClient(ssh.get_transport(), socket_timeout=15.0) - scp.put(kp_file, '~/') - cmd = "sudo cp ~/cloudify_vrouter.pem /etc/cloudify/" - run_blocking_ssh_command(ssh, cmd) - cmd = "sudo chmod 444 /etc/cloudify/cloudify_vrouter.pem" - run_blocking_ssh_command(ssh, cmd) - cmd = "sudo yum install -y gcc python-devel" - run_blocking_ssh_command( - ssh, cmd, "Unable to install packages on manager") - self.details['orchestrator'].update(status='PASS', duration=duration) - self.vnf['inputs'].update(dict(external_network_name=ext_net_name)) - - return True + self.vnf['inputs'].update(dict( + external_network_name=self.ext_net.name)) + self.vnf['inputs'].update(dict( + target_vnf_image_id=self.image_alt.id)) + self.vnf['inputs'].update(dict( + reference_vnf_image_id=self.image_alt.id)) + self.vnf['inputs'].update(dict( + target_vnf_flavor_id=self.flavor_alt.id)) + self.vnf['inputs'].update(dict( + reference_vnf_flavor_id=self.flavor_alt.id)) + self.vnf['inputs'].update(dict( + keystone_username=self.project.user.name)) + self.vnf['inputs'].update(dict( + keystone_password=self.project.password)) + self.vnf['inputs'].update(dict( + keystone_tenant_name=self.project.project.name)) + self.vnf['inputs'].update(dict( + keystone_user_domain_name=os.environ.get( + 'OS_USER_DOMAIN_NAME', 'Default'))) + self.vnf['inputs'].update(dict( + keystone_project_domain_name=os.environ.get( + 'OS_PROJECT_DOMAIN_NAME', 'Default'))) + self.vnf['inputs'].update(dict( + region=os.environ.get('OS_REGION_NAME', 'RegionOne'))) + self.vnf['inputs'].update(dict( + keystone_url=self.get_public_auth_url(self.orig_cloud))) + + if self.deploy_vnf() and self.test_vnf(): + self.result = 100 + return 0 + self.result = 1/3 * 100 + return 1 def deploy_vnf(self): start_time = time.time() - self.__logger.info("Upload VNFD") - cfy_client = self.orchestrator['object'] descriptor = self.vnf['descriptor'] - self.deployment_name = descriptor.get('name') - - vrouter_blueprint_dir = os.path.join(self.data_dir, - self.util.blueprint_dir) - if not os.path.exists(vrouter_blueprint_dir): - Repo.clone_from(descriptor.get('url'), - vrouter_blueprint_dir, - branch=descriptor.get('version')) - - cfy_client.blueprints.upload(vrouter_blueprint_dir + - self.util.blueprint_file_name, - descriptor.get('name')) - - self.__logger.info("Get or create flavor for vrouter") - flavor_settings = FlavorConfig( - name=self.vnf['requirements']['flavor']['name'], - ram=self.vnf['requirements']['flavor']['ram_min'], - disk=25, - vcpus=1) - flavor_creator = OpenStackFlavor(self.snaps_creds, flavor_settings) - flavor = flavor_creator.create() - self.created_object.append(flavor_creator) - - # set image name - glance = glance_utils.glance_client(self.snaps_creds) - image = glance_utils.get_image(glance, - "vyos1.1.7") - self.vnf['inputs'].update(dict(target_vnf_image_id=image.id)) - self.vnf['inputs'].update(dict(reference_vnf_image_id=image.id)) - - # set flavor id - self.vnf['inputs'].update(dict(target_vnf_flavor_id=flavor.id)) - self.vnf['inputs'].update(dict(reference_vnf_flavor_id=flavor.id)) - - self.vnf['inputs'].update(dict(keystone_username=self.tenant_name)) - self.vnf['inputs'].update(dict(keystone_password=self.tenant_name)) - self.vnf['inputs'].update(dict(keystone_tenant_name=self.tenant_name)) - self.vnf['inputs'].update( - dict(keystone_url=keystone_utils.get_endpoint( - self.snaps_creds, 'identity'))) + self.util_info["cfy"] = self.cfy_client + self.util_info["cfy_manager_ip"] = self.fip.floating_ip_address + self.util_info["deployment_name"] = descriptor.get('name') + + self.cfy_client.blueprints.upload( + descriptor.get('file_name'), descriptor.get('name')) self.__logger.info("Create VNF Instance") - cfy_client.deployments.create(descriptor.get('name'), - descriptor.get('name'), - self.vnf.get('inputs')) + self.cfy_client.deployments.create( + descriptor.get('name'), descriptor.get('name'), + self.vnf.get('inputs')) - wait_for_execution(cfy_client, - get_execution_id( - cfy_client, descriptor.get('name')), - self.__logger, - timeout=7200) + cloudify.wait_for_execution( + self.cfy_client, cloudify.get_execution_id( + self.cfy_client, descriptor.get('name')), + self.__logger, timeout=7200) self.__logger.info("Start the VNF Instance deployment") - execution = cfy_client.executions.start(descriptor.get('name'), - 'install') + execution = self.cfy_client.executions.start( + descriptor.get('name'), 'install') # Show execution log - execution = wait_for_execution(cfy_client, execution, self.__logger) + execution = cloudify.wait_for_execution( + self.cfy_client, execution, self.__logger) duration = time.time() - start_time @@ -366,171 +211,24 @@ class CloudifyVrouter(vrouter_base.VrouterOnBoardingBase): return result def test_vnf(self): - cfy_client = self.orchestrator['object'] - credentials = {"snaps_creds": self.snaps_creds, - "username": self.snaps_creds.username, - "password": self.snaps_creds.password, - "auth_url": self.snaps_creds.auth_url, - "tenant_name": self.snaps_creds.project_name} - - self.util_info = {"credentials": credentials, - "cfy": cfy_client, - "vnf_data_dir": self.util.vnf_data_dir} - start_time = time.time() - - result, test_result_data = super(CloudifyVrouter, self).test_vnf() - + testing = vrouter_base.VrouterOnBoardingBase(self.util, self.util_info) + result, test_result_data = testing.test_vnf() duration = time.time() - start_time - if result: - self.details['test_vnf'].update(status='PASS', - result='OK', - full_result=test_result_data, - duration=duration) + self.details['test_vnf'].update( + status='PASS', result='OK', full_result=test_result_data, + duration=duration) else: - self.details['test_vnf'].update(status='FAIL', - result='NG', - full_result=test_result_data, - duration=duration) - + self.details['test_vnf'].update( + status='FAIL', result='NG', full_result=test_result_data, + duration=duration) return True def clean(self): - try: - cfy_client = self.orchestrator['object'] - dep_name = self.vnf['descriptor'].get('name') - # kill existing execution - self.__logger.info('Deleting the current deployment') - exec_list = cfy_client.executions.list(dep_name) - for execution in exec_list: - if execution['status'] == "started": - try: - cfy_client.executions.cancel(execution['id'], - force=True) - except: # pylint: disable=broad-except - self.__logger.warn("Can't cancel the current exec") - - execution = cfy_client.executions.start( - dep_name, - 'uninstall', - parameters=dict(ignore_failure=True)) - - wait_for_execution(cfy_client, execution, self.__logger) - cfy_client.deployments.delete(self.vnf['descriptor'].get('name')) - cfy_client.blueprints.delete(self.vnf['descriptor'].get('name')) - except: # pylint: disable=broad-except - self.__logger.warn("Some issue during the undeployment ..") - self.__logger.warn("Tenant clean continue ..") - - self.__logger.info('Remove the cloudify manager OS object ..') - for creator in reversed(self.created_object): - try: - creator.clean() - except Exception as exc: - self.logger.error('Unexpected error cleaning - %s', exc) - - super(CloudifyVrouter, self).clean() - - def run(self, **kwargs): - """Execute CloudifyVrouter test case.""" - return super(CloudifyVrouter, self).run(**kwargs) - - def get_vnf_info_list(self, target_vnf_name): - return self.util.get_vnf_info_list(self.cfy_manager_ip, - self.deployment_name, - target_vnf_name) - - -# ---------------------------------------------------------- -# -# YAML UTILS -# -# ----------------------------------------------------------- -def get_config(parameter, file_path): - """ - Get config parameter. - Returns the value of a given parameter in file.yaml - parameter must be given in string format with dots - Example: general.openstack.image_name - """ - with open(file_path) as config_file: - file_yaml = yaml.safe_load(config_file) - config_file.close() - value = file_yaml - for element in parameter.split("."): - value = value.get(element) - if value is None: - raise ValueError("The parameter %s is not defined in" - " reporting.yaml" % parameter) - return value - - -def wait_for_execution(client, execution, logger, timeout=7200, ): - """Wait for a workflow execution on Cloudify Manager.""" - # if execution already ended - return without waiting - if execution.status in Execution.END_STATES: - return execution - - if timeout is not None: - deadline = time.time() + timeout - - # Poll for execution status and execution logs, until execution ends - # and we receive an event of type in WORKFLOW_END_TYPES - offset = 0 - batch_size = 50 - event_list = [] - execution_ended = False - while True: - event_list = client.events.list( - execution_id=execution.id, - _offset=offset, - _size=batch_size, - include_logs=False, - sort='@timestamp').items - - offset = offset + len(event_list) - for event in event_list: - logger.debug(event.get('message')) - - if timeout is not None: - if time.time() > deadline: - raise RuntimeError( - 'execution of operation {0} for deployment {1} ' - 'timed out'.format(execution.workflow_id, - execution.deployment_id)) - else: - # update the remaining timeout - timeout = deadline - time.time() - - if not execution_ended: - execution = client.executions.get(execution.id) - execution_ended = execution.status in Execution.END_STATES - - if execution_ended: - break - - time.sleep(5) - - return execution - - -def get_execution_id(client, deployment_id): - """ - Get the execution id of a env preparation. - network, security group, fip, VM creation - """ - executions = client.executions.list(deployment_id=deployment_id) - for execution in executions: - if execution.workflow_id == 'create_deployment_environment': - return execution - raise RuntimeError('Failed to get create_deployment_environment ' - 'workflow execution.' - 'Available executions: {0}'.format(executions)) - - -def run_blocking_ssh_command(ssh, cmd, error_msg="Unable to run this command"): - """Command to run ssh command with the exit status.""" - (_, stdout, _) = ssh.exec_command(cmd) - if stdout.channel.recv_exit_status() != 0: - raise Exception(error_msg) + self.kill_existing_execution(self.vnf['descriptor'].get('name')) + if self.image_alt: + self.cloud.delete_image(self.image_alt) + if self.flavor_alt: + self.orig_cloud.delete_flavor(self.flavor_alt.id) + super().clean() diff --git a/functest/opnfv_tests/vnf/router/cloudify_vrouter.yaml b/functest/opnfv_tests/vnf/router/cloudify_vrouter.yaml index 58bdb66a3..2d98dffa5 100644 --- a/functest/opnfv_tests/vnf/router/cloudify_vrouter.yaml +++ b/functest/opnfv_tests/vnf/router/cloudify_vrouter.yaml @@ -3,27 +3,25 @@ tenant_images: cloudify_manager_4.0: /home/opnfv/functest/images/cloudify-manager-premium-4.0.1.qcow2 vyos1.1.7: /home/opnfv/functest/images/vyos-1.1.7.img -test_data: - url: 'https://github.com/oolorg/opnfv-vnf-data.git' - branch: 'master' orchestrator: name: cloudify version: '4.0' requirements: flavor: - name: m1.medium + name: cloudify.medium ram_min: 4096 os_image: 'cloudify_manager_4.0' vnf: name: vyos1.1.7 version: '1.1.7' descriptor: - url: https://github.com/oolorg/opnfv-vnf-vyos-blueprint/ + file_name: + /src/opnfv-vnf-vyos-blueprint/function-test-openstack-blueprint.yaml name: vrouter-opnfv - version: 'master' + version: fraser requirements: flavor: - name: m1.medium + name: cloudify.medium ram_min: 2048 inputs: external_network_name: admin_floating_net diff --git a/functest/opnfv_tests/vnf/router/test_controller/function_test_exec.py b/functest/opnfv_tests/vnf/router/test_controller/function_test_exec.py index d023d4796..9eb3c5d69 100644 --- a/functest/opnfv_tests/vnf/router/test_controller/function_test_exec.py +++ b/functest/opnfv_tests/vnf/router/test_controller/function_test_exec.py @@ -7,9 +7,12 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 +# pylint: disable=missing-docstring + """vrouter function test execution module""" import logging +import os import time import yaml @@ -18,7 +21,7 @@ from functest.opnfv_tests.vnf.router.vnf_controller.vnf_controller import ( VnfController) -class FunctionTestExec(object): +class FunctionTestExec(): """vrouter function test execution class""" logger = logging.getLogger(__name__) @@ -29,17 +32,16 @@ class FunctionTestExec(object): credentials = util_info["credentials"] self.vnf_ctrl = VnfController(util_info) - test_cmd_map_file = open(self.util.vnf_data_dir + - self.util.opnfv_vnf_data_dir + - self.util.command_template_dir + - self.util.test_cmd_map_yaml_file, - 'r') - self.test_cmd_map_yaml = yaml.safe_load(test_cmd_map_file) - test_cmd_map_file.close() + with open( + os.path.join( + self.util.vnf_data_dir, self.util.command_template_dir, + self.util.test_cmd_map_yaml_file), + 'r', encoding='utf-8') as test_cmd_map_file: + self.test_cmd_map_yaml = yaml.safe_load(test_cmd_map_file) - self.util.set_credentials(credentials["snaps_creds"]) + self.util.set_credentials(credentials["cloud"]) - with open(self.util.test_env_config_yaml) as file_fd: + with open(self.util.test_env_config_yaml, encoding='utf-8') as file_fd: test_env_config_yaml = yaml.safe_load(file_fd) file_fd.close() diff --git a/functest/opnfv_tests/vnf/router/utilvnf.py b/functest/opnfv_tests/vnf/router/utilvnf.py index 9d196836e..111f20c1a 100644 --- a/functest/opnfv_tests/vnf/router/utilvnf.py +++ b/functest/opnfv_tests/vnf/router/utilvnf.py @@ -7,20 +7,17 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 +# pylint: disable=missing-docstring + """ Utility module of vrouter testcase """ import json import logging import os -import pkg_resources import requests import yaml -from functest.utils.constants import CONST -from git import Repo -from requests.auth import HTTPBasicAuth -from snaps.openstack.utils import nova_utils - +from functest.utils import config RESULT_SPRIT_INDEX = { "transfer": 8, @@ -46,25 +43,19 @@ NUMBER_OF_DIGITS_FOR_AVG_JITTER = 3 NUMBER_OF_DIGITS_FOR_AVG_PKT_LOSS = 1 -class Utilvnf(object): +class Utilvnf(): # pylint: disable=too-many-instance-attributes """ Utility class of vrouter testcase """ logger = logging.getLogger(__name__) def __init__(self): - self.snaps_creds = "" - - data_dir = data_dir = CONST.__getattribute__('dir_router_data') - - self.vnf_data_dir = data_dir - self.opnfv_vnf_data_dir = "opnfv-vnf-data/" + self.vnf_data_dir = getattr(config.CONF, 'dir_router_data') self.command_template_dir = "command_template/" self.test_scenario_yaml = "test_scenario.yaml" test_env_config_yaml_file = "test_env_config.yaml" self.test_cmd_map_yaml_file = "test_cmd_map.yaml" self.test_env_config_yaml = os.path.join( self.vnf_data_dir, - self.opnfv_vnf_data_dir, test_env_config_yaml_file) self.blueprint_dir = "opnfv-vnf-vyos-blueprint/" @@ -73,29 +64,7 @@ class Utilvnf(object): if not os.path.exists(self.vnf_data_dir): os.makedirs(self.vnf_data_dir) - case_dir = pkg_resources.resource_filename( - 'functest', 'opnfv_tests/vnf/router') - - config_file_name = CONST.__getattribute__( - 'vnf_{}_config'.format("vyos_vrouter")) - - config_file = os.path.join(case_dir, config_file_name) - - with open(config_file) as file_fd: - vrouter_config_yaml = yaml.safe_load(file_fd) - file_fd.close() - - test_data = vrouter_config_yaml.get("test_data") - - self.logger.debug("Downloading the test data.") - vrouter_data_path = self.vnf_data_dir + self.opnfv_vnf_data_dir - - if not os.path.exists(vrouter_data_path): - Repo.clone_from(test_data['url'], - vrouter_data_path, - branch=test_data['branch']) - - with open(self.test_env_config_yaml) as file_fd: + with open(self.test_env_config_yaml, encoding='utf-8') as file_fd: test_env_config_yaml = yaml.safe_load(file_fd) file_fd.close() @@ -107,77 +76,32 @@ class Utilvnf(object): self.test_result_json_file = "test_result.json" if os.path.isfile(self.test_result_json_file): os.remove(self.test_result_json_file) - self.logger.debug("removed %s" % self.test_result_json_file) - - def get_nova_client(self): - nova_client = nova_utils.nova_client(self.snaps_creds) + self.logger.debug("removed %s", self.test_result_json_file) - return nova_client + self.cloud = None - def set_credentials(self, snaps_creds): - self.snaps_creds = snaps_creds + def set_credentials(self, cloud): + self.cloud = cloud def get_address(self, server_name, network_name): - nova_client = self.get_nova_client() - servers_list = nova_client.servers.list() - server = None - - for server in servers_list: - if server.name == server_name: - break - + server = self.cloud.get_server(server_name) address = server.addresses[ - network_name][NOVA_CILENT_NETWORK_INFO_INDEX]["addr"] + network_name][NOVA_CILENT_NETWORK_INFO_INDEX]["addr"] return address def get_mac_address(self, server_name, network_name): - nova_client = self.get_nova_client() - servers_list = nova_client.servers.list() - server = None - - for server in servers_list: - if server.name == server_name: - break - + server = self.cloud.get_server(server_name) mac_address = server.addresses[network_name][ - NOVA_CILENT_NETWORK_INFO_INDEX][ - "OS-EXT-IPS-MAC:mac_addr"] + NOVA_CILENT_NETWORK_INFO_INDEX]["OS-EXT-IPS-MAC:mac_addr"] return mac_address - def reboot_vm(self, server_name): - nova_client = self.get_nova_client() - servers_list = nova_client.servers.list() - server = None - - for server in servers_list: - if server.name == server_name: - break - - server.reboot() - - return - - def delete_vm(self, server_name): - nova_client = self.get_nova_client() - servers_list = nova_client.servers.list() - server = None - - for server in servers_list: - if server.name == server_name: - nova_client.servers.delete(server) - break - - return - def get_blueprint_outputs(self, cfy_manager_ip, deployment_name): - url = "http://%s/deployments/%s/outputs" % ( - cfy_manager_ip, deployment_name) - + url = f"http://{cfy_manager_ip}/deployments/{deployment_name}/outputs" response = requests.get( url, - auth=HTTPBasicAuth('admin', 'admin'), + auth=requests.auth.HTTPBasicAuth('admin', 'admin'), headers={'Tenant': 'default_tenant'}) resp_data = response.json() @@ -203,15 +127,10 @@ class Utilvnf(object): network_list.append(networks[network_name]) return network_list - def request_vnf_reboot(self, vnf_info_list): - for vnf in vnf_info_list: - self.logger.debug("reboot the " + vnf["vnf_name"]) - self.reboot_vm(vnf["vnf_name"]) - def request_vm_delete(self, vnf_info_list): for vnf in vnf_info_list: - self.logger.debug("delete the " + vnf["vnf_name"]) - self.delete_vm(vnf["vnf_name"]) + self.logger.debug("delete the %s", vnf["vnf_name"]) + self.cloud.delete_server(vnf["vnf_name"]) def get_vnf_info_list(self, cfy_manager_ip, topology_deploy_name, target_vnf_name): @@ -226,12 +145,9 @@ class Utilvnf(object): vnf["user"] = self.image["user"] vnf["pass"] = self.image["pass"] - if vnf_name == target_vnf_name: - vnf["target_vnf_flag"] = True - else: - vnf["target_vnf_flag"] = False + vnf["target_vnf_flag"] = bool(vnf_name == target_vnf_name) - self.logger.debug("vnf name : " + vnf_name) + self.logger.debug("vnf name : %s", vnf_name) self.logger.debug(vnf_name + " floating ip address : " + vnf["floating_ip"]) @@ -251,14 +167,16 @@ class Utilvnf(object): return vnf_info_list - def get_target_vnf(self, vnf_info_list): + @staticmethod + def get_target_vnf(vnf_info_list): for vnf in vnf_info_list: if vnf["target_vnf_flag"]: return vnf return None - def get_reference_vnf_list(self, vnf_info_list): + @staticmethod + def get_reference_vnf_list(vnf_info_list): reference_vnf_list = [] for vnf in vnf_info_list: if not vnf["target_vnf_flag"]: @@ -266,14 +184,16 @@ class Utilvnf(object): return reference_vnf_list - def get_vnf_info(self, vnf_info_list, vnf_name): + @staticmethod + def get_vnf_info(vnf_info_list, vnf_name): for vnf in vnf_info_list: if vnf["vnf_name"] == vnf_name: return vnf return None - def convert_functional_test_result(self, result_data_list): + @staticmethod + def convert_functional_test_result(result_data_list): result = {} for result_data in result_data_list: test_kind = result_data["test_kind"] @@ -290,34 +210,38 @@ class Utilvnf(object): def write_result_data(self, result_data): test_result = [] if not os.path.isfile(self.test_result_json_file): - file_fd = open(self.test_result_json_file, "w") - file_fd.close() + with open( + self.test_result_json_file, "w", + encoding="utf-8") as file_fd: + pass else: - file_fd = open(self.test_result_json_file, "r") - test_result = json.load(file_fd) - file_fd.close() + with open( + self.test_result_json_file, "r", + encoding="utf-8") as file_fd: + test_result = json.load(file_fd) test_result.append(result_data) - file_fd = open(self.test_result_json_file, "w") - json.dump(test_result, file_fd) - file_fd.close() + with open( + self.test_result_json_file, "w", + encoding="utf-8") as file_fd: + json.dump(test_result, file_fd) def output_test_result_json(self): if os.path.isfile(self.test_result_json_file): - file_fd = open(self.test_result_json_file, "r") - test_result = json.load(file_fd) - file_fd.close() + with open( + self.test_result_json_file, "r", + encoding="utf-8") as file_fd: + test_result = json.load(file_fd) output_json_data = json.dumps(test_result, sort_keys=True, indent=4) - self.logger.debug("test_result %s" % output_json_data) + self.logger.debug("test_result %s", output_json_data) else: - self.logger.debug("Not found %s" % self.test_result_json_file) + self.logger.debug("Not found %s", self.test_result_json_file) - def get_test_scenario(self, file_path): - test_scenario_file = open(file_path, - 'r') - test_scenario_yaml = yaml.safe_load(test_scenario_file) - test_scenario_file.close() + @staticmethod + def get_test_scenario(file_path): + with open(file_path, "r", encoding="utf-8") as test_scenario_file: + test_scenario_yaml = yaml.safe_load(test_scenario_file) return test_scenario_yaml["test_scenario_list"] diff --git a/functest/opnfv_tests/vnf/router/vnf_controller/checker.py b/functest/opnfv_tests/vnf/router/vnf_controller/checker.py index 198a5ffc9..d3a216ed0 100644 --- a/functest/opnfv_tests/vnf/router/vnf_controller/checker.py +++ b/functest/opnfv_tests/vnf/router/vnf_controller/checker.py @@ -7,6 +7,8 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 +# pylint: disable=missing-docstring + """vrouter test result check module""" import json @@ -16,7 +18,7 @@ import re from jinja2 import Environment, FileSystemLoader -class Checker(object): +class Checker(): """vrouter test result check class""" logger = logging.getLogger(__name__) @@ -24,7 +26,8 @@ class Checker(object): def __init__(self): self.logger.debug("init checker") - def load_check_rule(self, rule_file_dir, rule_file_name, parameter): + @staticmethod + def load_check_rule(rule_file_dir, rule_file_name, parameter): loader = FileSystemLoader(rule_file_dir, encoding='utf8') env = Environment(loader=loader) @@ -33,7 +36,8 @@ class Checker(object): check_rule_data = json.loads(check_rule) return check_rule_data - def regexp_information(self, response, rules): + @staticmethod + def regexp_information(response, rules): status = False result_data = {} diff --git a/functest/opnfv_tests/vnf/router/vnf_controller/command_generator.py b/functest/opnfv_tests/vnf/router/vnf_controller/command_generator.py index 98cb14cc0..a86a16485 100644 --- a/functest/opnfv_tests/vnf/router/vnf_controller/command_generator.py +++ b/functest/opnfv_tests/vnf/router/vnf_controller/command_generator.py @@ -7,13 +7,15 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 +# pylint: disable=missing-docstring + """command generator module for vrouter testing""" import logging from jinja2 import Environment, FileSystemLoader -class CommandGenerator(object): +class CommandGenerator(): """command generator class for vrouter testing""" logger = logging.getLogger(__name__) @@ -21,12 +23,16 @@ class CommandGenerator(object): def __init__(self): self.logger.debug("init command generator") - def load_template(self, template_dir, template): + @staticmethod + def load_template(template_dir, template): + # pylint disable=missing-docstring loader = FileSystemLoader(template_dir, encoding='utf8') env = Environment(loader=loader) return env.get_template(template) - def command_create(self, template, parameter): + @staticmethod + def command_create(template, parameter): + # pylint disable=missing-docstring commands = template.render(parameter) return commands.split('\n') diff --git a/functest/opnfv_tests/vnf/router/vnf_controller/ssh_client.py b/functest/opnfv_tests/vnf/router/vnf_controller/ssh_client.py index c85a57351..269f6526b 100644 --- a/functest/opnfv_tests/vnf/router/vnf_controller/ssh_client.py +++ b/functest/opnfv_tests/vnf/router/vnf_controller/ssh_client.py @@ -10,10 +10,11 @@ """ssh client module for vrouter testing""" import logging -import paramiko import time import yaml +import paramiko + from functest.opnfv_tests.vnf.router.utilvnf import Utilvnf RECEIVE_ROOP_WAIT = 1 @@ -23,7 +24,7 @@ DEFAULT_CONNECT_RETRY_COUNT = 10 DEFAULT_SEND_TIMEOUT = 10 -class SshClient(object): +class SshClient(): # pylint: disable=too-many-instance-attributes """ssh client class for vrouter testing""" logger = logging.getLogger(__name__) @@ -42,7 +43,7 @@ class SshClient(object): self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) self.util = Utilvnf() - with open(self.util.test_env_config_yaml) as file_fd: + with open(self.util.test_env_config_yaml, encoding='utf-8') as file_fd: test_env_config_yaml = yaml.safe_load(file_fd) file_fd.close() @@ -51,6 +52,7 @@ class SshClient(object): def connect(self, time_out=DEFAULT_CONNECT_TIMEOUT, retrycount=DEFAULT_CONNECT_RETRY_COUNT): + # pylint: disable=missing-docstring while retrycount > 0: try: self.logger.info("SSH connect to %s.", self.ip_address) @@ -72,15 +74,14 @@ class SshClient(object): self.shell.recv(self.ssh_revieve_buff) break - except: # pylint: disable=broad-except + except Exception: # pylint: disable=broad-except self.logger.info("SSH timeout for %s...", self.ip_address) time.sleep(time_out) retrycount -= 1 if retrycount == 0: - self.logger.error("Cannot establish connection to IP '%s'. " + - "Aborting", - self.ip_address) + self.logger.warning( + "Cannot establish connection to IP '%s'", self.ip_address) self.connected = False return self.connected @@ -88,13 +89,14 @@ class SshClient(object): return self.connected def send(self, cmd, prompt, timeout=DEFAULT_SEND_TIMEOUT): + # pylint: disable=missing-docstring if self.connected is True: self.shell.settimeout(timeout) self.logger.debug("Commandset : '%s'", cmd) try: self.shell.send(cmd + '\n') - except: # pylint: disable=broad-except + except Exception: # pylint: disable=broad-except self.logger.error("ssh send timeout : Command : '%s'", cmd) return None @@ -103,27 +105,28 @@ class SshClient(object): time.sleep(RECEIVE_ROOP_WAIT) try: res = self.shell.recv(self.ssh_revieve_buff) - except: # pylint: disable=broad-except + except Exception: # pylint: disable=broad-except self.logger.error("ssh receive timeout : Command : '%s'", cmd) break - res_buff += res + res_buff += res.decode("utf-8") self.logger.debug("Response : '%s'", res_buff) return res_buff - else: - self.logger.error("Cannot connected to IP '%s'.", self.ip_address) - return None + self.logger.error("Cannot connected to IP '%s'.", self.ip_address) + return None def close(self): + # pylint: disable=missing-docstring if self.connected is True: self.ssh.close() - def error_check(response, err_strs=["error", - "warn", - "unknown command", - "already exist"]): + @staticmethod + def error_check(response, err_strs=None): + # pylint: disable=missing-docstring + if err_strs is None: + err_strs = ["error", "warn", "unknown command", "already exist"] for err in err_strs: if err in response: return False diff --git a/functest/opnfv_tests/vnf/router/vnf_controller/vm_controller.py b/functest/opnfv_tests/vnf/router/vnf_controller/vm_controller.py index d1c2e3242..2210b3909 100644 --- a/functest/opnfv_tests/vnf/router/vnf_controller/vm_controller.py +++ b/functest/opnfv_tests/vnf/router/vnf_controller/vm_controller.py @@ -7,6 +7,8 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 +# pylint: disable=missing-docstring + """vm controll module""" import logging @@ -21,7 +23,7 @@ from functest.opnfv_tests.vnf.router.vnf_controller.ssh_client import ( SshClient) -class VmController(object): +class VmController(): """vm controll class""" logger = logging.getLogger(__name__) @@ -32,14 +34,12 @@ class VmController(object): credentials = util_info["credentials"] self.util = Utilvnf() - self.util.set_credentials(credentials["snaps_creds"]) + self.util.set_credentials(credentials["cloud"]) - with open(self.util.test_env_config_yaml) as file_fd: + with open(self.util.test_env_config_yaml, encoding='utf-8') as file_fd: test_env_config_yaml = yaml.safe_load(file_fd) file_fd.close() - self.reboot_wait = test_env_config_yaml.get("general").get( - "reboot_wait") self.command_wait = test_env_config_yaml.get("general").get( "command_wait") self.ssh_connect_timeout = test_env_config_yaml.get("general").get( @@ -83,13 +83,10 @@ class VmController(object): result = ssh.connect(self.ssh_connect_timeout, self.ssh_connect_retry_count) if not result: - self.logger.debug("try to vm reboot.") - self.util.reboot_vm(vm_info["vnf_name"]) - time.sleep(self.reboot_wait) - result = ssh.connect(self.ssh_connect_timeout, - self.ssh_connect_retry_count) - if not result: - return None + self.logger.error( + "Cannot establish connection to IP '%s'. Aborting!", + ssh.ip_address) + return None (result, _) = self.command_create_and_execute( ssh, @@ -104,10 +101,8 @@ class VmController(object): def command_create_and_execute(self, ssh, test_cmd_file_path, cmd_input_param, prompt_file_path): - prompt_file = open(prompt_file_path, - 'r') - prompt = yaml.safe_load(prompt_file) - prompt_file.close() + with open(prompt_file_path, 'r', encoding='utf-8') as prompt_file: + prompt = yaml.safe_load(prompt_file) config_mode_prompt = prompt["config_mode"] commands = self.command_gen_from_template(test_cmd_file_path, @@ -119,11 +114,11 @@ class VmController(object): def command_list_execute(self, ssh, command_list, prompt): res_data_list = [] for command in command_list: - self.logger.debug("Command : " + command) + self.logger.debug("Command : %s", command) (res, res_data) = self.command_execute(ssh, command, prompt) - self.logger.debug("Response : " + res_data) + self.logger.debug("Response : %s", res_data) res_data_list.append(res_data) if not res: return res, res_data_list @@ -135,7 +130,7 @@ class VmController(object): def command_execute(self, ssh, command, prompt): res_data = ssh.send(command, prompt) if res_data is None: - self.logger.info("retry send command : " + command) + self.logger.info("retry send command : %s", command) res_data = ssh.send(command, prompt) if not ssh.error_check(res_data): diff --git a/functest/opnfv_tests/vnf/router/vnf_controller/vnf_controller.py b/functest/opnfv_tests/vnf/router/vnf_controller/vnf_controller.py index 814e9e333..46584456f 100644 --- a/functest/opnfv_tests/vnf/router/vnf_controller/vnf_controller.py +++ b/functest/opnfv_tests/vnf/router/vnf_controller/vnf_controller.py @@ -7,14 +7,17 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 +# pylint: disable=missing-docstring + """vrouter controll module""" import logging import os -import prettytable import time import yaml +import prettytable + from functest.opnfv_tests.vnf.router.utilvnf import Utilvnf from functest.opnfv_tests.vnf.router.vnf_controller.checker import Checker from functest.opnfv_tests.vnf.router.vnf_controller.ssh_client import ( @@ -23,7 +26,7 @@ from functest.opnfv_tests.vnf.router.vnf_controller.vm_controller import ( VmController) -class VnfController(object): +class VnfController(): """vrouter controll class""" logger = logging.getLogger(__name__) @@ -33,7 +36,7 @@ class VnfController(object): self.util = Utilvnf() self.vm_controller = VmController(util_info) - with open(self.util.test_env_config_yaml) as file_fd: + with open(self.util.test_env_config_yaml, encoding='utf-8') as file_fd: test_env_config_yaml = yaml.safe_load(file_fd) file_fd.close() @@ -45,10 +48,10 @@ class VnfController(object): def config_vnf(self, source_vnf, destination_vnf, test_cmd_file_path, parameter_file_path, prompt_file_path): - parameter_file = open(parameter_file_path, - 'r') - cmd_input_param = yaml.safe_load(parameter_file) - parameter_file.close() + # pylint: disable=too-many-arguments + with open( + parameter_file_path, 'r', encoding='utf-8') as parameter_file: + cmd_input_param = yaml.safe_load(parameter_file) cmd_input_param["macaddress"] = source_vnf["data_plane_network_mac"] cmd_input_param["source_ip"] = source_vnf["data_plane_network_ip"] @@ -63,22 +66,20 @@ class VnfController(object): def result_check(self, target_vnf, reference_vnf, check_rule_file_path_list, parameter_file_path, prompt_file_path): + # pylint: disable=too-many-arguments,too-many-locals res_dict_data_list = [] - parameter_file = open(parameter_file_path, - 'r') - cmd_input_param = yaml.safe_load(parameter_file) - parameter_file.close() + with open( + parameter_file_path, 'r', encoding='utf-8') as parameter_file: + cmd_input_param = yaml.safe_load(parameter_file) cmd_input_param["source_ip"] = target_vnf["data_plane_network_ip"] cmd_input_param["destination_ip"] = reference_vnf[ "data_plane_network_ip"] - prompt_file = open(prompt_file_path, - 'r') - prompt = yaml.safe_load(prompt_file) - prompt_file.close() + with open(prompt_file_path, 'r', encoding='utf-8') as prompt_file: + prompt = yaml.safe_load(prompt_file) terminal_mode_prompt = prompt["terminal_mode"] ssh = SshClient(target_vnf["floating_ip"], @@ -93,8 +94,8 @@ class VnfController(object): checker = Checker() res_table = prettytable.PrettyTable( - header_style='upper', padding_width=5, - field_names=['test item', 'result']) + header_style='upper', padding_width=5, + field_names=['test item', 'result']) status = True res_data_list = [] diff --git a/functest/opnfv_tests/vnf/router/vrouter_base.py b/functest/opnfv_tests/vnf/router/vrouter_base.py index a534f1f2f..932770b9c 100644 --- a/functest/opnfv_tests/vnf/router/vrouter_base.py +++ b/functest/opnfv_tests/vnf/router/vrouter_base.py @@ -7,46 +7,34 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 +# pylint: disable=missing-docstring + """vrouter testing base class module""" import datetime import json import logging import os -import pkg_resources import time -import functest.core.vnf as vnf -from functest.utils.constants import CONST +import pkg_resources + from functest.opnfv_tests.vnf.router.test_controller import function_test_exec -from functest.opnfv_tests.vnf.router.utilvnf import Utilvnf __author__ = "Shuya Nakama <shuya.nakama@okinawaopenlabs.org>" -REBOOT_WAIT = 30 - -class VrouterOnBoardingBase(vnf.VnfOnBoarding): +class VrouterOnBoardingBase(): """vrouter testing base class""" - def __init__(self, **kwargs): + def __init__(self, util, util_info): self.logger = logging.getLogger(__name__) - super(VrouterOnBoardingBase, self).__init__(**kwargs) self.case_dir = pkg_resources.resource_filename( 'functest', 'opnfv_tests/vnf/router') - self.data_dir = CONST.__getattribute__('dir_router_data') - self.result_dir = os.path.join(CONST.__getattribute__('dir_results'), - self.case_name) - self.util = Utilvnf() - self.util_info = {} - + self.util = util + self.util_info = util_info self.vnf_list = [] - if not os.path.exists(self.data_dir): - os.makedirs(self.data_dir) - if not os.path.exists(self.result_dir): - os.makedirs(self.result_dir) - def test_vnf(self): """vrouter test execution""" result = False @@ -62,12 +50,11 @@ class VrouterOnBoardingBase(vnf.VnfOnBoarding): test_list = function_test["test_list"] target_vnf_name = function_test["target_vnf_name"] for test_info in test_list: - self.logger.info(test_info["protocol"] + " " + - test_info["test_kind"] + - " test.") + self.logger.info( + "%s %s test.", test_info["protocol"], + test_info["test_kind"]) (result, result_data) = self.function_test_vrouter( - target_vnf_name, - test_info) + target_vnf_name, test_info) test_result_data_list.append(result_data) if not result: break @@ -87,10 +74,6 @@ class VrouterOnBoardingBase(vnf.VnfOnBoarding): vnf_info_list = self.get_vnf_info_list(target_vnf_name) self.vnf_list = vnf_info_list - self.logger.debug("request vnf's reboot.") - self.util.request_vnf_reboot(vnf_info_list) - time.sleep(REBOOT_WAIT) - target_vnf = self.util.get_target_vnf(vnf_info_list) reference_vnf_list = self.util.get_reference_vnf_list(vnf_info_list) @@ -115,5 +98,7 @@ class VrouterOnBoardingBase(vnf.VnfOnBoarding): return result, test_result_data def get_vnf_info_list(self, target_vnf_name): - vnf_info_list = [] - return vnf_info_list + return self.util.get_vnf_info_list( + self.util_info["cfy_manager_ip"], + self.util_info["deployment_name"], + target_vnf_name) |