aboutsummaryrefslogtreecommitdiffstats
path: root/functest/opnfv_tests
diff options
context:
space:
mode:
Diffstat (limited to 'functest/opnfv_tests')
-rw-r--r--functest/opnfv_tests/openstack/api/__init__.py (renamed from functest/opnfv_tests/openstack/refstack_client/__init__.py)0
-rw-r--r--functest/opnfv_tests/openstack/api/connection_check.py73
-rw-r--r--functest/opnfv_tests/openstack/barbican/__init__.py (renamed from functest/opnfv_tests/openstack/snaps/__init__.py)0
-rw-r--r--functest/opnfv_tests/openstack/barbican/barbican.py37
-rw-r--r--functest/opnfv_tests/openstack/cinder/__init__.py (renamed from functest/opnfv_tests/vnf/ims/ixia/__init__.py)0
-rw-r--r--functest/opnfv_tests/openstack/cinder/cinder_test.py127
-rw-r--r--functest/opnfv_tests/openstack/cinder/read_data.sh26
-rw-r--r--functest/opnfv_tests/openstack/cinder/write_data.sh30
-rw-r--r--functest/opnfv_tests/openstack/patrole/__init__.py (renamed from functest/opnfv_tests/vnf/ims/ixia/utils/__init__.py)0
-rw-r--r--functest/opnfv_tests/openstack/patrole/patrole.py28
-rw-r--r--functest/opnfv_tests/openstack/rally/blacklist.txt71
-rw-r--r--functest/opnfv_tests/openstack/rally/blacklist.yaml40
-rw-r--r--functest/opnfv_tests/openstack/rally/macro/macro.yaml6
-rw-r--r--functest/opnfv_tests/openstack/rally/rally.py1059
-rw-r--r--functest/opnfv_tests/openstack/rally/rally_jobs.yaml3
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/full/opnfv-ceilometer.yaml458
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/full/opnfv-cinder.yaml77
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/full/opnfv-glance.yaml5
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/full/opnfv-gnocchi.yaml181
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/full/opnfv-neutron.yaml22
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/full/opnfv-nova.yaml82
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/opnfv-barbican.yaml98
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/opnfv-quotas.yaml15
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/opnfv-swift.yaml71
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/opnfv-vm.yaml41
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-ceilometer.yaml247
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-cinder.yaml20
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-glance.yaml5
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-gnocchi.yaml119
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-neutron.yaml12
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/sanity/opnfv-nova.yaml48
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/support/instance_dd_test.sh13
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/templates/server_with_ports.yaml.template2
-rw-r--r--functest/opnfv_tests/openstack/rally/scenario/templates/server_with_volume.yaml.template2
-rw-r--r--functest/opnfv_tests/openstack/rally/task.yaml18
-rw-r--r--functest/opnfv_tests/openstack/refstack/__init__.py0
-rw-r--r--functest/opnfv_tests/openstack/refstack/refstack.py81
-rw-r--r--functest/opnfv_tests/openstack/refstack_client/defcore.txt313
-rw-r--r--functest/opnfv_tests/openstack/refstack_client/refstack_client.py261
-rw-r--r--functest/opnfv_tests/openstack/refstack_client/tempest_conf.py67
-rw-r--r--functest/opnfv_tests/openstack/shaker/__init__.py0
-rw-r--r--functest/opnfv_tests/openstack/shaker/shaker.py147
-rw-r--r--functest/opnfv_tests/openstack/snaps/api_check.py41
-rw-r--r--functest/opnfv_tests/openstack/snaps/connection_check.py40
-rw-r--r--functest/opnfv_tests/openstack/snaps/health_check.py45
-rw-r--r--functest/opnfv_tests/openstack/snaps/smoke.py44
-rw-r--r--functest/opnfv_tests/openstack/snaps/snaps_suite_builder.py433
-rw-r--r--functest/opnfv_tests/openstack/snaps/snaps_test_runner.py63
-rw-r--r--functest/opnfv_tests/openstack/snaps/snaps_utils.py38
-rw-r--r--functest/opnfv_tests/openstack/tempest/conf_utils.py352
-rw-r--r--functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.txt2
-rw-r--r--functest/opnfv_tests/openstack/tempest/custom_tests/blacklist.yaml19
-rw-r--r--functest/opnfv_tests/openstack/tempest/custom_tests/defcore_req.txt249
-rw-r--r--functest/opnfv_tests/openstack/tempest/custom_tests/public_blacklist.yaml15
-rw-r--r--functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml117
-rw-r--r--functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf_ovn.yaml104
-rw-r--r--functest/opnfv_tests/openstack/tempest/tempest.py1128
-rw-r--r--functest/opnfv_tests/openstack/vmtp/__init__.py0
-rw-r--r--functest/opnfv_tests/openstack/vmtp/vmtp.py213
-rw-r--r--functest/opnfv_tests/openstack/vping/ping.sh10
-rw-r--r--functest/opnfv_tests/openstack/vping/vping_base.py215
-rw-r--r--functest/opnfv_tests/openstack/vping/vping_ssh.py253
-rw-r--r--functest/opnfv_tests/openstack/vping/vping_userdata.py170
-rw-r--r--functest/opnfv_tests/sdn/odl/odl.py82
-rw-r--r--functest/opnfv_tests/vnf/epc/juju_epc.py687
-rw-r--r--functest/opnfv_tests/vnf/ims/clearwater.py190
-rw-r--r--functest/opnfv_tests/vnf/ims/clearwater_ims_base.py165
-rw-r--r--functest/opnfv_tests/vnf/ims/cloudify_ims.py605
-rw-r--r--functest/opnfv_tests/vnf/ims/cloudify_ims.yaml35
-rw-r--r--functest/opnfv_tests/vnf/ims/cloudify_ims_perf.py498
-rw-r--r--functest/opnfv_tests/vnf/ims/cloudify_ims_perf.yaml91
-rw-r--r--functest/opnfv_tests/vnf/ims/heat_ims.py253
-rw-r--r--functest/opnfv_tests/vnf/ims/heat_ims.yaml22
-rw-r--r--functest/opnfv_tests/vnf/ims/ixia/files/REG_CALL_OPNFV_v13.rxf.template16731
-rw-r--r--functest/opnfv_tests/vnf/ims/ixia/files/Registration_only_LPS.tstbin491520 -> 0 bytes
-rw-r--r--functest/opnfv_tests/vnf/ims/ixia/files/SIPCall.tstbin573440 -> 0 bytes
-rw-r--r--functest/opnfv_tests/vnf/ims/ixia/utils/IxChassisUtils.py150
-rw-r--r--functest/opnfv_tests/vnf/ims/ixia/utils/IxLoadUtils.py398
-rw-r--r--functest/opnfv_tests/vnf/ims/ixia/utils/IxRestUtils.py192
-rw-r--r--functest/opnfv_tests/vnf/ims/orchestra.yaml68
-rw-r--r--functest/opnfv_tests/vnf/ims/orchestra_clearwaterims.py667
-rw-r--r--functest/opnfv_tests/vnf/ims/orchestra_openims.py690
-rw-r--r--functest/opnfv_tests/vnf/router/cloudify_vrouter.py572
-rw-r--r--functest/opnfv_tests/vnf/router/cloudify_vrouter.yaml12
-rw-r--r--functest/opnfv_tests/vnf/router/test_controller/function_test_exec.py22
-rw-r--r--functest/opnfv_tests/vnf/router/utilvnf.py176
-rw-r--r--functest/opnfv_tests/vnf/router/vnf_controller/checker.py10
-rw-r--r--functest/opnfv_tests/vnf/router/vnf_controller/command_generator.py12
-rw-r--r--functest/opnfv_tests/vnf/router/vnf_controller/ssh_client.py37
-rw-r--r--functest/opnfv_tests/vnf/router/vnf_controller/vm_controller.py33
-rw-r--r--functest/opnfv_tests/vnf/router/vnf_controller/vnf_controller.py35
-rw-r--r--functest/opnfv_tests/vnf/router/vrouter_base.py47
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">&lt;rpf&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.SMSession type=&quot;Ixia.Aptixia.StackManager.SMSession&quot; objectid=&quot;d0db76dc-f224-429f-91ba-e207cd4711db&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;doWaitLinkUp type=&quot;Bool&quot;&gt;0&lt;/doWaitLinkUp&gt;&#13;&#10; &lt;doGratArp type=&quot;Bool&quot;&gt;0&lt;/doGratArp&gt;&#13;&#10; &lt;subscribeToGratArpNotifications type=&quot;Bool&quot;&gt;0&lt;/subscribeToGratArpNotifications&gt;&#13;&#10; &lt;doInterfaceCheck type=&quot;Bool&quot;&gt;0&lt;/doInterfaceCheck&gt;&#13;&#10; &lt;rebootPortsBeforeConfigure type=&quot;Bool&quot;&gt;0&lt;/rebootPortsBeforeConfigure&gt;&#13;&#10; &lt;testDuration type=&quot;Int&quot;&gt;10000&lt;/testDuration&gt;&#13;&#10; &lt;checkLinkState type=&quot;Bool&quot;&gt;0&lt;/checkLinkState&gt;&#13;&#10; &lt;portGroupList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.PortGroup type=&quot;Ixia.Aptixia.StackManager.PortGroup&quot; objectid=&quot;e7fa1f9e-23d9-4742-96b2-6edce6c4424e&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;VM1&lt;/name&gt;&#13;&#10; &lt;category type=&quot;String&quot; /&gt;&#13;&#10; &lt;stack type=&quot;Ixia.Aptixia.StackManager.L1EthernetPlugin&quot; objectid=&quot;45426251-0720-4316-b8a5-d6bce32e3d2e&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;autoNegotiate type=&quot;Bool&quot;&gt;1&lt;/autoNegotiate&gt;&#13;&#10; &lt;speed type=&quot;String&quot;&gt;k100FD&lt;/speed&gt;&#13;&#10; &lt;advertise10Half type=&quot;Bool&quot;&gt;1&lt;/advertise10Half&gt;&#13;&#10; &lt;advertise10Full type=&quot;Bool&quot;&gt;1&lt;/advertise10Full&gt;&#13;&#10; &lt;advertise100Half type=&quot;Bool&quot;&gt;1&lt;/advertise100Half&gt;&#13;&#10; &lt;advertise100Full type=&quot;Bool&quot;&gt;1&lt;/advertise100Full&gt;&#13;&#10; &lt;advertise1000Full type=&quot;Bool&quot;&gt;1&lt;/advertise1000Full&gt;&#13;&#10; &lt;advertise2500Full type=&quot;Bool&quot;&gt;1&lt;/advertise2500Full&gt;&#13;&#10; &lt;advertise5000Full type=&quot;Bool&quot;&gt;1&lt;/advertise5000Full&gt;&#13;&#10; &lt;advertise10000Full type=&quot;Bool&quot;&gt;0&lt;/advertise10000Full&gt;&#13;&#10; &lt;cardDualPhy type=&quot;Ixia.Aptixia.StackManager.DualPhyPlugin&quot; objectid=&quot;836ee0d6-1957-42eb-a7a4-53bcfbdd36e0&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;medium type=&quot;String&quot;&gt;copper&lt;/medium&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;2&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/cardDualPhy&gt;&#13;&#10; &lt;cardElm type=&quot;Ixia.Aptixia.StackManager.EthernetELMPlugin&quot; objectid=&quot;8387c005-0df9-4fd2-977e-1c234c7be0cc&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;negotiateMasterSlave type=&quot;Bool&quot;&gt;1&lt;/negotiateMasterSlave&gt;&#13;&#10; &lt;negotiationType type=&quot;String&quot;&gt;master&lt;/negotiationType&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;2&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/cardElm&gt;&#13;&#10; &lt;enableFlowControl type=&quot;Bool&quot;&gt;0&lt;/enableFlowControl&gt;&#13;&#10; &lt;directedAddress type=&quot;String&quot;&gt;01:80:C2:00:00:01&lt;/directedAddress&gt;&#13;&#10; &lt;dataCenter type=&quot;Ixia.Aptixia.StackManager.DataCenterSettings&quot; objectid=&quot;df9be2ec-31d8-47f0-babe-79a1710303f3&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;dcSupported type=&quot;Bool&quot;&gt;1&lt;/dcSupported&gt;&#13;&#10; &lt;dcEnabled type=&quot;Bool&quot;&gt;0&lt;/dcEnabled&gt;&#13;&#10; &lt;dcFlowControl type=&quot;Ixia.Aptixia.StackManager.DataCenterSettingsSkeleton+eFlowControlType&quot;&gt;0&lt;/dcFlowControl&gt;&#13;&#10; &lt;dcMode type=&quot;Ixia.Aptixia.StackManager.DataCenterSettingsSkeleton+eDataCenterMode&quot;&gt;2&lt;/dcMode&gt;&#13;&#10; &lt;dcPfcMapping type=&quot;IntList&quot; /&gt;&#13;&#10; &lt;dcPfcPauseEnable type=&quot;Bool&quot;&gt;0&lt;/dcPfcPauseEnable&gt;&#13;&#10; &lt;dcPfcPauseDelay type=&quot;Int&quot;&gt;1&lt;/dcPfcPauseDelay&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;2&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/dataCenter&gt;&#13;&#10; &lt;childrenList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.L2EthernetPlugin type=&quot;Ixia.Aptixia.StackManager.L2EthernetPlugin&quot; objectid=&quot;166a11b6-4d30-40ea-b9e1-ac4fb44f112b&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;macRangeList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.MacRange type=&quot;Ixia.Aptixia.StackManager.MacRange&quot; objectid=&quot;ba896971-1d78-4e03-8f2a-28c65417612e&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;enabled type=&quot;Bool&quot;&gt;1&lt;/enabled&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;MAC-R11&lt;/name&gt;&#13;&#10; &lt;mac type=&quot;String&quot;&gt;00:0A:43:4F:1B:00&lt;/mac&gt;&#13;&#10; &lt;incrementBy type=&quot;String&quot;&gt;00:00:00:00:00:01&lt;/incrementBy&gt;&#13;&#10; &lt;mtu type=&quot;Int&quot;&gt;1410&lt;/mtu&gt;&#13;&#10; &lt;count type=&quot;Int&quot;&gt;1&lt;/count&gt;&#13;&#10; &lt;vlanRange type=&quot;Ixia.Aptixia.StackManager.VlanIdRange&quot; objectid=&quot;2b81e36c-9cbb-4d78-a70c-904da8d41b28&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;VLAN-R11&lt;/name&gt;&#13;&#10; &lt;enabled type=&quot;Bool&quot;&gt;0&lt;/enabled&gt;&#13;&#10; &lt;firstId type=&quot;Int&quot;&gt;1&lt;/firstId&gt;&#13;&#10; &lt;incrementStep type=&quot;Int&quot;&gt;1&lt;/incrementStep&gt;&#13;&#10; &lt;increment type=&quot;Int&quot;&gt;1&lt;/increment&gt;&#13;&#10; &lt;uniqueCount type=&quot;Int&quot;&gt;4094&lt;/uniqueCount&gt;&#13;&#10; &lt;priority type=&quot;Int&quot;&gt;1&lt;/priority&gt;&#13;&#10; &lt;tpid type=&quot;String&quot;&gt;0x8100&lt;/tpid&gt;&#13;&#10; &lt;innerEnable type=&quot;Bool&quot;&gt;0&lt;/innerEnable&gt;&#13;&#10; &lt;innerFirstId type=&quot;Int&quot;&gt;1&lt;/innerFirstId&gt;&#13;&#10; &lt;innerIncrementStep type=&quot;Int&quot;&gt;1&lt;/innerIncrementStep&gt;&#13;&#10; &lt;innerIncrement type=&quot;Int&quot;&gt;1&lt;/innerIncrement&gt;&#13;&#10; &lt;innerUniqueCount type=&quot;Int&quot;&gt;4094&lt;/innerUniqueCount&gt;&#13;&#10; &lt;innerPriority type=&quot;Int&quot;&gt;1&lt;/innerPriority&gt;&#13;&#10; &lt;idIncrMode type=&quot;Int&quot;&gt;2&lt;/idIncrMode&gt;&#13;&#10; &lt;innerTpid type=&quot;String&quot;&gt;0x8100&lt;/innerTpid&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;9&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/vlanRange&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;9&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.MacRange&gt;&#13;&#10; &lt;/macRangeList&gt;&#13;&#10; &lt;vlanRangeList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.VlanIdRange type=&quot;Ixia.Aptixia.StackManager.VlanIdRange&quot; objectid=&quot;2b81e36c-9cbb-4d78-a70c-904da8d41b28&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;/vlanRangeList&gt;&#13;&#10; &lt;childrenList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.IpV4V6Plugin type=&quot;Ixia.Aptixia.StackManager.IpV4V6Plugin&quot; objectid=&quot;9ea551b2-a0af-4a7d-9872-e9b94298d7bd&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;rangeList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.IpV4V6Range type=&quot;Ixia.Aptixia.StackManager.IpV4V6Range&quot; objectid=&quot;5affc0a7-68f6-46f6-b801-0e18e067a572&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;enabled type=&quot;Bool&quot;&gt;1&lt;/enabled&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;IP-R13&lt;/name&gt;&#13;&#10; &lt;ipType type=&quot;String&quot;&gt;IPv4&lt;/ipType&gt;&#13;&#10; &lt;ipAddress type=&quot;String&quot;&gt;{{ipcard1}}&lt;/ipAddress&gt;&#13;&#10; &lt;prefix type=&quot;Int&quot;&gt;16&lt;/prefix&gt;&#13;&#10; &lt;incrementBy type=&quot;String&quot;&gt;0.0.0.1&lt;/incrementBy&gt;&#13;&#10; &lt;count type=&quot;Int&quot;&gt;1&lt;/count&gt;&#13;&#10; &lt;autoCountEnabled type=&quot;Bool&quot;&gt;0&lt;/autoCountEnabled&gt;&#13;&#10; &lt;gatewayAddress type=&quot;String&quot;&gt;{{ipgw}}&lt;/gatewayAddress&gt;&#13;&#10; &lt;gatewayIncrement type=&quot;String&quot;&gt;0.0.0.0&lt;/gatewayIncrement&gt;&#13;&#10; &lt;gatewayIncrementMode type=&quot;String&quot;&gt;perSubnet&lt;/gatewayIncrementMode&gt;&#13;&#10; &lt;enableGatewayArp type=&quot;Bool&quot;&gt;0&lt;/enableGatewayArp&gt;&#13;&#10; &lt;generateStatistics type=&quot;Bool&quot;&gt;0&lt;/generateStatistics&gt;&#13;&#10; &lt;mss type=&quot;Int&quot;&gt;1410&lt;/mss&gt;&#13;&#10; &lt;randomizeAddress type=&quot;Bool&quot;&gt;0&lt;/randomizeAddress&gt;&#13;&#10; &lt;randomizeSeed type=&quot;Int&quot;&gt;1007257123&lt;/randomizeSeed&gt;&#13;&#10; &lt;autoMacGeneration type=&quot;Bool&quot;&gt;1&lt;/autoMacGeneration&gt;&#13;&#10; &lt;macRange type=&quot;Ixia.Aptixia.StackManager.MacRange&quot; objectid=&quot;ba896971-1d78-4e03-8f2a-28c65417612e&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;vlanRange type=&quot;Ixia.Aptixia.StackManager.VlanIdRange&quot; objectid=&quot;2b81e36c-9cbb-4d78-a70c-904da8d41b28&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;atmRange type=&quot;Ixia.Aptixia.StackManager.AtmRange&quot; objectid=&quot;00000000-0000-0000-0000-000000000000&quot; /&gt;&#13;&#10; &lt;pvcRange type=&quot;Ixia.Aptixia.StackManager.PvcRange&quot; objectid=&quot;00000000-0000-0000-0000-000000000000&quot; /&gt;&#13;&#10; &lt;autoIpTypeEnabled type=&quot;Bool&quot;&gt;0&lt;/autoIpTypeEnabled&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;9&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.IpV4V6Range&gt;&#13;&#10; &lt;/rangeList&gt;&#13;&#10; &lt;rangeGroups type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.RangeGroup type=&quot;Ixia.Aptixia.StackManager.RangeGroup&quot; objectid=&quot;abf2b6e4-a102-4cbe-bf1b-a11f11b2faac&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;Group1&lt;/name&gt;&#13;&#10; &lt;distribType type=&quot;Ixia.Aptixia.StackManager.RangeGroupSkeleton+eDistributionType&quot;&gt;0&lt;/distribType&gt;&#13;&#10; &lt;rangeList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.IpV4V6Range type=&quot;Ixia.Aptixia.StackManager.IpV4V6Range&quot; objectid=&quot;5affc0a7-68f6-46f6-b801-0e18e067a572&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;/rangeList&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;-1&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.RangeGroup&gt;&#13;&#10; &lt;/rangeGroups&gt;&#13;&#10; &lt;childrenList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;extensionList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;dscMode type=&quot;Bool&quot;&gt;0&lt;/dscMode&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;IP-8&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;26&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.IpV4V6Plugin&gt;&#13;&#10; &lt;/childrenList&gt;&#13;&#10; &lt;extensionList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;dscMode type=&quot;Bool&quot;&gt;0&lt;/dscMode&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;MAC/VLAN-8&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;25&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.L2EthernetPlugin&gt;&#13;&#10; &lt;/childrenList&gt;&#13;&#10; &lt;extensionList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;dscMode type=&quot;Bool&quot;&gt;0&lt;/dscMode&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;Ethernet-1&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;1&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/stack&gt;&#13;&#10; &lt;globalPluginList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.FilterPlugin type=&quot;Ixia.Aptixia.StackManager.FilterPlugin&quot; objectid=&quot;976ba0fd-58ea-44d4-ae43-1b36c2556072&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;auto type=&quot;Bool&quot;&gt;1&lt;/auto&gt;&#13;&#10; &lt;all type=&quot;Bool&quot;&gt;0&lt;/all&gt;&#13;&#10; &lt;pppoecontrol type=&quot;Bool&quot;&gt;0&lt;/pppoecontrol&gt;&#13;&#10; &lt;pppoenetwork type=&quot;Bool&quot;&gt;0&lt;/pppoenetwork&gt;&#13;&#10; &lt;isis type=&quot;Bool&quot;&gt;0&lt;/isis&gt;&#13;&#10; &lt;ip type=&quot;String&quot; /&gt;&#13;&#10; &lt;tcp type=&quot;String&quot; /&gt;&#13;&#10; &lt;udp type=&quot;String&quot; /&gt;&#13;&#10; &lt;mac type=&quot;String&quot; /&gt;&#13;&#10; &lt;icmp type=&quot;String&quot; /&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;Filter-1&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;1&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.FilterPlugin&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.GratArpPlugin type=&quot;Ixia.Aptixia.StackManager.GratArpPlugin&quot; objectid=&quot;3ebd05e7-88a6-49be-a50d-134908ac124c&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;enabled type=&quot;Bool&quot;&gt;1&lt;/enabled&gt;&#13;&#10; &lt;forwardGratArp type=&quot;Bool&quot;&gt;0&lt;/forwardGratArp&gt;&#13;&#10; &lt;rateControlEnabled type=&quot;Bool&quot;&gt;0&lt;/rateControlEnabled&gt;&#13;&#10; &lt;maxFramesPerSecond type=&quot;Int&quot;&gt;0&lt;/maxFramesPerSecond&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;GratARP-1&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;2&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.GratArpPlugin&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.TCPPlugin type=&quot;Ixia.Aptixia.StackManager.TCPPlugin&quot; objectid=&quot;1d9748c5-122e-4153-8ffd-67cd1309b8ce&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;bestPerfSettings type=&quot;Bool&quot;&gt;0&lt;/bestPerfSettings&gt;&#13;&#10; &lt;accept_ra_all type=&quot;Bool&quot;&gt;0&lt;/accept_ra_all&gt;&#13;&#10; &lt;tcp_abort_on_overflow type=&quot;Bool&quot;&gt;0&lt;/tcp_abort_on_overflow&gt;&#13;&#10; &lt;tcp_adv_win_scale type=&quot;Int&quot;&gt;2&lt;/tcp_adv_win_scale&gt;&#13;&#10; &lt;tcp_app_win type=&quot;Int&quot;&gt;31&lt;/tcp_app_win&gt;&#13;&#10; &lt;tcp_bic type=&quot;Int&quot;&gt;0&lt;/tcp_bic&gt;&#13;&#10; &lt;tcp_bic_fast_convergence type=&quot;Int&quot;&gt;1&lt;/tcp_bic_fast_convergence&gt;&#13;&#10; &lt;tcp_bic_low_window type=&quot;Int&quot;&gt;14&lt;/tcp_bic_low_window&gt;&#13;&#10; &lt;tcp_dsack type=&quot;Bool&quot;&gt;1&lt;/tcp_dsack&gt;&#13;&#10; &lt;tcp_ecn type=&quot;Bool&quot;&gt;0&lt;/tcp_ecn&gt;&#13;&#10; &lt;tcp_fack type=&quot;Bool&quot;&gt;1&lt;/tcp_fack&gt;&#13;&#10; &lt;tcp_fin_timeout type=&quot;Int&quot;&gt;60&lt;/tcp_fin_timeout&gt;&#13;&#10; &lt;tcp_frto type=&quot;Int&quot;&gt;0&lt;/tcp_frto&gt;&#13;&#10; &lt;tcp_keepalive_intvl type=&quot;Int&quot;&gt;75&lt;/tcp_keepalive_intvl&gt;&#13;&#10; &lt;tcp_keepalive_probes type=&quot;Int&quot;&gt;9&lt;/tcp_keepalive_probes&gt;&#13;&#10; &lt;tcp_keepalive_time type=&quot;Int&quot;&gt;7200&lt;/tcp_keepalive_time&gt;&#13;&#10; &lt;tcp_low_latency type=&quot;Int&quot;&gt;0&lt;/tcp_low_latency&gt;&#13;&#10; &lt;tcp_max_orphans type=&quot;Int&quot;&gt;8192&lt;/tcp_max_orphans&gt;&#13;&#10; &lt;tcp_max_syn_backlog type=&quot;Int&quot;&gt;1024&lt;/tcp_max_syn_backlog&gt;&#13;&#10; &lt;tcp_max_tw_buckets type=&quot;Int&quot;&gt;180000&lt;/tcp_max_tw_buckets&gt;&#13;&#10; &lt;tcp_mem_low type=&quot;Int&quot;&gt;24576&lt;/tcp_mem_low&gt;&#13;&#10; &lt;tcp_mem_pressure type=&quot;Int&quot;&gt;32768&lt;/tcp_mem_pressure&gt;&#13;&#10; &lt;tcp_mem_high type=&quot;Int&quot;&gt;49152&lt;/tcp_mem_high&gt;&#13;&#10; &lt;tcp_moderate_rcvbuf type=&quot;Int&quot;&gt;0&lt;/tcp_moderate_rcvbuf&gt;&#13;&#10; &lt;tcp_no_metrics_save type=&quot;Bool&quot;&gt;0&lt;/tcp_no_metrics_save&gt;&#13;&#10; &lt;tcp_orphan_retries type=&quot;Int&quot;&gt;0&lt;/tcp_orphan_retries&gt;&#13;&#10; &lt;tcp_reordering type=&quot;Int&quot;&gt;3&lt;/tcp_reordering&gt;&#13;&#10; &lt;tcp_retrans_collapse type=&quot;Bool&quot;&gt;1&lt;/tcp_retrans_collapse&gt;&#13;&#10; &lt;tcp_retries1 type=&quot;Int&quot;&gt;3&lt;/tcp_retries1&gt;&#13;&#10; &lt;tcp_retries2 type=&quot;Int&quot;&gt;5&lt;/tcp_retries2&gt;&#13;&#10; &lt;tcp_rfc1337 type=&quot;Bool&quot;&gt;0&lt;/tcp_rfc1337&gt;&#13;&#10; &lt;tcp_rmem_min type=&quot;Int&quot;&gt;4096&lt;/tcp_rmem_min&gt;&#13;&#10; &lt;tcp_rmem_default type=&quot;Int&quot;&gt;8192&lt;/tcp_rmem_default&gt;&#13;&#10; &lt;tcp_rmem_max type=&quot;Int&quot;&gt;262144&lt;/tcp_rmem_max&gt;&#13;&#10; &lt;tcp_sack type=&quot;Bool&quot;&gt;1&lt;/tcp_sack&gt;&#13;&#10; &lt;tcp_stdurg type=&quot;Bool&quot;&gt;0&lt;/tcp_stdurg&gt;&#13;&#10; &lt;tcp_synack_retries type=&quot;Int&quot;&gt;5&lt;/tcp_synack_retries&gt;&#13;&#10; &lt;tcp_syn_retries type=&quot;Int&quot;&gt;5&lt;/tcp_syn_retries&gt;&#13;&#10; &lt;tcp_timestamps type=&quot;Bool&quot;&gt;1&lt;/tcp_timestamps&gt;&#13;&#10; &lt;tcp_tw_recycle type=&quot;Bool&quot;&gt;1&lt;/tcp_tw_recycle&gt;&#13;&#10; &lt;tcp_tw_reuse type=&quot;Bool&quot;&gt;0&lt;/tcp_tw_reuse&gt;&#13;&#10; &lt;tcp_vegas_alpha type=&quot;Int&quot;&gt;2&lt;/tcp_vegas_alpha&gt;&#13;&#10; &lt;tcp_vegas_beta type=&quot;Int&quot;&gt;6&lt;/tcp_vegas_beta&gt;&#13;&#10; &lt;tcp_vegas_cong_avoid type=&quot;Int&quot;&gt;0&lt;/tcp_vegas_cong_avoid&gt;&#13;&#10; &lt;tcp_vegas_gamma type=&quot;Int&quot;&gt;2&lt;/tcp_vegas_gamma&gt;&#13;&#10; &lt;tcp_westwood type=&quot;Int&quot;&gt;0&lt;/tcp_westwood&gt;&#13;&#10; &lt;tcp_window_scaling type=&quot;Bool&quot;&gt;0&lt;/tcp_window_scaling&gt;&#13;&#10; &lt;ip_no_pmtu_disc type=&quot;Bool&quot;&gt;1&lt;/ip_no_pmtu_disc&gt;&#13;&#10; &lt;tcp_wmem_min type=&quot;Int&quot;&gt;4096&lt;/tcp_wmem_min&gt;&#13;&#10; &lt;tcp_wmem_default type=&quot;Int&quot;&gt;8192&lt;/tcp_wmem_default&gt;&#13;&#10; &lt;tcp_wmem_max type=&quot;Int&quot;&gt;262144&lt;/tcp_wmem_max&gt;&#13;&#10; &lt;tcp_ipfrag_time type=&quot;Int&quot;&gt;30&lt;/tcp_ipfrag_time&gt;&#13;&#10; &lt;tcp_port_min type=&quot;Int&quot;&gt;1024&lt;/tcp_port_min&gt;&#13;&#10; &lt;tcp_port_max type=&quot;Int&quot;&gt;65535&lt;/tcp_port_max&gt;&#13;&#10; &lt;tcp_rto_min type=&quot;Int&quot;&gt;1000&lt;/tcp_rto_min&gt;&#13;&#10; &lt;tcp_rto_max type=&quot;Int&quot;&gt;60000&lt;/tcp_rto_max&gt;&#13;&#10; &lt;tcp_tw_rfc1323_strict type=&quot;Bool&quot;&gt;0&lt;/tcp_tw_rfc1323_strict&gt;&#13;&#10; &lt;udp_port_randomization type=&quot;Bool&quot;&gt;0&lt;/udp_port_randomization&gt;&#13;&#10; &lt;disable_min_max_buffer_size type=&quot;Bool&quot;&gt;1&lt;/disable_min_max_buffer_size&gt;&#13;&#10; &lt;llm_hdr_gap type=&quot;Int&quot;&gt;8&lt;/llm_hdr_gap&gt;&#13;&#10; &lt;llm_hdr_gap_ns type=&quot;Int&quot;&gt;10&lt;/llm_hdr_gap_ns&gt;&#13;&#10; &lt;inter_packet_granular_delay type=&quot;Double&quot;&gt;0&lt;/inter_packet_granular_delay&gt;&#13;&#10; &lt;delayed_acks type=&quot;Bool&quot;&gt;1&lt;/delayed_acks&gt;&#13;&#10; &lt;accept_ra_default type=&quot;Bool&quot;&gt;0&lt;/accept_ra_default&gt;&#13;&#10; &lt;rps_needed type=&quot;Bool&quot;&gt;0&lt;/rps_needed&gt;&#13;&#10; &lt;delayed_acks_segments type=&quot;Int&quot;&gt;0&lt;/delayed_acks_segments&gt;&#13;&#10; &lt;delayed_acks_timeout type=&quot;Int&quot;&gt;0&lt;/delayed_acks_timeout&gt;&#13;&#10; &lt;tcp_large_icwnd type=&quot;Int&quot;&gt;0&lt;/tcp_large_icwnd&gt;&#13;&#10; &lt;tcp_mgmt_rmem type=&quot;Int&quot;&gt;87380&lt;/tcp_mgmt_rmem&gt;&#13;&#10; &lt;tcp_mgmt_wmem type=&quot;Int&quot;&gt;32768&lt;/tcp_mgmt_wmem&gt;&#13;&#10; &lt;adjust_tcp_buffers type=&quot;Bool&quot;&gt;1&lt;/adjust_tcp_buffers&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;TCP-1&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;3&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.TCPPlugin&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.DnsPlugin type=&quot;Ixia.Aptixia.StackManager.DnsPlugin&quot; objectid=&quot;9cc60113-3e53-4cf2-b3b7-6fd7d3953bb4&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;domain type=&quot;String&quot; /&gt;&#13;&#10; &lt;timeout type=&quot;Int&quot;&gt;30&lt;/timeout&gt;&#13;&#10; &lt;nameServerList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;searchList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;hostList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;DNS-1&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;4&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.DnsPlugin&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.IxLoadSettingsPlugin type=&quot;Ixia.Aptixia.StackManager.IxLoadSettingsPlugin&quot; objectid=&quot;399db714-47a8-445d-a24b-90d00d3f2e9e&quot; version=&quot;1.0.0&quot;&gt;&#13;&#10; &lt;teardownInterfaceWithUser type=&quot;Bool&quot;&gt;0&lt;/teardownInterfaceWithUser&gt;&#13;&#10; &lt;interfaceBehavior type=&quot;Int&quot;&gt;0&lt;/interfaceBehavior&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;Settings-1&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;5&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.IxLoadSettingsPlugin&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.MeshingPlugin type=&quot;Ixia.Aptixia.StackManager.MeshingPlugin&quot; objectid=&quot;39d2a556-cf85-4102-8461-b1f1413b2db5&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;trafficMaps type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.MeshingTrafficMap type=&quot;Ixia.Aptixia.StackManager.MeshingTrafficMap&quot; objectid=&quot;cdca1e00-77a3-49ef-8fe5-afb321a51af2&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;CALLING!VoIP2_CALLED#{{sipportcalled}}&lt;/name&gt;&#13;&#10; &lt;configMapFilename type=&quot;String&quot;&gt;CALLINGScript.configmap&lt;/configMapFilename&gt;&#13;&#10; &lt;sourceActivityId type=&quot;Int&quot;&gt;1&lt;/sourceActivityId&gt;&#13;&#10; &lt;ipPreference type=&quot;Ixia.Aptixia.StackManager.MeshingTrafficMapSkeleton+eIpPreference&quot;&gt;0&lt;/ipPreference&gt;&#13;&#10; &lt;portRangesString type=&quot;String&quot;&gt;{{sipportcalled}}&lt;/portRangesString&gt;&#13;&#10; &lt;meshingType type=&quot;Ixia.Aptixia.StackManager.MeshingTrafficMapSkeleton+eMeshingType&quot;&gt;2&lt;/meshingType&gt;&#13;&#10; &lt;destinationActivityId type=&quot;Int&quot;&gt;0&lt;/destinationActivityId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.MeshingTrafficMap&gt;&#13;&#10; &lt;/trafficMaps&gt;&#13;&#10; &lt;activityRangeMapInfoList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;Meshing-1&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;11&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.MeshingPlugin&gt;&#13;&#10; &lt;/globalPluginList&gt;&#13;&#10; &lt;portList type=&quot;Ixia.RpFramework.Server.Core.ShadowedPropertyStringList&quot;&gt;&#13;&#10; &lt;String&gt;{{ipchassis}};1;1&lt;/String&gt;&#13;&#10; &lt;/portList&gt;&#13;&#10; &lt;typeSpecificData type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.IPSecPortGroupData type=&quot;Ixia.Aptixia.StackManager.IPSecPortGroupData&quot; objectid=&quot;62e57abd-b4c6-45af-a720-7033259c203c&quot; version=&quot;6.70.0&quot;&gt;&#13;&#10; &lt;role type=&quot;String&quot;&gt;Initiator&lt;/role&gt;&#13;&#10; &lt;associates type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;overrideGlobalOptions type=&quot;Bool&quot;&gt;0&lt;/overrideGlobalOptions&gt;&#13;&#10; &lt;useMaxInitiationRate type=&quot;Bool&quot;&gt;0&lt;/useMaxInitiationRate&gt;&#13;&#10; &lt;maxInitiationRate type=&quot;Int&quot;&gt;50&lt;/maxInitiationRate&gt;&#13;&#10; &lt;useMaxPendingTunnels type=&quot;Bool&quot;&gt;0&lt;/useMaxPendingTunnels&gt;&#13;&#10; &lt;maxPendingTunnels type=&quot;Int&quot;&gt;50&lt;/maxPendingTunnels&gt;&#13;&#10; &lt;teardownRate type=&quot;Int&quot;&gt;10&lt;/teardownRate&gt;&#13;&#10; &lt;enableESPPerStreamStats type=&quot;Bool&quot;&gt;0&lt;/enableESPPerStreamStats&gt;&#13;&#10; &lt;enableESPReplayStats type=&quot;Bool&quot;&gt;0&lt;/enableESPReplayStats&gt;&#13;&#10; &lt;activities type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;pcpuLogLevel type=&quot;String&quot;&gt;0&lt;/pcpuLogLevel&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;3&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.IPSecPortGroupData&gt;&#13;&#10; &lt;/typeSpecificData&gt;&#13;&#10; &lt;virtualMode type=&quot;Bool&quot;&gt;0&lt;/virtualMode&gt;&#13;&#10; &lt;allowedVirtualModeTypes type=&quot;Ixia.RpFramework.Server.Core.ShadowedPropertyStringList&quot; /&gt;&#13;&#10; &lt;doOwnership type=&quot;Bool&quot;&gt;0&lt;/doOwnership&gt;&#13;&#10; &lt;branchToNicMap type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;cpuAggregation type=&quot;Bool&quot;&gt;0&lt;/cpuAggregation&gt;&#13;&#10; &lt;activePort type=&quot;String&quot; /&gt;&#13;&#10; &lt;networkLayersManager type=&quot;Ixia.Aptixia.StackManager.NetworkLayersManager&quot; objectid=&quot;f7999b28-d3d6-4a69-bd61-ab5516b7c540&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;3&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/networkLayersManager&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;1&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.PortGroup&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.PortGroup type=&quot;Ixia.Aptixia.StackManager.PortGroup&quot; objectid=&quot;b1fbd381-b769-4ec1-8715-299508ecb458&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;VM2&lt;/name&gt;&#13;&#10; &lt;category type=&quot;String&quot; /&gt;&#13;&#10; &lt;stack type=&quot;Ixia.Aptixia.StackManager.L1EthernetPlugin&quot; objectid=&quot;48f486a6-f09b-4770-a091-e9ce609e9bec&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;autoNegotiate type=&quot;Bool&quot;&gt;1&lt;/autoNegotiate&gt;&#13;&#10; &lt;speed type=&quot;String&quot;&gt;k100FD&lt;/speed&gt;&#13;&#10; &lt;advertise10Half type=&quot;Bool&quot;&gt;1&lt;/advertise10Half&gt;&#13;&#10; &lt;advertise10Full type=&quot;Bool&quot;&gt;1&lt;/advertise10Full&gt;&#13;&#10; &lt;advertise100Half type=&quot;Bool&quot;&gt;1&lt;/advertise100Half&gt;&#13;&#10; &lt;advertise100Full type=&quot;Bool&quot;&gt;1&lt;/advertise100Full&gt;&#13;&#10; &lt;advertise1000Full type=&quot;Bool&quot;&gt;1&lt;/advertise1000Full&gt;&#13;&#10; &lt;advertise2500Full type=&quot;Bool&quot;&gt;1&lt;/advertise2500Full&gt;&#13;&#10; &lt;advertise5000Full type=&quot;Bool&quot;&gt;1&lt;/advertise5000Full&gt;&#13;&#10; &lt;advertise10000Full type=&quot;Bool&quot;&gt;1&lt;/advertise10000Full&gt;&#13;&#10; &lt;cardDualPhy type=&quot;Ixia.Aptixia.StackManager.DualPhyPlugin&quot; objectid=&quot;c500685a-4fcb-4335-abe0-70c98cf1ba43&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;medium type=&quot;String&quot;&gt;auto&lt;/medium&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;4&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/cardDualPhy&gt;&#13;&#10; &lt;cardElm type=&quot;Ixia.Aptixia.StackManager.EthernetELMPlugin&quot; objectid=&quot;92644bb5-bda6-4072-98f9-47b47e4597c7&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;negotiateMasterSlave type=&quot;Bool&quot;&gt;1&lt;/negotiateMasterSlave&gt;&#13;&#10; &lt;negotiationType type=&quot;String&quot;&gt;master&lt;/negotiationType&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;4&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/cardElm&gt;&#13;&#10; &lt;enableFlowControl type=&quot;Bool&quot;&gt;0&lt;/enableFlowControl&gt;&#13;&#10; &lt;directedAddress type=&quot;String&quot;&gt;01:80:C2:00:00:01&lt;/directedAddress&gt;&#13;&#10; &lt;dataCenter type=&quot;Ixia.Aptixia.StackManager.DataCenterSettings&quot; objectid=&quot;3726f608-97b7-4bf2-b88e-4c0bf13b45a0&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;dcSupported type=&quot;Bool&quot;&gt;1&lt;/dcSupported&gt;&#13;&#10; &lt;dcEnabled type=&quot;Bool&quot;&gt;0&lt;/dcEnabled&gt;&#13;&#10; &lt;dcFlowControl type=&quot;Ixia.Aptixia.StackManager.DataCenterSettingsSkeleton+eFlowControlType&quot;&gt;0&lt;/dcFlowControl&gt;&#13;&#10; &lt;dcMode type=&quot;Ixia.Aptixia.StackManager.DataCenterSettingsSkeleton+eDataCenterMode&quot;&gt;2&lt;/dcMode&gt;&#13;&#10; &lt;dcPfcMapping type=&quot;IntList&quot; /&gt;&#13;&#10; &lt;dcPfcPauseEnable type=&quot;Bool&quot;&gt;0&lt;/dcPfcPauseEnable&gt;&#13;&#10; &lt;dcPfcPauseDelay type=&quot;Int&quot;&gt;1&lt;/dcPfcPauseDelay&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;4&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/dataCenter&gt;&#13;&#10; &lt;childrenList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.L2EthernetPlugin type=&quot;Ixia.Aptixia.StackManager.L2EthernetPlugin&quot; objectid=&quot;820b0582-6a4c-4109-bd5d-587621a43ce2&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;macRangeList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.MacRange type=&quot;Ixia.Aptixia.StackManager.MacRange&quot; objectid=&quot;aa73bd95-9ffb-411e-8ab3-8a128767aacb&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;enabled type=&quot;Bool&quot;&gt;1&lt;/enabled&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;MAC-R2&lt;/name&gt;&#13;&#10; &lt;mac type=&quot;String&quot;&gt;00:0A:43:4F:2A:00&lt;/mac&gt;&#13;&#10; &lt;incrementBy type=&quot;String&quot;&gt;00:00:00:00:00:01&lt;/incrementBy&gt;&#13;&#10; &lt;mtu type=&quot;Int&quot;&gt;1410&lt;/mtu&gt;&#13;&#10; &lt;count type=&quot;Int&quot;&gt;1&lt;/count&gt;&#13;&#10; &lt;vlanRange type=&quot;Ixia.Aptixia.StackManager.VlanIdRange&quot; objectid=&quot;7024f4b3-1a75-491a-8da1-17a45a15d5cc&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;VLAN-R2&lt;/name&gt;&#13;&#10; &lt;enabled type=&quot;Bool&quot;&gt;0&lt;/enabled&gt;&#13;&#10; &lt;firstId type=&quot;Int&quot;&gt;1&lt;/firstId&gt;&#13;&#10; &lt;incrementStep type=&quot;Int&quot;&gt;1&lt;/incrementStep&gt;&#13;&#10; &lt;increment type=&quot;Int&quot;&gt;1&lt;/increment&gt;&#13;&#10; &lt;uniqueCount type=&quot;Int&quot;&gt;4094&lt;/uniqueCount&gt;&#13;&#10; &lt;priority type=&quot;Int&quot;&gt;1&lt;/priority&gt;&#13;&#10; &lt;tpid type=&quot;String&quot;&gt;0x8100&lt;/tpid&gt;&#13;&#10; &lt;innerEnable type=&quot;Bool&quot;&gt;0&lt;/innerEnable&gt;&#13;&#10; &lt;innerFirstId type=&quot;Int&quot;&gt;1&lt;/innerFirstId&gt;&#13;&#10; &lt;innerIncrementStep type=&quot;Int&quot;&gt;1&lt;/innerIncrementStep&gt;&#13;&#10; &lt;innerIncrement type=&quot;Int&quot;&gt;1&lt;/innerIncrement&gt;&#13;&#10; &lt;innerUniqueCount type=&quot;Int&quot;&gt;4094&lt;/innerUniqueCount&gt;&#13;&#10; &lt;innerPriority type=&quot;Int&quot;&gt;1&lt;/innerPriority&gt;&#13;&#10; &lt;idIncrMode type=&quot;Int&quot;&gt;2&lt;/idIncrMode&gt;&#13;&#10; &lt;innerTpid type=&quot;String&quot;&gt;0x8100&lt;/innerTpid&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;2&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/vlanRange&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;2&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.MacRange&gt;&#13;&#10; &lt;/macRangeList&gt;&#13;&#10; &lt;vlanRangeList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.VlanIdRange type=&quot;Ixia.Aptixia.StackManager.VlanIdRange&quot; objectid=&quot;7024f4b3-1a75-491a-8da1-17a45a15d5cc&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;/vlanRangeList&gt;&#13;&#10; &lt;childrenList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.IpV4V6Plugin type=&quot;Ixia.Aptixia.StackManager.IpV4V6Plugin&quot; objectid=&quot;e53ae54e-ab21-4997-b532-e9bd58210050&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;rangeList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.IpV4V6Range type=&quot;Ixia.Aptixia.StackManager.IpV4V6Range&quot; objectid=&quot;c69dae97-f1c2-4505-aedb-3f9ca3f4d02a&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;enabled type=&quot;Bool&quot;&gt;1&lt;/enabled&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;IP-R2&lt;/name&gt;&#13;&#10; &lt;ipType type=&quot;String&quot;&gt;IPv4&lt;/ipType&gt;&#13;&#10; &lt;ipAddress type=&quot;String&quot;&gt;{{ipcard2}}&lt;/ipAddress&gt;&#13;&#10; &lt;prefix type=&quot;Int&quot;&gt;16&lt;/prefix&gt;&#13;&#10; &lt;incrementBy type=&quot;String&quot;&gt;0.0.0.1&lt;/incrementBy&gt;&#13;&#10; &lt;count type=&quot;Int&quot;&gt;1&lt;/count&gt;&#13;&#10; &lt;autoCountEnabled type=&quot;Bool&quot;&gt;0&lt;/autoCountEnabled&gt;&#13;&#10; &lt;gatewayAddress type=&quot;String&quot;&gt;{{ipgw}}&lt;/gatewayAddress&gt;&#13;&#10; &lt;gatewayIncrement type=&quot;String&quot;&gt;0.0.0.0&lt;/gatewayIncrement&gt;&#13;&#10; &lt;gatewayIncrementMode type=&quot;String&quot;&gt;perSubnet&lt;/gatewayIncrementMode&gt;&#13;&#10; &lt;enableGatewayArp type=&quot;Bool&quot;&gt;0&lt;/enableGatewayArp&gt;&#13;&#10; &lt;generateStatistics type=&quot;Bool&quot;&gt;0&lt;/generateStatistics&gt;&#13;&#10; &lt;mss type=&quot;Int&quot;&gt;1410&lt;/mss&gt;&#13;&#10; &lt;randomizeAddress type=&quot;Bool&quot;&gt;0&lt;/randomizeAddress&gt;&#13;&#10; &lt;randomizeSeed type=&quot;Int&quot;&gt;3534372608&lt;/randomizeSeed&gt;&#13;&#10; &lt;autoMacGeneration type=&quot;Bool&quot;&gt;1&lt;/autoMacGeneration&gt;&#13;&#10; &lt;macRange type=&quot;Ixia.Aptixia.StackManager.MacRange&quot; objectid=&quot;aa73bd95-9ffb-411e-8ab3-8a128767aacb&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;vlanRange type=&quot;Ixia.Aptixia.StackManager.VlanIdRange&quot; objectid=&quot;7024f4b3-1a75-491a-8da1-17a45a15d5cc&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;atmRange type=&quot;Ixia.Aptixia.StackManager.AtmRange&quot; objectid=&quot;00000000-0000-0000-0000-000000000000&quot; /&gt;&#13;&#10; &lt;pvcRange type=&quot;Ixia.Aptixia.StackManager.PvcRange&quot; objectid=&quot;00000000-0000-0000-0000-000000000000&quot; /&gt;&#13;&#10; &lt;autoIpTypeEnabled type=&quot;Bool&quot;&gt;0&lt;/autoIpTypeEnabled&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;2&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.IpV4V6Range&gt;&#13;&#10; &lt;/rangeList&gt;&#13;&#10; &lt;rangeGroups type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.RangeGroup type=&quot;Ixia.Aptixia.StackManager.RangeGroup&quot; objectid=&quot;de9d629b-e0dc-41f5-99cb-5aa8a808ceee&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;DistGroup1&lt;/name&gt;&#13;&#10; &lt;distribType type=&quot;Ixia.Aptixia.StackManager.RangeGroupSkeleton+eDistributionType&quot;&gt;0&lt;/distribType&gt;&#13;&#10; &lt;rangeList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.IpV4V6Range type=&quot;Ixia.Aptixia.StackManager.IpV4V6Range&quot; objectid=&quot;c69dae97-f1c2-4505-aedb-3f9ca3f4d02a&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;/rangeList&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;2&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.RangeGroup&gt;&#13;&#10; &lt;/rangeGroups&gt;&#13;&#10; &lt;childrenList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;extensionList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;dscMode type=&quot;Bool&quot;&gt;0&lt;/dscMode&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;IP-2&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;6&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.IpV4V6Plugin&gt;&#13;&#10; &lt;/childrenList&gt;&#13;&#10; &lt;extensionList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;dscMode type=&quot;Bool&quot;&gt;0&lt;/dscMode&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;MAC/VLAN-2&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;5&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.L2EthernetPlugin&gt;&#13;&#10; &lt;/childrenList&gt;&#13;&#10; &lt;extensionList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;dscMode type=&quot;Bool&quot;&gt;0&lt;/dscMode&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;Ethernet-2&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;4&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/stack&gt;&#13;&#10; &lt;globalPluginList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.IxLoadSettingsPlugin type=&quot;Ixia.Aptixia.StackManager.IxLoadSettingsPlugin&quot; objectid=&quot;26685c48-95e7-4da5-a893-fc527b814b1c&quot; version=&quot;1.0.0&quot;&gt;&#13;&#10; &lt;teardownInterfaceWithUser type=&quot;Bool&quot;&gt;0&lt;/teardownInterfaceWithUser&gt;&#13;&#10; &lt;interfaceBehavior type=&quot;Int&quot;&gt;0&lt;/interfaceBehavior&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;Settings-2&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;7&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.IxLoadSettingsPlugin&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.FilterPlugin type=&quot;Ixia.Aptixia.StackManager.FilterPlugin&quot; objectid=&quot;3f42c205-a9ad-433b-b7af-19ea7ec76940&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;auto type=&quot;Bool&quot;&gt;1&lt;/auto&gt;&#13;&#10; &lt;all type=&quot;Bool&quot;&gt;0&lt;/all&gt;&#13;&#10; &lt;pppoecontrol type=&quot;Bool&quot;&gt;0&lt;/pppoecontrol&gt;&#13;&#10; &lt;pppoenetwork type=&quot;Bool&quot;&gt;0&lt;/pppoenetwork&gt;&#13;&#10; &lt;isis type=&quot;Bool&quot;&gt;0&lt;/isis&gt;&#13;&#10; &lt;ip type=&quot;String&quot; /&gt;&#13;&#10; &lt;tcp type=&quot;String&quot; /&gt;&#13;&#10; &lt;udp type=&quot;String&quot; /&gt;&#13;&#10; &lt;mac type=&quot;String&quot; /&gt;&#13;&#10; &lt;icmp type=&quot;String&quot; /&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;Filter-2&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;8&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.FilterPlugin&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.GratArpPlugin type=&quot;Ixia.Aptixia.StackManager.GratArpPlugin&quot; objectid=&quot;fe43b342-829b-4ff4-8671-49ba1c4441e5&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;enabled type=&quot;Bool&quot;&gt;1&lt;/enabled&gt;&#13;&#10; &lt;forwardGratArp type=&quot;Bool&quot;&gt;0&lt;/forwardGratArp&gt;&#13;&#10; &lt;rateControlEnabled type=&quot;Bool&quot;&gt;0&lt;/rateControlEnabled&gt;&#13;&#10; &lt;maxFramesPerSecond type=&quot;Int&quot;&gt;0&lt;/maxFramesPerSecond&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;GratARP-2&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;9&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.GratArpPlugin&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.TCPPlugin type=&quot;Ixia.Aptixia.StackManager.TCPPlugin&quot; objectid=&quot;57601116-d86b-4c04-856b-2241507a0378&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;bestPerfSettings type=&quot;Bool&quot;&gt;0&lt;/bestPerfSettings&gt;&#13;&#10; &lt;accept_ra_all type=&quot;Bool&quot;&gt;0&lt;/accept_ra_all&gt;&#13;&#10; &lt;tcp_abort_on_overflow type=&quot;Bool&quot;&gt;0&lt;/tcp_abort_on_overflow&gt;&#13;&#10; &lt;tcp_adv_win_scale type=&quot;Int&quot;&gt;2&lt;/tcp_adv_win_scale&gt;&#13;&#10; &lt;tcp_app_win type=&quot;Int&quot;&gt;31&lt;/tcp_app_win&gt;&#13;&#10; &lt;tcp_bic type=&quot;Int&quot;&gt;0&lt;/tcp_bic&gt;&#13;&#10; &lt;tcp_bic_fast_convergence type=&quot;Int&quot;&gt;1&lt;/tcp_bic_fast_convergence&gt;&#13;&#10; &lt;tcp_bic_low_window type=&quot;Int&quot;&gt;14&lt;/tcp_bic_low_window&gt;&#13;&#10; &lt;tcp_dsack type=&quot;Bool&quot;&gt;1&lt;/tcp_dsack&gt;&#13;&#10; &lt;tcp_ecn type=&quot;Bool&quot;&gt;0&lt;/tcp_ecn&gt;&#13;&#10; &lt;tcp_fack type=&quot;Bool&quot;&gt;1&lt;/tcp_fack&gt;&#13;&#10; &lt;tcp_fin_timeout type=&quot;Int&quot;&gt;60&lt;/tcp_fin_timeout&gt;&#13;&#10; &lt;tcp_frto type=&quot;Int&quot;&gt;0&lt;/tcp_frto&gt;&#13;&#10; &lt;tcp_keepalive_intvl type=&quot;Int&quot;&gt;75&lt;/tcp_keepalive_intvl&gt;&#13;&#10; &lt;tcp_keepalive_probes type=&quot;Int&quot;&gt;9&lt;/tcp_keepalive_probes&gt;&#13;&#10; &lt;tcp_keepalive_time type=&quot;Int&quot;&gt;7200&lt;/tcp_keepalive_time&gt;&#13;&#10; &lt;tcp_low_latency type=&quot;Int&quot;&gt;0&lt;/tcp_low_latency&gt;&#13;&#10; &lt;tcp_max_orphans type=&quot;Int&quot;&gt;8192&lt;/tcp_max_orphans&gt;&#13;&#10; &lt;tcp_max_syn_backlog type=&quot;Int&quot;&gt;1024&lt;/tcp_max_syn_backlog&gt;&#13;&#10; &lt;tcp_max_tw_buckets type=&quot;Int&quot;&gt;180000&lt;/tcp_max_tw_buckets&gt;&#13;&#10; &lt;tcp_mem_low type=&quot;Int&quot;&gt;24576&lt;/tcp_mem_low&gt;&#13;&#10; &lt;tcp_mem_pressure type=&quot;Int&quot;&gt;32768&lt;/tcp_mem_pressure&gt;&#13;&#10; &lt;tcp_mem_high type=&quot;Int&quot;&gt;49152&lt;/tcp_mem_high&gt;&#13;&#10; &lt;tcp_moderate_rcvbuf type=&quot;Int&quot;&gt;0&lt;/tcp_moderate_rcvbuf&gt;&#13;&#10; &lt;tcp_no_metrics_save type=&quot;Bool&quot;&gt;0&lt;/tcp_no_metrics_save&gt;&#13;&#10; &lt;tcp_orphan_retries type=&quot;Int&quot;&gt;0&lt;/tcp_orphan_retries&gt;&#13;&#10; &lt;tcp_reordering type=&quot;Int&quot;&gt;3&lt;/tcp_reordering&gt;&#13;&#10; &lt;tcp_retrans_collapse type=&quot;Bool&quot;&gt;1&lt;/tcp_retrans_collapse&gt;&#13;&#10; &lt;tcp_retries1 type=&quot;Int&quot;&gt;3&lt;/tcp_retries1&gt;&#13;&#10; &lt;tcp_retries2 type=&quot;Int&quot;&gt;5&lt;/tcp_retries2&gt;&#13;&#10; &lt;tcp_rfc1337 type=&quot;Bool&quot;&gt;0&lt;/tcp_rfc1337&gt;&#13;&#10; &lt;tcp_rmem_min type=&quot;Int&quot;&gt;4096&lt;/tcp_rmem_min&gt;&#13;&#10; &lt;tcp_rmem_default type=&quot;Int&quot;&gt;4096&lt;/tcp_rmem_default&gt;&#13;&#10; &lt;tcp_rmem_max type=&quot;Int&quot;&gt;262144&lt;/tcp_rmem_max&gt;&#13;&#10; &lt;tcp_sack type=&quot;Bool&quot;&gt;1&lt;/tcp_sack&gt;&#13;&#10; &lt;tcp_stdurg type=&quot;Bool&quot;&gt;0&lt;/tcp_stdurg&gt;&#13;&#10; &lt;tcp_synack_retries type=&quot;Int&quot;&gt;5&lt;/tcp_synack_retries&gt;&#13;&#10; &lt;tcp_syn_retries type=&quot;Int&quot;&gt;5&lt;/tcp_syn_retries&gt;&#13;&#10; &lt;tcp_timestamps type=&quot;Bool&quot;&gt;1&lt;/tcp_timestamps&gt;&#13;&#10; &lt;tcp_tw_recycle type=&quot;Bool&quot;&gt;1&lt;/tcp_tw_recycle&gt;&#13;&#10; &lt;tcp_tw_reuse type=&quot;Bool&quot;&gt;0&lt;/tcp_tw_reuse&gt;&#13;&#10; &lt;tcp_vegas_alpha type=&quot;Int&quot;&gt;2&lt;/tcp_vegas_alpha&gt;&#13;&#10; &lt;tcp_vegas_beta type=&quot;Int&quot;&gt;6&lt;/tcp_vegas_beta&gt;&#13;&#10; &lt;tcp_vegas_cong_avoid type=&quot;Int&quot;&gt;0&lt;/tcp_vegas_cong_avoid&gt;&#13;&#10; &lt;tcp_vegas_gamma type=&quot;Int&quot;&gt;2&lt;/tcp_vegas_gamma&gt;&#13;&#10; &lt;tcp_westwood type=&quot;Int&quot;&gt;0&lt;/tcp_westwood&gt;&#13;&#10; &lt;tcp_window_scaling type=&quot;Bool&quot;&gt;0&lt;/tcp_window_scaling&gt;&#13;&#10; &lt;ip_no_pmtu_disc type=&quot;Bool&quot;&gt;1&lt;/ip_no_pmtu_disc&gt;&#13;&#10; &lt;tcp_wmem_min type=&quot;Int&quot;&gt;4096&lt;/tcp_wmem_min&gt;&#13;&#10; &lt;tcp_wmem_default type=&quot;Int&quot;&gt;4096&lt;/tcp_wmem_default&gt;&#13;&#10; &lt;tcp_wmem_max type=&quot;Int&quot;&gt;262144&lt;/tcp_wmem_max&gt;&#13;&#10; &lt;tcp_ipfrag_time type=&quot;Int&quot;&gt;30&lt;/tcp_ipfrag_time&gt;&#13;&#10; &lt;tcp_port_min type=&quot;Int&quot;&gt;1024&lt;/tcp_port_min&gt;&#13;&#10; &lt;tcp_port_max type=&quot;Int&quot;&gt;65535&lt;/tcp_port_max&gt;&#13;&#10; &lt;tcp_rto_min type=&quot;Int&quot;&gt;200&lt;/tcp_rto_min&gt;&#13;&#10; &lt;tcp_rto_max type=&quot;Int&quot;&gt;120000&lt;/tcp_rto_max&gt;&#13;&#10; &lt;tcp_tw_rfc1323_strict type=&quot;Bool&quot;&gt;0&lt;/tcp_tw_rfc1323_strict&gt;&#13;&#10; &lt;udp_port_randomization type=&quot;Bool&quot;&gt;0&lt;/udp_port_randomization&gt;&#13;&#10; &lt;disable_min_max_buffer_size type=&quot;Bool&quot;&gt;1&lt;/disable_min_max_buffer_size&gt;&#13;&#10; &lt;llm_hdr_gap type=&quot;Int&quot;&gt;8&lt;/llm_hdr_gap&gt;&#13;&#10; &lt;llm_hdr_gap_ns type=&quot;Int&quot;&gt;10&lt;/llm_hdr_gap_ns&gt;&#13;&#10; &lt;inter_packet_granular_delay type=&quot;Double&quot;&gt;0&lt;/inter_packet_granular_delay&gt;&#13;&#10; &lt;delayed_acks type=&quot;Bool&quot;&gt;1&lt;/delayed_acks&gt;&#13;&#10; &lt;accept_ra_default type=&quot;Bool&quot;&gt;0&lt;/accept_ra_default&gt;&#13;&#10; &lt;rps_needed type=&quot;Bool&quot;&gt;0&lt;/rps_needed&gt;&#13;&#10; &lt;delayed_acks_segments type=&quot;Int&quot;&gt;0&lt;/delayed_acks_segments&gt;&#13;&#10; &lt;delayed_acks_timeout type=&quot;Int&quot;&gt;0&lt;/delayed_acks_timeout&gt;&#13;&#10; &lt;tcp_large_icwnd type=&quot;Int&quot;&gt;0&lt;/tcp_large_icwnd&gt;&#13;&#10; &lt;tcp_mgmt_rmem type=&quot;Int&quot;&gt;87380&lt;/tcp_mgmt_rmem&gt;&#13;&#10; &lt;tcp_mgmt_wmem type=&quot;Int&quot;&gt;32768&lt;/tcp_mgmt_wmem&gt;&#13;&#10; &lt;adjust_tcp_buffers type=&quot;Bool&quot;&gt;1&lt;/adjust_tcp_buffers&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;TCP-2&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;10&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.TCPPlugin&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.DnsPlugin type=&quot;Ixia.Aptixia.StackManager.DnsPlugin&quot; objectid=&quot;7682d113-cd50-4cc6-b23a-569c29f03886&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;domain type=&quot;String&quot; /&gt;&#13;&#10; &lt;timeout type=&quot;Int&quot;&gt;30&lt;/timeout&gt;&#13;&#10; &lt;nameServerList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;searchList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;hostList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;DNS-2&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;12&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.DnsPlugin&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.MeshingPlugin type=&quot;Ixia.Aptixia.StackManager.MeshingPlugin&quot; objectid=&quot;f5f1e4c2-eef8-4a34-ac13-e1e3eeb5328b&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;trafficMaps type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;activityRangeMapInfoList type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;name type=&quot;String&quot;&gt;Meshing-2&lt;/name&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;13&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.MeshingPlugin&gt;&#13;&#10; &lt;/globalPluginList&gt;&#13;&#10; &lt;portList type=&quot;Ixia.RpFramework.Server.Core.ShadowedPropertyStringList&quot;&gt;&#13;&#10; &lt;String&gt;{{ipchassis}};2;1&lt;/String&gt;&#13;&#10; &lt;/portList&gt;&#13;&#10; &lt;typeSpecificData type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.IPSecPortGroupData type=&quot;Ixia.Aptixia.StackManager.IPSecPortGroupData&quot; objectid=&quot;c279f05c-d2a7-476d-b4af-9c8ff0d878dd&quot; version=&quot;6.70.0&quot;&gt;&#13;&#10; &lt;role type=&quot;String&quot;&gt;Initiator&lt;/role&gt;&#13;&#10; &lt;associates type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;overrideGlobalOptions type=&quot;Bool&quot;&gt;0&lt;/overrideGlobalOptions&gt;&#13;&#10; &lt;useMaxInitiationRate type=&quot;Bool&quot;&gt;0&lt;/useMaxInitiationRate&gt;&#13;&#10; &lt;maxInitiationRate type=&quot;Int&quot;&gt;50&lt;/maxInitiationRate&gt;&#13;&#10; &lt;useMaxPendingTunnels type=&quot;Bool&quot;&gt;0&lt;/useMaxPendingTunnels&gt;&#13;&#10; &lt;maxPendingTunnels type=&quot;Int&quot;&gt;50&lt;/maxPendingTunnels&gt;&#13;&#10; &lt;teardownRate type=&quot;Int&quot;&gt;10&lt;/teardownRate&gt;&#13;&#10; &lt;enableESPPerStreamStats type=&quot;Bool&quot;&gt;0&lt;/enableESPPerStreamStats&gt;&#13;&#10; &lt;enableESPReplayStats type=&quot;Bool&quot;&gt;0&lt;/enableESPReplayStats&gt;&#13;&#10; &lt;activities type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;pcpuLogLevel type=&quot;String&quot;&gt;0&lt;/pcpuLogLevel&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;2&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.IPSecPortGroupData&gt;&#13;&#10; &lt;/typeSpecificData&gt;&#13;&#10; &lt;virtualMode type=&quot;Bool&quot;&gt;0&lt;/virtualMode&gt;&#13;&#10; &lt;allowedVirtualModeTypes type=&quot;Ixia.RpFramework.Server.Core.ShadowedPropertyStringList&quot; /&gt;&#13;&#10; &lt;doOwnership type=&quot;Bool&quot;&gt;0&lt;/doOwnership&gt;&#13;&#10; &lt;branchToNicMap type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;cpuAggregation type=&quot;Bool&quot;&gt;0&lt;/cpuAggregation&gt;&#13;&#10; &lt;activePort type=&quot;String&quot; /&gt;&#13;&#10; &lt;networkLayersManager type=&quot;Ixia.Aptixia.StackManager.NetworkLayersManager&quot; objectid=&quot;d581a4e6-0e4b-4692-a0e2-12fd25d7db35&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;4&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/networkLayersManager&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;2&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.PortGroup&gt;&#13;&#10; &lt;/portGroupList&gt;&#13;&#10; &lt;externalProperties type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyManager&quot; objectid=&quot;0c7c98dd-4e41-4fb8-adb7-918848d0ba3e&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;properties type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;c7be9c3b-0335-4cf6-bbcb-d9a90d6b78a0&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;DHCPRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;d63defc3-039a-4af6-b0f6-19be5481d6bb&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;MobileSubscribersRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;d62b40dc-41c2-48b0-b3a6-4aa74e171a8c&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;DHCPServerRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;45eba56d-c42f-4bbf-830b-1f102bf83c92&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;EGTPUERange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;a9e91079-1215-444b-a0a0-59f8ff4e7746&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;GTPGRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;b91778ea-dac5-499a-8c54-b8ba0c78b44b&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;EGTPRange_SGW&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;13f113b2-8ce8-4742-ac72-f8ee04caa5d6&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;GTPSUERange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;f2723794-57ce-471c-b3ae-10cd5ee235a2&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;IpV4V6Range&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;3e8d5274-5483-41ca-8f4d-b1fce291dad1&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;PppoxRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;85b44e1f-0689-4feb-a14d-b43a1b837c1d&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;L2tpRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;c0383f23-e15f-4a97-bbf8-6ade8f6f2b0c&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;IxCatLTEUEUeRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;5912723b-fb9a-4e0a-bae4-38730c73cc0e&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;SixRdRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;9a6cb101-a624-4978-8d0c-85c5b6c26906&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;EGTPSgsnS3RangeUe&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;4f85b4a9-d55e-494e-beb6-5ef5b5d04cf8&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;EmulatedRouterRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;489dbc18-55b5-4902-99ab-9a289a8c2e2b&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;GTPNGAPRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;2992f902-204b-4050-8798-0b24ee090922&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;IxCatRNCIuPSUeRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;8b53f68d-6027-4150-9ca3-5a62606526bd&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;GTPNGUERange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;e85d740f-87a2-473a-a133-e08d5bb48ed2&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;EGTPUERange_S5S8_SGW&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;5a179c3f-82db-44b3-95fc-6e4dbfe17556&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;EGTPPcrfRange_S5S8_PGW&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;55d890fe-0faa-41bd-9fca-12463fd14b3d&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;DSLiteRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;8dc83b0a-45a9-46b7-9b52-731eb114d315&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;EGTPSGSNRangeUe&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;a0883ed3-63b7-47cb-ab77-7ceebb8212e1&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;SlaacRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;7bb58c6e-377f-46be-a2b1-7d86997b2fa1&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;AtmRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;8a4c92be-449a-4f0e-bcf3-55fdfcc369cc&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;IxCatMMEApnRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;588aea0d-748b-4b82-9418-4f3a35185d2e&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;IxCatENodeBUuApnRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;9046358f-dde4-4f17-b596-5903079d3bcf&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;MacRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;a28df47f-783e-4bc9-aa22-78636ceaf1b7&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;DualStackIPRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;19deb9c9-8aef-41e2-8b8b-f01a8b274266&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;EGTPUERange_S2a_TWAN&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;6abb9650-bc55-4e9e-9dfc-81964310e662&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;IxCatSGSNIuPSApnRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;35dc8f8d-44fd-4c73-9771-6c62bd227435&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;IxCatENodeBSimUeRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;3c48b615-2c03-4c1b-8712-e83f63841d13&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;S6dRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;cd5080c1-8de4-4eb3-985a-3e9fe38ebed4&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;UERangeBase&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;24c2c3a6-f9fd-4b8e-bc9f-aeeac63bae01&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;EGTPMmeS10RangeUe&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;529a2786-eb8c-40cb-80b9-83415888012c&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;S6aRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;6593d153-2b87-4171-a8bf-8ae2b1907487&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;PptpRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;819a5c99-14bf-4efb-912a-5d2c985e97d1&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;BmScRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;83ff7bd6-95cf-4d75-91e4-3e2a9f5f6b7d&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;MBmsGwRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalPropertyInfo type=&quot;Ixia.Aptixia.StackManager.ExternalPropertyInfo&quot; objectid=&quot;022d8e72-36c8-4117-b901-baffb9d0805c&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;targetType type=&quot;String&quot;&gt;EGTPPMIPHostRange&lt;/targetType&gt;&#13;&#10; &lt;valueType type=&quot;String&quot;&gt;ExternalValueBoolean&lt;/valueType&gt;&#13;&#10; &lt;description type=&quot;String&quot;&gt;Enable collection of interface statistics on this range&lt;/description&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalPropertyInfo&gt;&#13;&#10; &lt;/properties&gt;&#13;&#10; &lt;values type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalProperty type=&quot;Ixia.Aptixia.StackManager.ExternalProperty&quot; objectid=&quot;57badb9d-afb8-4c05-9182-df7469457e4c&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;target type=&quot;Ixia.Aptixia.StackManager.IpV4V6Range&quot; objectid=&quot;5affc0a7-68f6-46f6-b801-0e18e067a572&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;value type=&quot;Ixia.Aptixia.StackManager.ExternalValueBoolean&quot; objectid=&quot;1efc6993-1480-469a-a6af-38b4093fb102&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;value type=&quot;Bool&quot;&gt;0&lt;/value&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;13&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/value&gt;&#13;&#10; &lt;enabled type=&quot;Bool&quot;&gt;1&lt;/enabled&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;13&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalProperty&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalProperty type=&quot;Ixia.Aptixia.StackManager.ExternalProperty&quot; objectid=&quot;22a742ae-d9bd-4548-83f1-84da6cc07c5f&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;target type=&quot;Ixia.Aptixia.StackManager.IpV4V6Range&quot; objectid=&quot;c69dae97-f1c2-4505-aedb-3f9ca3f4d02a&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;value type=&quot;Ixia.Aptixia.StackManager.ExternalValueBoolean&quot; objectid=&quot;b664f3f9-4f42-48c1-a481-75ba76740055&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;value type=&quot;Bool&quot;&gt;0&lt;/value&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;2&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/value&gt;&#13;&#10; &lt;enabled type=&quot;Bool&quot;&gt;1&lt;/enabled&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;2&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalProperty&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalProperty type=&quot;Ixia.Aptixia.StackManager.ExternalProperty&quot; objectid=&quot;77dd061e-b592-4d9e-9c38-24a46fec1121&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;target type=&quot;Ixia.Aptixia.StackManager.MacRange&quot; objectid=&quot;aa73bd95-9ffb-411e-8ab3-8a128767aacb&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;value type=&quot;Ixia.Aptixia.StackManager.ExternalValueBoolean&quot; objectid=&quot;b5f138be-a18b-46a3-b3f8-c90fa5711597&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;value type=&quot;Bool&quot;&gt;0&lt;/value&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;3&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/value&gt;&#13;&#10; &lt;enabled type=&quot;Bool&quot;&gt;0&lt;/enabled&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;3&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalProperty&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.ExternalProperty type=&quot;Ixia.Aptixia.StackManager.ExternalProperty&quot; objectid=&quot;6dc25ae2-da26-4df6-8a25-cf296dd9430b&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;propertyName type=&quot;String&quot;&gt;Publish Statistics&lt;/propertyName&gt;&#13;&#10; &lt;target type=&quot;Ixia.Aptixia.StackManager.MacRange&quot; objectid=&quot;ba896971-1d78-4e03-8f2a-28c65417612e&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;value type=&quot;Ixia.Aptixia.StackManager.ExternalValueBoolean&quot; objectid=&quot;0858fb9d-2304-44d4-b413-569815c8b6a7&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;value type=&quot;Bool&quot;&gt;0&lt;/value&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;4&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/value&gt;&#13;&#10; &lt;enabled type=&quot;Bool&quot;&gt;0&lt;/enabled&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;4&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.ExternalProperty&gt;&#13;&#10; &lt;/values&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;1&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/externalProperties&gt;&#13;&#10; &lt;availableNetworkTimelines type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;typeSpecificData type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.IxLoadSessionData type=&quot;Ixia.Aptixia.StackManager.IxLoadSessionData&quot; objectid=&quot;149d16d7-c594-4866-917f-fe1b44fac83f&quot; version=&quot;1.0.0&quot;&gt;&#13;&#10; &lt;portGroupList type=&quot;ListNode&quot;&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.PortGroup type=&quot;Ixia.Aptixia.StackManager.PortGroup&quot; objectid=&quot;b1fbd381-b769-4ec1-8715-299508ecb458&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.PortGroup type=&quot;Ixia.Aptixia.StackManager.PortGroup&quot; objectid=&quot;e7fa1f9e-23d9-4742-96b2-6edce6c4424e&quot; version=&quot;6.70.420&quot; /&gt;&#13;&#10; &lt;/portGroupList&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;1&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.IxLoadSessionData&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.MacSessionData type=&quot;Ixia.Aptixia.StackManager.MacSessionData&quot; objectid=&quot;7869d347-cce4-4cd3-9eed-88a3914ae956&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;duplicateCheckingScope type=&quot;Ixia.Aptixia.StackManager.MacSessionDataSkeleton+eMacValidationOptions&quot;&gt;2&lt;/duplicateCheckingScope&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;3&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.MacSessionData&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.IpSessionData type=&quot;Ixia.Aptixia.StackManager.IpSessionData&quot; objectid=&quot;93416b84-eb4a-4637-ab56-4a4de6250c3b&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;duplicateCheckingScope type=&quot;Ixia.Aptixia.StackManager.IpSessionDataSkeleton+eIpValidationOptions&quot;&gt;2&lt;/duplicateCheckingScope&gt;&#13;&#10; &lt;enableGatewayArp type=&quot;Bool&quot;&gt;0&lt;/enableGatewayArp&gt;&#13;&#10; &lt;gatewayArpRequestRate type=&quot;Int&quot;&gt;300&lt;/gatewayArpRequestRate&gt;&#13;&#10; &lt;maxOutstandingGatewayArpRequests type=&quot;Int&quot;&gt;300&lt;/maxOutstandingGatewayArpRequests&gt;&#13;&#10; &lt;ignoreUnresolvedIPs type=&quot;Bool&quot;&gt;0&lt;/ignoreUnresolvedIPs&gt;&#13;&#10; &lt;sendAllRequests type=&quot;Bool&quot;&gt;0&lt;/sendAllRequests&gt;&#13;&#10; &lt;individualARPTimeOut type=&quot;Int&quot;&gt;500&lt;/individualARPTimeOut&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;4&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.IpSessionData&gt;&#13;&#10; &lt;Ixia.Aptixia.StackManager.IPSecSessionData type=&quot;Ixia.Aptixia.StackManager.IPSecSessionData&quot; objectid=&quot;8611fd36-7f8c-48bc-ac46-f6e2f0816cb5&quot; version=&quot;6.70.0&quot;&gt;&#13;&#10; &lt;ipsecTunnelSetup type=&quot;Ixia.Aptixia.StackManager.IPSecTunnelSetup&quot; objectid=&quot;e08e1671-e189-4cba-8894-5dda9b24701a&quot; version=&quot;6.70.0&quot;&gt;&#13;&#10; &lt;tunnelSetupTimeout type=&quot;Int&quot;&gt;30&lt;/tunnelSetupTimeout&gt;&#13;&#10; &lt;tunnelRetransmissionTimeout type=&quot;Int&quot;&gt;30&lt;/tunnelRetransmissionTimeout&gt;&#13;&#10; &lt;numRetries type=&quot;Int&quot;&gt;0&lt;/numRetries&gt;&#13;&#10; &lt;retryInterval type=&quot;Int&quot;&gt;10&lt;/retryInterval&gt;&#13;&#10; &lt;retryDelay type=&quot;Int&quot;&gt;10&lt;/retryDelay&gt;&#13;&#10; &lt;testType type=&quot;String&quot;&gt;P2D&lt;/testType&gt;&#13;&#10; &lt;logLevel type=&quot;String&quot;&gt;3&lt;/logLevel&gt;&#13;&#10; &lt;sendCiscoVid type=&quot;Bool&quot;&gt;0&lt;/sendCiscoVid&gt;&#13;&#10; &lt;useMaxInitiationRate type=&quot;Bool&quot;&gt;0&lt;/useMaxInitiationRate&gt;&#13;&#10; &lt;useMaxPendingTunnels type=&quot;Bool&quot;&gt;0&lt;/useMaxPendingTunnels&gt;&#13;&#10; &lt;enableRekey type=&quot;Bool&quot;&gt;1&lt;/enableRekey&gt;&#13;&#10; &lt;rekeyRetries type=&quot;Int&quot;&gt;3&lt;/rekeyRetries&gt;&#13;&#10; &lt;rekeyFuzzPercentage type=&quot;Int&quot;&gt;0&lt;/rekeyFuzzPercentage&gt;&#13;&#10; &lt;rekeyMargin type=&quot;Int&quot;&gt;10&lt;/rekeyMargin&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;7&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/ipsecTunnelSetup&gt;&#13;&#10; &lt;ipsecCertificates type=&quot;Ixia.Aptixia.StackManager.IPSecCertificates&quot; objectid=&quot;b53c8c74-6c81-4e4a-84cb-5beb05b38343&quot; version=&quot;6.70.0&quot;&gt;&#13;&#10; &lt;uniqueCert type=&quot;Bool&quot;&gt;0&lt;/uniqueCert&gt;&#13;&#10; &lt;certSource type=&quot;String&quot;&gt;kNewCert&lt;/certSource&gt;&#13;&#10; &lt;caURL type=&quot;String&quot; /&gt;&#13;&#10; &lt;caDN type=&quot;String&quot; /&gt;&#13;&#10; &lt;certSubjectDN type=&quot;String&quot; /&gt;&#13;&#10; &lt;certSubjectAltDN type=&quot;String&quot; /&gt;&#13;&#10; &lt;remoteIkeId type=&quot;String&quot; /&gt;&#13;&#10; &lt;bitSize type=&quot;String&quot;&gt;k512&lt;/bitSize&gt;&#13;&#10; &lt;saveCert type=&quot;Bool&quot;&gt;1&lt;/saveCert&gt;&#13;&#10; &lt;cacheCertFolder type=&quot;String&quot;&gt;C:\Program Files (x86)\Ixia\CachedCerts&lt;/cacheCertFolder&gt;&#13;&#10; &lt;certParentFolder type=&quot;String&quot;&gt;C:\Program Files (x86)\Ixia\CachedCerts&lt;/certParentFolder&gt;&#13;&#10; &lt;certNumber type=&quot;String&quot; /&gt;&#13;&#10; &lt;caCertNumber type=&quot;String&quot; /&gt;&#13;&#10; &lt;earlyExpDate type=&quot;String&quot; /&gt;&#13;&#10; &lt;lateExpDate type=&quot;String&quot; /&gt;&#13;&#10; &lt;usePerRangeCertNameExp type=&quot;Bool&quot;&gt;0&lt;/usePerRangeCertNameExp&gt;&#13;&#10; &lt;checkCrl type=&quot;Bool&quot;&gt;0&lt;/checkCrl&gt;&#13;&#10; &lt;crlOverrideEnable type=&quot;Bool&quot;&gt;0&lt;/crlOverrideEnable&gt;&#13;&#10; &lt;crlOverrideUrl type=&quot;String&quot; /&gt;&#13;&#10; &lt;checkOcsp type=&quot;Bool&quot;&gt;0&lt;/checkOcsp&gt;&#13;&#10; &lt;ocspOverrideEnable type=&quot;Bool&quot;&gt;0&lt;/ocspOverrideEnable&gt;&#13;&#10; &lt;ocspOverrideUrl type=&quot;String&quot; /&gt;&#13;&#10; &lt;unknownIsRevoked type=&quot;Bool&quot;&gt;0&lt;/unknownIsRevoked&gt;&#13;&#10; &lt;certProto type=&quot;String&quot;&gt;kSCEP&lt;/certProto&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;7&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/ipsecCertificates&gt;&#13;&#10; &lt;ipsecCertManager type=&quot;Ixia.Aptixia.StackManager.IPSecCertManager&quot; objectid=&quot;21591e4a-9e87-48e6-8679-68685c5c8383&quot; version=&quot;6.70.0&quot;&gt;&#13;&#10; &lt;caURL type=&quot;String&quot; /&gt;&#13;&#10; &lt;caDN type=&quot;String&quot;&gt;CN=RootCA,C=RO,L=Bucharest,O=Ixia,OU=IxLoad,IP:201.121.87.2,email:ixia@ixiacom.com&lt;/caDN&gt;&#13;&#10; &lt;certSubjectDN type=&quot;String&quot;&gt;CN=IxiaVPN,C=RO,L=Bucharest,O=Ixia&lt;/certSubjectDN&gt;&#13;&#10; &lt;keyGenAlgo type=&quot;String&quot;&gt;kRSA_512&lt;/keyGenAlgo&gt;&#13;&#10; &lt;cacheCertFolder type=&quot;String&quot;&gt;C:\Program Files (x86)\Ixia\CachedCerts&lt;/cacheCertFolder&gt;&#13;&#10; &lt;caKeyFile type=&quot;String&quot;&gt;C:\Program Files (x86)\Ixia\ca-priv.key&lt;/caKeyFile&gt;&#13;&#10; &lt;caCrtFile type=&quot;String&quot;&gt;C:\Program Files (x86)\Ixia\ca-cert.crt&lt;/caCrtFile&gt;&#13;&#10; &lt;certNumber type=&quot;Int&quot;&gt;1&lt;/certNumber&gt;&#13;&#10; &lt;certProto type=&quot;String&quot;&gt;kSCEP&lt;/certProto&gt;&#13;&#10; &lt;createRootCA type=&quot;Bool&quot;&gt;0&lt;/createRootCA&gt;&#13;&#10; &lt;uniqueCert type=&quot;Bool&quot;&gt;0&lt;/uniqueCert&gt;&#13;&#10; &lt;descFilePath type=&quot;String&quot;&gt;C:\Program Files (x86)\Ixia\CachedCerts\sample.desc&lt;/descFilePath&gt;&#13;&#10; &lt;useDescFile type=&quot;Bool&quot;&gt;0&lt;/useDescFile&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;6&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/ipsecCertManager&gt;&#13;&#10; &lt;eapSimTuples type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;eapAkaTuples type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;maxInitiationRate type=&quot;Int&quot;&gt;50&lt;/maxInitiationRate&gt;&#13;&#10; &lt;maxPendingTunnels type=&quot;Int&quot;&gt;50&lt;/maxPendingTunnels&gt;&#13;&#10; &lt;negotiationStartDelay type=&quot;Int&quot;&gt;0&lt;/negotiationStartDelay&gt;&#13;&#10; &lt;teardownRate type=&quot;Int&quot;&gt;10&lt;/teardownRate&gt;&#13;&#10; &lt;burstInitiation type=&quot;Bool&quot;&gt;0&lt;/burstInitiation&gt;&#13;&#10; &lt;parallelInitiation type=&quot;Bool&quot;&gt;0&lt;/parallelInitiation&gt;&#13;&#10; &lt;enableWildcardTsi type=&quot;Bool&quot;&gt;0&lt;/enableWildcardTsi&gt;&#13;&#10; &lt;enableWildcardTsr type=&quot;Bool&quot;&gt;0&lt;/enableWildcardTsr&gt;&#13;&#10; &lt;enablePlutoWildcardTsi type=&quot;Bool&quot;&gt;0&lt;/enablePlutoWildcardTsi&gt;&#13;&#10; &lt;enablePlutoModeCfgWildcardTsr type=&quot;Bool&quot;&gt;1&lt;/enablePlutoModeCfgWildcardTsr&gt;&#13;&#10; &lt;enablePlutoS2SWildcardTsr type=&quot;Bool&quot;&gt;0&lt;/enablePlutoS2SWildcardTsr&gt;&#13;&#10; &lt;payloadAttrTypes type=&quot;ListNode&quot; /&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;3&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.IPSecSessionData&gt;&#13;&#10; &lt;/typeSpecificData&gt;&#13;&#10; &lt;statViewManager type=&quot;Ixia.Aptixia.StackManager.StatViewManager&quot; objectid=&quot;32b6a125-39ad-4da3-9710-e09cc94bf306&quot; version=&quot;6.70.420&quot;&gt;&#13;&#10; &lt;enableStats type=&quot;Bool&quot;&gt;1&lt;/enableStats&gt;&#13;&#10; &lt;enableOverviewStats type=&quot;Bool&quot;&gt;1&lt;/enableOverviewStats&gt;&#13;&#10; &lt;enablePerSessionStats type=&quot;Bool&quot;&gt;1&lt;/enablePerSessionStats&gt;&#13;&#10; &lt;/statViewManager&gt;&#13;&#10; &lt;waitForLinkUp type=&quot;Bool&quot;&gt;0&lt;/waitForLinkUp&gt;&#13;&#10; &lt;overloadProtection type=&quot;Bool&quot;&gt;1&lt;/overloadProtection&gt;&#13;&#10; &lt;ixLoadRestObjectId type=&quot;Int&quot;&gt;1&lt;/ixLoadRestObjectId&gt;&#13;&#10; &lt;/Ixia.Aptixia.StackManager.SMSession&gt;&#13;&#10;&lt;/rpf&gt;</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">&lt;None&gt;</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">&lt;</afterStr>
- <afterOccur type="str">1</afterOccur>
- <endBefore type="bool">False</endBefore>
- <endStr type="str">&gt;</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">&lt;None&gt;</_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">&lt;None&gt;</_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">&lt;None&gt;</_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">&lt;None&gt;</_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">&lt;None&gt;</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">&lt;Default&gt;</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">&lt;None&gt;</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">&lt;None&gt;</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">&lt;None&gt;</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">&lt;None&gt;</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">&lt;None&gt;</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">&lt;</afterStr>
- <afterOccur type="str">1</afterOccur>
- <endBefore type="bool">False</endBefore>
- <endStr type="str">&gt;</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">&lt;None&gt;</_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">&lt;None&gt;</_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">&lt;None&gt;</_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">&lt;None&gt;</_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">&lt;None&gt;</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">&lt;Default&gt;</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">&lt;None&gt;</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">&lt;None&gt;</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">&lt;None&gt;</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">&lt;None&gt;</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">&lt;None&gt;</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">&lt;</afterStr>
- <afterOccur type="str">1</afterOccur>
- <endBefore type="bool">False</endBefore>
- <endStr type="str">&gt;</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">&lt;None&gt;</_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">&lt;None&gt;</_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">&lt;None&gt;</_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">&lt;None&gt;</_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">&lt;None&gt;</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">&lt;Default&gt;</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">&lt;None&gt;</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">&lt;None&gt;</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">&lt;None&gt;</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">&lt;None&gt;</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">&lt;None&gt;</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 &lt;data&gt;&#10;M&gt;)S=G6MOXSBRAO^*D(,9S&amp; GMJB[,ND,TD[2$W1NB-T]N]A&gt;--0VDVC;EKR2&#10;MG,L&gt;G/]^*-E.1+)DUTQ$&quot;LB'[C@65:5Z0Y;X4)?:_^UQ-C7N:9;':?)NA_3,&#10;MG=\.]H=%5'R.Z0/-7C9Y/&lt;_LF3TKM'98 YJ7WY[%&gt;6%\I$_O=J)Y$3_&amp;42^_&#10;M[\W+/?*&quot;)F/:J[7[(XOF;!/;&gt;7!Y,3J^&amp;!G]@_VKZ^,A^W@X.KV\$'__&gt;GQT&#10;M.CI\?W9&lt;;AA&lt;GK\_O3@^&gt;G:=/W_&quot;'(#D_&amp;#_)*/_6; V3\9]-%W0=SO63N4H&#10;MOS]+;V_CY';]_2A;T&amp;K3*)[1X5,R?D_OHOLXS=8-S.&gt;M&gt;1'-YE&lt;9'&lt;?5@:VV&#10;MV]7VX]N,'4NIZNAI3M?;2+7MDJD\3:/)5986=%S4]GUV_G)&lt;O\&gt;3&quot;4U*0_FZ&#10;MU4DTS9?-CI/HVY0&gt;144T+-*,R@VN7L2I'X&lt;#[;W1$SN@RT4Q7Q3/0IXOID4\&#10;MGXJQ58V.AEN:G4&gt;/9:_+V?$-%GF1SCZP/]G=&lt;QMO[?,DGM*KJ'C&gt;4GU_.*59&#10;MD:]_&amp;JQ+)_G&gt;8QZ_V[DKBOE&gt;O__P\-![L'MI=MNW3)/T_WY^-AS?T5FT&amp;R?L&#10;MC\;$V'G&gt;:[)]K\II?^WUB-Y$+*9*)_ZWJAF_&gt;9&quot;EJUZ04&lt;I:,ZU'I&gt;@'^X_Y&#10;M7EY9-V)V&quot;!?TH?H[T&amp;)U9&amp;6HZT/$'.&amp;R[2R?,&quot;OO=A99LK*&gt;[\[B,3N(]*;8&#10;M':&gt;S/=9N=]EJISH&amp;.J4SFA1&amp;$LTH?QC+5GNG^&gt;J;=SM%U3M7WY]'&lt;?(&lt;3MES&#10;M*:UB/DPF'[)T,&lt;^?6YZEXZALLG3(#H+UAL&gt;R-RY_OTOC,35F&lt;7(Y'B^RO!I@&#10;ML^AQ_=LB^98ND@F=0,&lt;+&gt; 6=Y,O.2 $3IT&lt;[1L':O=MAFZ9I&lt;KLC'$L?V.DJ&#10;MRM@O?VG7&quot;_9_;;&gt;\R&amp;+&lt;CF4P?VG'P1T=?R]'V\L?K_K#59:&amp;3RP[S'I_Q,DD&#10;M?&lt;A[)VDVRWLO&gt;_QB0 U^,3ZOSA-.KSQ+F+\8 ];G%QE]E]!%D4737XRKQ;=I&#10;M/&amp;;)&gt;I1^I\F[;[X?N6/7(Z'M4#,(:Y%$R=,R-HSNQ=U?TN RF[#SP&lt;N&gt;&lt;5)@&#10;M=EMFR$EMQV]I.J51 NS&lt;Y_I97^R%_1?CJZU5Q\&gt;T7([D@_U)?'-SF^TM?T2S&#10;MOS+F5_LL36S;9^UH]YZP8764CA?E,1VO#TT&gt;?,;J&quot;,N,)F\ES]TO2Q^J/T@E&#10;MW6J?NR@?W$7)+66&quot;LBS-&lt;FTUY$^/#LS]/OM_?SWF#G;)?O_YE_UR/!U4CO;[&#10;MU&gt;?]2L7*Y7Y_J&gt;A+?SZP]ONUW_;+#G70+^VQG_O5057VEY]69\C)09GY]OOK&#10;MWYA9*;@_+X&lt;%R$$0&lt;A!!#E-28W4*P@E&quot; $'6!@1A3&quot;VZV( N%D(72]!%[B57&#10;M:588@ZM/1ADKFQ7%8UZB\CC^K$*@S;IHKI[&gt;Y &quot;JV0C5;$$U2U+M!^,HSK\;&#10;MGXIX&amp;O\W*F&gt;KG&amp;AEW']6-,AD73-+BV0N()F#D,S9*MDH+:*I&lt;4YG:?;TT\?W&#10;M/[]:,-F@_G'I 7*Y&quot;+G&lt;K7(Q5J!MJB79JXNE9SCZ@%@&gt;0BQOJUAEKCEC\&amp;@&lt;&#10;MWM\:/Q'C/$X6!7V]:(UVZ^+96L0+ /%\A'C^GQ3/7069MZU&gt;W7!=/D&gt;+?&quot;$@&#10;M7X&quot;0+_BS?4^9?J1)0%&gt;+@,0$% P1&quot;H;;3Z;K0%]_#GVQ5%?(TZ,0-)&lt;GF,D\&#10;M$6?S\C3MS-JUJ^E4;MRDF3&amp;8QB60E1.MUT_7-MKN8-I&amp;0 I 88#( 40&amp;@;,X&#10;M^5Y%2U_=W&gt;JF],\]&quot; 0%!$,%1,(&quot;4&quot;9J#.&gt;4OGY4UDWIGW40B ((!@.(R &amp; &#10;M3&quot;&lt;9^S\WANR[%J9H-5OZI_X$FOL3S.2?B+/_S4(9UVT,/MF@_DD9@&gt;;_! , &#10;M1&quot;0 0++/T32&gt;&amp;*LXK^F8QO&lt;MC,8&amp;J_JG9 3B 8(! B(2 5:\=GK&gt;)M,=3,P@&#10;M,B 8-&quot; B&amp;P ROG\JVDIO=5,=S,X@ B 8!&quot; B T RQ44M%1D_??PV;P$ &amp;JS6&#10;MQ?/U+,M&quot;DW^&quot;F?T3&lt;?K?V,=:2W&quot;BN;I&lt;@1ZY(!*P,&quot;1@2230T-&gt;XM--J?X,M&#10;MUT4,]8@(48&quot;%H0 +00&amp;C+$KR65P8A]F&lt;A?R?!&lt;U?G^%@H]R45P\:6.#U M0%&#10;M P0:&quot;&amp;'.IT]M*U&gt;9Y'33=/D)8@4+PPH6@A56(ZO5+@?:Y)33 P\6! \6!AXL&#10;M!#SP4;;1X0&quot;+G&amp;IZ^,&amp;&quot;^,'&quot;\(,E\&lt;.V):,AS&gt;YIIF;)B+?=P9*1!;&amp;$A6$)&#10;M2[JZX+[=)2,+8@4+PPJ6=!T!E.EM+!E9$&quot;M8&amp;%:PI.L%LDQO:,G(AKC PG&quot;!&#10;M)5T6V&quot;C4VUDRLB$VL#%L8(ML $CVQI&gt;,;(@); P3V&quot;(38,5[BTM&amp;-H0'-@8/&#10;M;!$/ !G?S)*1#=X_A+J!2+J#&quot;)#I;2\9V1 0V!@@L*5[B9KZV!M:,K(A$K Q&#10;M)&amp;!+]Q(U]+6WOV1D0Q1@8RC 1E# VUXRLB$TL#%H8&quot;/0X.TN&amp;=D0*]@85K 1&#10;MK/&quot;6EXP&lt;&quot;!YL##S8&quot;'AXJTM&amp;#L0/#H8?'.1=1J,[YNCV;KXHEBL\[2P6R5:[&#10;MN&quot;$&lt;X@&lt;'PP^.R ^.O$JYNG%*S&lt;1NLW']2TD.Q! .AB$&lt;D2&amp;V2*EDWK+=@?YE&#10;M)P?B#0?#&amp;X[(&amp;X&quot;DJS5:-;USLW']&quot;U,.^!P#ZD$&amp;D3ZV2*FD=VYWH'_ARH$(&#10;MQ&lt;$0BK/]6L7G]/1J&amp;,]?_W#6RE G#VDY$'XX&amp;/QP1/QP (9;Y$_&amp;[^DB,P;1&#10;MM'SN)&lt;H76?7486[\M K[YU&gt;?J]?Z(;UQW=#4)#-$*@Z&amp;5!R15$K=19E_'QR^&#10;M?KEOK6)EK(.&gt;&quot;$&amp;)@X$21X026*)!FQ(-NCC9NA!].!CZ&lt;$3Z 9KN6M&quot;IRI&amp;&#10;M)F2:'X::!(1 Q,6 B&quot;N&quot;2*DH^+3@.M;6&gt;IMH5O_0=&quot;$$&lt;3$(XDH((LMV.&quot;Y*&#10;M1&amp;U=-\EN!P,6 @X7 QRN!!RR&lt;,/%&gt;$SS_&amp;:AH-.!MCMXM!?&quot;&quot;Q&gt;#%ZZ$%[* &#10;M?T194KXQJ'7U9,/ZY[XNA!,N!B=&lt;&quot;2=DZ4ZBF!UJ^\I)=O5?L'7!!Z113TB+&#10;MT !ENV]IN8.&quot;=&quot;&lt;9UG^1UH5HPL70A(N@B;,TG:N8G4AV^:F)IDP'$8*+(017&#10;M) 17GO[*Z=RHHE9XOE@[Z&amp;&quot;Z I&amp;$BR$)5R0)0$H^0[4L(VQ&lt;_\3%@TC#Q9&quot;&amp;&#10;M*Y(&amp;(*%P&gt;FQ9PP;K^B&lt;O'D0;'H8V/)$V !&amp;%?-^RB W6]4]C/(@]/ Q[&gt;&quot;)[&#10;M &quot;)R;-6RA*!M_=,9#V(0#\,@GL@@@(&quot;G24&amp;S*CCC:)%5KP R?CJ\O_W9^.&lt;L&#10;M_U=K6FYSHW^JXT%DXF'(Q)/(!%B+B:9J%F)$N_Q41U./A,C$PY&quot;))Y))J:68&#10;M%XN&quot;SN95[BJ#;2\CBG8[&gt;',31&quot;8&gt;ADP\D4P X08I2U3C]H63['8PG0%?XX1Z&#10;MCY/()8!PJTF;JH[79+Z#&quot;0W$*!Z&amp;43R140 9GR\:MBN?:+:#*0S$(QZ&amp;1SR1&#10;M1Z!\E^0/-&amp;L_W0EF]4]&lt;?(A!/ R#&gt;&quot;*#- ]:19VNP;K^:8H/,8B/81!?9!! &#10;MQ.-D%9IQFL1%S 1IX&lt;&amp;-E82@;?TWU/L0?_@8_O!%_M@H8'L/ODCZP?&gt;(Z[FE&#10;MWH?HP\?0AR_2QT;Y!M6+E]7TOYIM_3?9^Q!G^!C.\$7. 2L;DB^H5G[YP_ &#10;MLOZ;ZWV(-'P,:?@(TJCN-VE7M;K)#FZH]R' \#&amp; X2, 8WU!MMUY&quot;F&gt;T@YOI&#10;M?8@M? Q;^ BVN*;_5L%DHMD.;J7WP;?#HEX/BX*)29RI44XTW,$-]3Y$%#Z&amp;&#10;M*'P$42S/&gt;@]Q&lt;6&lt;&lt;+HH[MBD&gt;+Y?&lt;RD&lt;O6/3MG60QKCA]]:!' *&amp;'CT$/'X$&gt;&#10;MRZ#+XD'&amp;IZ.KEK5\,&lt;OIIH&lt;V H@V @QM! C:J 4X&amp;BC1K3++Z:8',@((,@(,&#10;M9 0(R*@'&gt;#94HEMIEM--#UT$$%T$&amp;+H($'11&quot;_ \?F0)OYK3SM/L]&lt;^S 1I*&#10;M+C@]]&lt;!&amp; ,%&amp;@(&amp;- 'E1HWHB0-65#=DX?WE#4Q*$H&quot;/ 0$&lt;@0D&gt;P]?*&amp;T&lt;_I&#10;M6-4UCI5Q_1&lt;Z HA# @R'!&quot;*' !(*%R3:E1 VKO^21P!A28#!DD#$$D!&quot;?F&amp;S&#10;M705!V_HO=@00GP08/@E$/H&amp;&amp;,;&gt;\WO(HAFSKO^P1@/4K4 4L1$@!!)36E]K5&#10;ML,F\_LL@(&lt;0B 89% I%% !E?%IS:U4^RJ__21PC!2(B!D5&quot;$$3 #_EO9.02T&#10;MK?_21PA128BADE&quot;D$E! ?B&amp;E;0E!Z_HO@(00HH081 E%1(&amp;F,EO73UJ&gt;W6#]&#10;MZ;]0$D+L$F+8)139I5'H]&gt;**&quot;E$%V_HOEH00MX08;@D1W,*OLB@3\,5V!Y=/&#10;M0@A;0@RVA!ALX=9;U&quot;GX;+N#BRDA1&quot;TAAEI&quot;!+4TK[8H4Q/VT\'EEA#&quot;F1&quot;#&#10;M,Z'T!'K#TLXHGJE;VI&amp;,\TL[FF9$$-*$&amp;*0)1:0I585$'-)B,:^B57$?]287&#10;M^I=YB D6Z$-5Z!/9!M!S%$V_*U,2-JY_G8&gt;8&lt; D_7 T_$70 %=?WP2A3LMF!&#10;M_D4?8H)U_$Q4(3]3I!ZH3RX?&quot;BG#5?F\Q#8W^E&gt;#B F6_C-1M?],Z6GXIM&gt;K&#10;M*GBKC&amp;B7/_'HH4AB@A4!351)0%.N\R$7-%V&amp;N7Y!99LWT@&amp;6NSC5@)4&quot;352I&#10;M0%,N]]$D8.NW&lt;6YZS:^N,PQ8,=!$E0PTI4?BH==&gt;WL9YL&lt;Q2*D9PHWU^).M9&#10;MIB F6$+01-40-.4B@K*&lt;+Q?QN, 57&quot;04['&lt;QJL%&quot;@B:JDJ IEQ*4Q:P]UZY&amp;&#10;MS68'78QTL.&quot;@B:HX:,HE!X'R&amp;.OG(E1(&quot;1OO8!()UAVOQ$7(*!&lt;?W#3$CZCJ&#10;M02YYZ&amp;#N&quot;)&lt;IQ]4IEPN5;Q[FJA3=Y$+_54724+ &lt;5[%&lt;+E;8.-15R=ED7O]U&#10;M1@(7-&lt;=5-9?*FF^9'RF[?VJS$WZFI.=Z!(&amp;KH./*H,MUT(D\96^8R:BZIPIR&#10;MTL&amp;&lt;&quot;:Z9CBN:+E=-!V1MFM*TJ^L6+QW,GN#*ZKC2ZG)M]8W]54A[JGHL[*:+&#10;M&amp;14(3;C&quot;ZW+E]&lt;U]5JFV6_UT,;L&quot;(0I7CEVJQ[[M_%5=QU%\^A)]&lt;)IJNA9,&#10;MX.+MN.KM&lt;OEV(B\E2R&amp;K6$C&gt;[*2#LQ=&lt;UAU7UUTN[ [(R@]+9&lt;)N&lt;]/!^0LL&#10;M 4]0-&gt;&quot;)5 0&gt;R /#TROCG&quot;6_Z%;)#+;)/#_Z=6D)XA6J%#R1:\%;0#T'%NVJ&#10;M$E)+A0OK.@J6NQCG(%2AZL$3N2#\-@'9MKS%17O0=A&lt;C&amp;B0H5'%X(E&gt;'WR;B&#10;M&gt;52,[U2I^&amp;R\@]DG6&quot;B&gt;H&quot;K%$[E4?*.,^9Q- ]LJ0\J+R)ON8(X)5HTGJ++Q&#10;M1*X;#TCX$F/+8UDVW,%J'5@KGJ&quot;*Q1.I6OSV'JAF)$O6.UBK ZO)$U0Y&gt;2+5&#10;MDX&gt;$/+WX?#HZ5G1JAHWK?S* @-7F&quot;:K&lt;/)'JS6-D;'E0-YG7_WP &gt;O1$U1!&#10;M&gt;B)5I,=(V?;@;K2O_QD E:J)ZA2]42J58\1\YH6JQM;%&quot;K*.]'_9 !:]@3&#10;M5!%[(E6QAV0]''Q4E#(!RQT\&amp;4# \O4$5;^&gt;2 7LMRK8&lt;K8$;7?P= !J]L3&#10;M5'E[(M6WWZIBVXD2-M[!LP $+'1/4)7NB53J?JN.2G+D!@\=O)&quot;)V&quot;#?V&quot;B^&#10;ML3%\\_X?JB:5@.4.7KE$;!!Q;!3BV!C$X&gt;)L.4.&quot;MCMX 1.Q0;ZQ47QC8_B&amp;&#10;MB[3M# D;[^&quot;%3,0&amp; &lt;=&amp; 8Z- 1PNU*J\01)-IT]J)87\=/#:)N* S&amp;.CF,?&amp;&#10;M, \7M9+SSP8/';RXB3@@^#@H\'$PX$,&gt;'U4M44*F.0TU48X#4HZ#HAP'0SE\&#10;MH&quot;V?@F#CW&amp;JY)M9Q0-9Q4*SC8%B'#[7MC-E@G5-2$^\X(.\X*-YQ,+S#QZHD&#10;M46YRP6FJB7T&lt;D'T&lt;%/LX&amp;/:QU&amp;5*R#2GH2;:&lt;4#:&lt;5&quot;TXV!HQU*9*6'CG(Z:&#10;MF,&lt;!F&lt;=!,8^#81Y+::9LL,XIJ8E[')!['!3W.!CNL=1GRDTN.$TU,9 #,I&quot;#&#10;M8B 'PT&quot;VNDP)F&gt;8TU$0Z+D@Z#HIT' SIV&quot;HS)6R&lt;TU$3W[@@W[@HOG$Q?&amp;,K&#10;MS90-UCDE-5&amp;.&quot;U*.BZ(&lt;%T,YMOI,N&lt;D%_ZB*)DU!XG%1Q.-BB,=1ERDAT_PM&#10;MDYHT!%G'1;&amp;.BV$=1V6FA(US.FKB&amp;Q?D&amp;Q?%-RZ&amp;;QREF;+!.J&gt;D)LIQ0&lt;IQ&#10;M493C8BC'49\I-[G@--5$/&quot;Y(/&quot;Z*&gt;%P,\;CJ,B5DFM-0$^NX(.NX*-9Q,:SC&#10;MJLR4L'%.1TU\XX)\XZ+XQL7PC:LT4S98YY341#D&gt;2#DNBG)&lt;#.6XZC/E)A&gt;&lt;&#10;MIIJ(QP.)QT,1CX&lt;A'D]=IH1,&lt;QIJ8AT/9!T/Q3H&gt;AG4\E9D2-L[=?:Z);SR0&#10;M;SP4WW@8OO&amp;49LH&amp;ZYR2FBC' RG'0U&amp;.AZ$&lt;3WVFW.2&quot;TU03\7@@\7@HXO$P&#10;MQ#,XO!@&lt;GQEJ;K^&quot;C7,Z:N(=#^0=#\4['H9WQ%!;SI=-YCDM-7&amp;.!W*.A^(&lt;&#10;M#\,Y8K!MY\Q&amp;^YR:FHC' XG'0Q&amp;/AR$&gt;,5HE&gt;7.S$TY7303D@03DH0C(PQ#0&#10;MY=7H]/)BJ&quot;AU-ECGE-1$0#Y(0!Z*@#P, 4FQMIP\&amp;^US:FIB'Q]D'Q_%/CZ&amp;&#10;M?:1HVTZ?S0XX/35QD ]RD(_B(!_#05*X2A+H%B_&lt;XZ2:R,@'R&lt;A'D9&amp;/(:/K&#10;MXP^GP]'QM:(4VF2&gt;TU(3&amp;_D@&amp;_DH-O(Q;&quot;0'V_:SXHT..#TU&lt;9$/&lt;I&amp;/XB(?&#10;MPT5RN&amp;VGT0T&gt;.$4U$9(/$I*/(B0?]18#*5XEB72;&amp;TY;3&lt;3D@\3DHXC)QQ#3&#10;MQ&gt;7H].0?BO(H;)S341,K^2 K^2A6\C&amp;L)(;:&lt;@YM,L]IJ8F/?)&quot;/?!0?^1@^&#10;M$H-M.W\VVN?4U,1( &lt;A(/HJ1? PCB=$JR9V;G7&quot;Z:J*E *2E $5+ 8:6AI_&gt;&#10;M#P?7I^]5/8'::)]34Q,K!2 K!2A6&quot;E!O;I.C;3F%;O# O2M&amp;$R,%(&quot;,%*$8*&#10;M4*]RD^-M_0U&amp;&amp;UQPFFIBI0!DI0#%2@'JS6YRP$K2Z58_G+J:R&quot;D R2E D5. &#10;M(Z&lt;3A4@/V.94U$1+ 4A+ 8J6 APMG2B%&gt;= ZIZ0F-@I -@I0;!1@V$B(M7V,&#10;MA\US6FKBHP#DHP#%1P&amp;&amp;CX1@%0'\!A^&lt;JII(*0!)*4&quot;14H AI?/CX?#P@ZH9&#10;M:(-U3DE-E!2&quot;E!2@*&quot;G 4)(4:\MYL]$^IZ8F-@I!-@I1;!1BV$B*MNW&lt;V&gt;R &#10;MTU,3'84@'84H.@HQ=&quot;2%JR1_;O'&quot;O092$R6%(&quot;6%*$H*,91T&gt;G%RJ2A]0J8Y&#10;M#35140A248BBHA!#17R@+2=.V#BGHR;^&quot;4'^&quot;5'\$V+XAP^U_3&gt;2@M8Y)34Q&#10;M4 @R4(ABH!##0'RLBEY'VNR&quot;TU03#84@#84H&amp;@HQ-/3IZNA0V3N&lt;8&gt;.&lt;CII(&#10;M* 1)*$214(@A(3'4EO-EDWE.2TW\$X+\$Z+X)\3PCQALVSFST3ZGIAX&amp;LDR0&#10;M@4(4 X48!A*C59(W-SOA=-5#0Y8)T5&quot;E]E9=62N$KE?7ZM[D#-KF5-3#0)8)&#10;M,5&quot;E+4)%# ,)D;:&lt;-ANLUY4,]#&quot;/94+,4^F+4!+#/$*L;2?-)O.&lt;EGK8QS(A&#10;M]JD41FB)81\A6&quot;4I&lt;Z,/3E4])&amp;29$ E56B-4Q9#0IXN/%Y=_7*B;)#79Y]34&#10;M0T.6&quot;=%0I3%&quot;30P-2=&amp;V/DUJ=,#IJ8&gt;$+!,BH4IEA)XH$GH.5]$SKLT..#WU&#10;M$)%E0D14J8S0$T5$4KCJ.NC&amp;YUT#/5QDF1 753HC%,5PT;*TU/HTP78VSO/;&#10;M]LK,-YGGM-1$102BHDIAA)88*BJ#/;U-TJPJ5KX*.L_+ZL2M&quot;MKH@U-5$Q,1&#10;MD(D(BHD(ZNZY&gt;AG#RVS.;+7=/T7CG(Z:J(B 5$105$3P%4_764V-D)+UNI*A&#10;M)BHB(!41%!41D8J@.KRT&amp;F\LW)N,YG&gt;4%[$\F+\LHFR9?Y6&lt;IED[ 5F(H%B(&#10;MB&quot;QD &gt;7B3Z*8':ZQ6&lt;G7=,=F!W5!=75($(((&quot;H*(&quot;$&amp;0G,/%&gt;,PBO5E,%4JZ&#10;MV4E=5DW$3D :(B@:(B(-0;)&gt;TS&amp;-[Y7VTTTNZI+J&amp;O@@$!$4$!$1B&quot;!)#]D&lt;&#10;M&lt;#8OE&amp;JZT0&gt;73S6)&quot;E(105$1$:D(.!\=9UF:J:@(+QOFST:Z] ,9B* 8B(@,&#10;M5&quot;DJ&quot;#C*XMM;FAG+&gt;%OKAZ+9#LX\%H@\!(4\1$0&gt;2+KKT57;LM5-=G!6L4&quot;&gt;&#10;ML5 \8XD\ TFV+B+5MFZ2W0[.'Q8(,18*8BP18L&quot;A&amp;L]HNBA:'ZJ&quot;V0[.$A9(&#10;M+1:*6BR16N LQXALGF;MBR&lt;9YM[1H4D^$%DL%+)8,K+(\I6 .XBF4^-DFCZT&#10;M+2%LG'M\3Y.,(*I8*%2Q9%2!9:R6J%L_W0*6N3M\-0D(0HF%@A)+AA)8P.%1&#10;MZV==T2QW8X FZ4#XL%#P8&lt;GPT2S=ARG[WABDR20N6E^&lt;A1UP*XJ:Y 2QPT)A&#10;MAR5B1Y.&lt;QX]%%HT+XW.4Q&gt;71YRKZ9;,3;GE1DZP@C5@H&amp;K$P-%*M\&quot;N:(X*V&#10;MN4FV)C&quot;Q03&quot;Q4&amp;!BB6 &quot;,/$1G49/*IA8-LPSL:;IC@U2BHVB%%NBE%)1\6Z5&#10;M-&quot;^,HYAUDRIBXZ?#^]N?C7_.\G^U=[/*!A&lt;=L+(-LHN-8A=;8A= TG,ZB:-5&#10;MK*._JU!T@X&lt;.2-H&amp;B&lt;9&amp;$8TM$0U&quot;T//H4;&amp;@-0\=T+4-,HZ-8AQ;8AR,H'&amp;B&#10;M6M 7#QTPMPW2CHVB'5NBG2V&quot;7BL?\M?-0U[7:0FD'QM%/[9$/PA!U0[YZ^8A&#10;MKXG';9&quot;);!03V1(38015.N2OFX&gt;\)CZW02JR451D2U34,'':O8K'WQ=SM5.G&#10;M9B&lt;=L+L-4I&amp;-HB);HB*&lt;K.V/_&lt;U..F!X!\0D&amp;X5)MG3]!BEKZQE@LY,.&amp;-X!&#10;MZ&lt;E!T9.#H:?/\82FAA9Q,:ZZ('P'Q&quot;D'A5,.!J&gt;: V\]+V!&lt;&lt;1IK(BP')&quot;P'&#10;M15@.AK : V__E(9QQ6FL&quot;;H&lt;$+H&lt;%'0Y&amp;.A:!JX&gt;O;;ZX=351&amp; .2&amp; .BL &lt;&#10;M#($U1*TH12#7&quot;W2M$CH@CCDH'',P. 9'K2HY8)&gt;W-+&amp;9 [*9@V(S!\-F&lt;M1J&#10;M&quot;&amp;VK'TY=3:#F@*#FH$#-P8!:0]0:,L.&amp;906BB=&lt;&lt;D-&lt;&lt;%*\Y&amp;%Z#H]:1&amp;3:L&#10;M@A%-V.:&quot;V.:@L,T1L0VHMK7(BW1F5$XY(2OW@)(FH&amp;3=2+^3&quot;RXN2&amp;$NBL)&lt;&#10;MD&lt;*:5'JE/H(R?VU&gt;WS]*QXL9.[;C*2U_L&amp;]6$2Y_1+.R#=-A5%IAGP=9FN&gt;E&#10;ME=+:P?YU-(G3RIBP(6:VV#0XKDPVMAI,8^;T),UFBVDTI$41)[&gt;Y&lt;1]-%_3=&#10;MSO_^^#^/1[^R_PY__?$_B[3X]3/-RGNFE[_L+7^0GKO\\(O4N@QUU?:?+QO_&#10;M]?+Q_UX^[AA]]H&gt;@&gt;7&amp;]2,3C^'%:_/K;XVQJW&quot;_]OUM[-I&lt;?#)J,TPG;8[5A&#10;M4=SL$F_Y^;&lt;?;XM?:T?&amp;3*V\G&quot;8WZ9!F&lt;32-_QN5MV*\CVX-YB7)]Q[S&gt;&amp;7J&#10;MKBCF&gt;_W^P\-#[\'NI=EMWS)-TO_[^=EP?$=GT2[K&gt;T64C.GJ2-;[3Y#[+UOQ&#10;MQV@8Y5'.OA8K-5C'B\=763K/Q7;+EF4\94&lt;NMY:?2?EEO_XMO,^ =&gt;C;-'LJ&#10;M6WQ.XS%=)\[G_&gt;LM9!N#F]N3&gt;$K+,5 V&amp;.Q]^&lt;3&amp;8?XERM-LDGY9=^S\R]&gt;O&#10;MRP%3;KS,RD'[Y?+JXN2S]?4L2A*F_)?KXP]?!X=G9U^K[[]&gt;7A]&gt;?#C^&gt;A_&gt;&#10;M];+'F^IP!&amp;=P1#1;1[P\AN= 7C;(.QXM*IV,?N/FWQ]6'7]#F^&amp;V-N5A7'[[&#10;M-QT7\3W--[7Z/;Z]F[)_16.KJ](5BXIEM G[+[Z):5:V=.W0_T9#?]&gt;]\2&gt;[&#10;MCNW:N]]N'']WXMV8MN&gt;0\8T75IHT&amp;9!=L0Y8[UOL5]&lt;A;F6DMDG&gt;K^P*P].C&#10;M&lt;N-PE^RZNQ;9M4V7&gt;*YK.^XNL^'Y[)A,?]&lt;F%H/AT#'-7&gt;('KE?9KNT.'A,;&#10;M%&amp;7&amp;OTS*%I9)_%UFR3)'A.R9WIYM]P+'M&lt;+0_9MI[9GF^G&quot;YO1KLIO-YV&lt;)@&#10;M.6 OB:&gt;K&lt;5RF\M40;_B;+#/I&gt;32^BQ.ZUN5X&gt;'YXM'LXO+P^NMP]6W9DJ-T6&#10;M&lt;X&gt;324;S:OB3T.H1+^B1'B'6RV[$[)D]EZ7BEV]6#=U&gt;K=D-#&lt;R]/6+&gt;F'L.&#10;MI=_V?/-FCUB1_X,CM0EO[#W+GY ]SYUX&gt;TY@^S\05VP5F1[=8WV-[OG^-[(7&#10;M3NP??#[9]IL&quot;D4,^?;R@Q4.:?5^?9EBKH&amp;&gt;7D1%OF=2@)AL,7=,IC?)*X=/'&#10;MLS2:&amp;$PXTS@^Y(W5FFTP5LMS+!F79V:CS$BY\=-CX/W\Y?0QCKXLO7PICWI7&#10;M]-*&lt;NDX?KVEYCS3-:F'9/;^,W'975H F&lt;/KX=#X&lt;1],J&amp;F*N^K[PO;SC\+ZV&#10;M^&gt;,W=JHI=^.^!&lt;=+&amp;90\(JJ=,2&gt;PVHF.YN7&lt;_7)&gt;W139,&quot;;2Z93ESW**5C8X&#10;MHD7U).&gt;RF_';&amp;G&lt;^HU&amp;6T$EY\B_;W413]H&gt;O&amp;1&quot;V-]HI;\9&gt;SN% ,_SF1BLL&#10;M#Y&lt;M2X6JAE6:J9D1MV\RM'J@;9,ML4FSN2PMTG$ZK&gt;X'O(G&amp;%+8(MFHT&gt;ITN&#10;M&quot;GI=S=DA:\)FR,QL7F:/T7-W$:6'MC?URXW];=DO)T])V6L_TB?@3,PU^5Q.&#10;M5*5&amp;ST.O8;99MJ[FO?W!Y&lt;7H^&amp;+$\.+Z&gt;,@^');%.,LM]=^_'A^=C@[?GQV7&#10;M&amp;P:7Y^]/+XX9T%33[.JK_/XRF3Y5OY/RB[,X^4XGS]O[+_NLGR9_^92#V\_8&#10;M).%@O^K(1L+.5&gt;]V*FL[SS/Q';+#;U_.]':,=(EL#..BZM'@,WI/IPSAEO%6&#10;M&gt;QSL#Y/9W&amp;#ROMN)V-^!)=!&gt;?M^;K^&lt;F8]HK&amp;ZSF*N4D&gt;Z&gt;,&gt;Z54N6F0)C?Q&#10;M[2*K!*W30LXVCMG&amp;ZN^Q^OT^RI;'N#R/E_NOSNA1-2&gt;3S_03FH^SN.HAJXVU&#10;MZ3JSRDYI4W8^6T_YRK_VRE'=[X3&gt;;]FAUJ)?/_+7]HUJ]S+.\@&lt;;\^7?CO'I&#10;&amp;_P,I\+)D&#10; &#10;end&#10;</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
deleted file mode 100644
index a7bce95a0..000000000
--- a/functest/opnfv_tests/vnf/ims/ixia/files/Registration_only_LPS.tst
+++ /dev/null
Binary files differ
diff --git a/functest/opnfv_tests/vnf/ims/ixia/files/SIPCall.tst b/functest/opnfv_tests/vnf/ims/ixia/files/SIPCall.tst
deleted file mode 100644
index 783918861..000000000
--- a/functest/opnfv_tests/vnf/ims/ixia/files/SIPCall.tst
+++ /dev/null
Binary files differ
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)