<?xml version="1.0" encoding="UTF-8" ?>
<testsuites>
  <testsuite errors="0" failures="1" id="0" name="" package="" skipped="1" tests="23" time="1008.411">
    <testcase classname="scripts.analytics.test_analytics.AnalyticsTestSanity" name="test_contrail_status[cb_sanity,ci_sanity,dev_sanity_dpdk,sanity]" time="0.673" />

    <testcase classname="scripts.analytics.test_analytics_basic.AnalyticsBasicTestSanity" name="test_verify_object_logs[ci_sanity,dev_sanity_dpdk,sanity,suite1]" time="47.359" />

    <testcase classname="scripts.db_manage.test_db_manage.DbManageTest" name="test_db_manage[cb_sanity,ci_sanity,dev_sanity_dpdk,sanity]" time="4.589" />

    <testcase classname="scripts.documentation.test_docs.DocumentationTest" name="test_analytics_docs[cb_sanity,ci_sanity,dev_sanity_dpdk,sanity]" time="0.314" />

    <testcase classname="scripts.documentation.test_docs.DocumentationTest" name="test_config_docs[cb_sanity,ci_sanity,dev_sanity_dpdk,sanity]" time="0.336" />

    <testcase classname="scripts.floatingip.test_floatingip_basic.FloatingipBasicTestSanity" name="test_floating_ip[cb_sanity,ci_contrail_go_kolla_ocata_sanity,ci_sanity,quick_sanity,sanity,suite1,vrouter_gw]" time="64.605" />

    <testcase classname="scripts.heat.test_heat.TestHeat" name="test_heat_stacks_list[cb_sanity,ci_contrail_go_kolla_ocata_sanity,ci_sanity]" time="1.144" />

    <testcase classname="scripts.neutron.test_crud.TestCRUD" name="test_network_tags_crud[ci_sanity,sanity]" time="4.978">
      <failure type="testtools.testresult.real._StringException">Traceback (most recent call last):
testtools.testresult.real._StringException: Traceback (most recent call last):
  File &quot;/contrail-test/tcutils/wrappers.py&quot;, line 176, in wrapper
    raise TestFailed(&quot;\n &quot;.join(errmsg))
tcutils.cores.TestFailed: Test failed: NotFound
Python 3.9.25: /usr/bin/python3
Fri Aug 14 09:20:32 2026

A problem occurred in a Python script.  Here is the sequence of
function calls leading up to the error, in the order they occurred.

 /contrail-test/tcutils/wrappers.py in wrapper(self=&lt;scripts.neutron.test_crud.TestCRUD.test_network_tags_crud[ci_sanity,sanity] id=0x7f159c25ad30&gt;, *args=(), **kwargs={})
   78             log.info(&apos;Initial checks done. Running the testcase now&apos;)
   79             log.info(&apos;&apos;)
   80             result = function(self, *args, **kwargs)
   81             if self.inputs.upgrade:
   82                 pid = os.getpid()
result = None
function = &lt;function TestCRUD.test_network_tags_crud&gt;
self = &lt;scripts.neutron.test_crud.TestCRUD.test_network_tags_crud[ci_sanity,sanity] id=0x7f159c25ad30&gt;
args = ()
kwargs = {}

 /contrail-test/scripts/neutron/test_crud.py in test_network_tags_crud(self=&lt;scripts.neutron.test_crud.TestCRUD.test_network_tags_crud[ci_sanity,sanity] id=0x7f159c25ad30&gt;)
  601 
  602         # set (replace-all)
  603         c.replace_tag(&apos;networks&apos;, net_id, {&apos;tags&apos;: [&apos;a&apos;, &apos;b&apos;]})
  604         assert tags() == {&apos;a&apos;, &apos;b&apos;}, &apos;replace_tag did not persist&apos;
  605 
c = &lt;neutronclient.v2_0.client.Client object&gt;
c.replace_tag = &lt;bound method Client.replace_tag of &lt;neutronclient.v2_0.client.Client object&gt;&gt;
net_id = &apos;a30013a8-aac9-4746-8eb7-0eb52e1082e5&apos;

 /usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py in replace_tag(self=&lt;neutronclient.v2_0.client.Client object&gt;, resource_type=&apos;networks&apos;, resource_id=&apos;a30013a8-aac9-4746-8eb7-0eb52e1082e5&apos;, body={&apos;tags&apos;: [&apos;a&apos;, &apos;b&apos;]}, **_params={})
 2096     def replace_tag(self, resource_type, resource_id, body, **_params):
 2097         &quot;&quot;&quot;Replace tags on the resource.&quot;&quot;&quot;
 2098         return self.put(self.tags_path % (resource_type, resource_id), body)
 2099 
 2100     def remove_tag(self, resource_type, resource_id, tag, **_params):
self = &lt;neutronclient.v2_0.client.Client object&gt;
self.put = &lt;bound method ClientBase.put of &lt;neutronclient.v2_0.client.Client object&gt;&gt;
self.tags_path = &apos;/%s/%s/tags&apos;
resource_type = &apos;networks&apos;
resource_id = &apos;a30013a8-aac9-4746-8eb7-0eb52e1082e5&apos;
body = {&apos;tags&apos;: [&apos;a&apos;, &apos;b&apos;]}

 /usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py in put(self=&lt;neutronclient.v2_0.client.Client object&gt;, action=&apos;/networks/a30013a8-aac9-4746-8eb7-0eb52e1082e5/tags&apos;, body={&apos;tags&apos;: [&apos;a&apos;, &apos;b&apos;]}, headers=None, params=None)
  360 
  361     def put(self, action, body=None, headers=None, params=None):
  362         return self.retry_request(&quot;PUT&quot;, action, body=body,
  363                                   headers=headers, params=params)
  364 
self = &lt;neutronclient.v2_0.client.Client object&gt;
self.retry_request = &lt;bound method ClientBase.retry_request of &lt;neutronclient.v2_0.client.Client object&gt;&gt;
action = &apos;/networks/a30013a8-aac9-4746-8eb7-0eb52e1082e5/tags&apos;
body = {&apos;tags&apos;: [&apos;a&apos;, &apos;b&apos;]}
headers = None
params = None

 /usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py in retry_request(self=&lt;neutronclient.v2_0.client.Client object&gt;, method=&apos;PUT&apos;, action=&apos;/networks/a30013a8-aac9-4746-8eb7-0eb52e1082e5/tags&apos;, body={&apos;tags&apos;: [&apos;a&apos;, &apos;b&apos;]}, headers=None, params=None)
  328         for i in range(max_attempts):
  329             try:
  330                 return self.do_request(method, action, body=body,
  331                                        headers=headers, params=params)
  332             except (exceptions.ConnectionFailed, ksa_exc.ConnectionError):
self = &lt;neutronclient.v2_0.client.Client object&gt;
self.do_request = &lt;bound method ClientBase.do_request of &lt;neutronclient.v2_0.client.Client object&gt;&gt;
method = &apos;PUT&apos;
action = &apos;/networks/a30013a8-aac9-4746-8eb7-0eb52e1082e5/tags&apos;
body = {&apos;tags&apos;: [&apos;a&apos;, &apos;b&apos;]}
headers = None
params = None

 /usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py in do_request(self=&lt;neutronclient.v2_0.client.Client object&gt;, method=&apos;PUT&apos;, action=&apos;/v2.0/networks/a30013a8-aac9-4746-8eb7-0eb52e1082e5/tags&apos;, body=&apos;{&quot;tags&quot;: [&quot;a&quot;, &quot;b&quot;]}&apos;, headers=None, params=None)
  292             if not replybody:
  293                 replybody = resp.reason
  294             self._handle_fault_response(status_code, replybody, resp)
  295 
  296     def get_auth_info(self):
self = &lt;neutronclient.v2_0.client.Client object&gt;
self._handle_fault_response = &lt;bound method ClientBase._handle_fault_response of &lt;neutronclient.v2_0.client.Client object&gt;&gt;
status_code = 404
replybody = &apos;{&quot;NeutronError&quot;: {&quot;type&quot;: &quot;SubnetNotFound&quot;, &quot;mes...&quot;Subnet None could not be found.&quot;, &quot;detail&quot;: &quot;&quot;}}&apos;
resp = &lt;Response [404]&gt;

 /usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py in _handle_fault_response(self=&lt;neutronclient.v2_0.client.Client object&gt;, status_code=404, response_body=&apos;{&quot;NeutronError&quot;: {&quot;type&quot;: &quot;SubnetNotFound&quot;, &quot;mes...&quot;Subnet None could not be found.&quot;, &quot;detail&quot;: &quot;&quot;}}&apos;, resp=&lt;Response [404]&gt;)
  267         error_body = self._convert_into_with_meta(des_error_body, resp)
  268         # Raise the appropriate exception
  269         exception_handler_v20(status_code, error_body)
  270 
  271     def do_request(self, method, action, body=None, headers=None, params=None):
global exception_handler_v20 = &lt;function exception_handler_v20&gt;
status_code = 404
error_body = {&apos;NeutronError&apos;: {&apos;type&apos;: &apos;SubnetNotFound&apos;, &apos;mes...&apos;Subnet None could not be found.&apos;, &apos;detail&apos;: &apos;&apos;}}

 /usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py in exception_handler_v20(status_code=404, error_content={&apos;NeutronError&apos;: {&apos;type&apos;: &apos;SubnetNotFound&apos;, &apos;mes...&apos;Subnet None could not be found.&apos;, &apos;detail&apos;: &apos;&apos;}})
   89         client_exc = exceptions.NeutronClientException
   90 
   91     raise client_exc(message=error_message,
   92                      status_code=status_code,
   93                      request_ids=request_ids)
client_exc = &lt;class &apos;neutronclient.common.exceptions.NotFound&apos;&gt;
message undefined
error_message = &apos;Subnet None could not be found.&apos;
status_code = 404
request_ids = [&apos;req-0980197d-b80e-4deb-90d2-232172975aa3&apos;]
NotFound: Subnet None could not be found.
Neutron server returns request_ids: [&apos;req-0980197d-b80e-4deb-90d2-232172975aa3&apos;]
    __cause__ = None
    __class__ = &lt;class &apos;neutronclient.common.exceptions.NotFound&apos;&gt;
    __context__ = None
    __delattr__ = &lt;method-wrapper &apos;__delattr__&apos; of NotFound object&gt;
    __dict__ = {&apos;_error_string&apos;: &quot;Subnet None could not be found.\nNeutron server r...ids: [&apos;req-0980197d-b80e-4deb-90d2-232172975aa3&apos;]&quot;, &apos;message&apos;: &quot;Subnet None could not be found.\nNeutron server r...ids: [&apos;req-0980197d-b80e-4deb-90d2-232172975aa3&apos;]&quot;, &apos;request_ids&apos;: [&apos;req-0980197d-b80e-4deb-90d2-232172975aa3&apos;], &apos;status_code&apos;: 404}
    __dir__ = &lt;built-in method __dir__ of NotFound object&gt;
    __doc__ = None
    __eq__ = &lt;method-wrapper &apos;__eq__&apos; of NotFound object&gt;
    __format__ = &lt;built-in method __format__ of NotFound object&gt;
    __ge__ = &lt;method-wrapper &apos;__ge__&apos; of NotFound object&gt;
    __getattribute__ = &lt;method-wrapper &apos;__getattribute__&apos; of NotFound object&gt;
    __gt__ = &lt;method-wrapper &apos;__gt__&apos; of NotFound object&gt;
    __hash__ = &lt;method-wrapper &apos;__hash__&apos; of NotFound object&gt;
    __init__ = &lt;bound method NeutronClientException.__init__ of NotFound()&gt;
    __init_subclass__ = &lt;built-in method __init_subclass__ of type object&gt;
    __le__ = &lt;method-wrapper &apos;__le__&apos; of NotFound object&gt;
    __lt__ = &lt;method-wrapper &apos;__lt__&apos; of NotFound object&gt;
    __module__ = &apos;neutronclient.common.exceptions&apos;
    __ne__ = &lt;method-wrapper &apos;__ne__&apos; of NotFound object&gt;
    __new__ = &lt;built-in method __new__ of type object&gt;
    __reduce__ = &lt;built-in method __reduce__ of NotFound object&gt;
    __reduce_ex__ = &lt;built-in method __reduce_ex__ of NotFound object&gt;
    __repr__ = &lt;method-wrapper &apos;__repr__&apos; of NotFound object&gt;
    __setattr__ = &lt;method-wrapper &apos;__setattr__&apos; of NotFound object&gt;
    __setstate__ = &lt;built-in method __setstate__ of NotFound object&gt;
    __sizeof__ = &lt;built-in method __sizeof__ of NotFound object&gt;
    __str__ = &lt;bound method NeutronException.__str__ of NotFound()&gt;
    __subclasshook__ = &lt;built-in method __subclasshook__ of type object&gt;
    __suppress_context__ = False
    __traceback__ = &lt;traceback object&gt;
    __weakref__ = None
    _error_string = &quot;Subnet None could not be found.\nNeutron server r...ids: [&apos;req-0980197d-b80e-4deb-90d2-232172975aa3&apos;]&quot;
    args = ()
    message = &quot;Subnet None could not be found.\nNeutron server r...ids: [&apos;req-0980197d-b80e-4deb-90d2-232172975aa3&apos;]&quot;
    req_ids_msg = &apos;Neutron server returns request_ids: %s&apos;
    request_ids = [&apos;req-0980197d-b80e-4deb-90d2-232172975aa3&apos;]
    status_code = 404
    with_traceback = &lt;built-in method with_traceback of NotFound object&gt;

The above is a description of an error in a Python program.  Here is
the original traceback:

Traceback (most recent call last):
  File &quot;/contrail-test/tcutils/wrappers.py&quot;, line 80, in wrapper
    result = function(self, *args, **kwargs)
  File &quot;/contrail-test/scripts/neutron/test_crud.py&quot;, line 603, in test_network_tags_crud
    c.replace_tag(&apos;networks&apos;, net_id, {&apos;tags&apos;: [&apos;a&apos;, &apos;b&apos;]})
  File &quot;/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py&quot;, line 2098, in replace_tag
    return self.put(self.tags_path % (resource_type, resource_id), body)
  File &quot;/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py&quot;, line 362, in put
    return self.retry_request(&quot;PUT&quot;, action, body=body,
  File &quot;/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py&quot;, line 330, in retry_request
    return self.do_request(method, action, body=body,
  File &quot;/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py&quot;, line 294, in do_request
    self._handle_fault_response(status_code, replybody, resp)
  File &quot;/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py&quot;, line 269, in _handle_fault_response
    exception_handler_v20(status_code, error_body)
  File &quot;/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py&quot;, line 91, in exception_handler_v20
    raise client_exc(message=error_message,
neutronclient.common.exceptions.NotFound: Subnet None could not be found.
Neutron server returns request_ids: [&apos;req-0980197d-b80e-4deb-90d2-232172975aa3&apos;]

</failure>

    </testcase>

    <testcase classname="scripts.neutron.test_crud.TestCRUD" name="test_router_crud[ci_sanity,dev_sanity_dpdk,sanity]" time="6.768" />

    <testcase classname="scripts.neutron.test_ports.TestPorts" name="test_ports_bindings[ci_sanity,dev_sanity_dpdk,sanity]" time="3.086" />

    <testcase classname="scripts.neutron.test_ports.TestPorts" name="test_ports_specific_subnet_ip[ci_sanity,dev_sanity_dpdk,sanity]" time="59.293" />

    <testcase classname="scripts.neutron.test_routers.TestRouters" name="test_basic_router_behavior[ci_sanity,dev_sanity_dpdk,sanity]" time="75.609" />

    <testcase classname="scripts.neutron.test_routers_basic.TestRoutersBasic" name="test_basic_snat_behavior_without_external_connectivity[ci_sanity,dev_sanity_dpdk,sanity,suite1]" time="61.940" />

    <testcase classname="scripts.policy.test_policy.TestBasicPolicyIpv4v6" name="test_basic_policy_allow_deny[cb_sanity,ci_contrail_go_kolla_ocata_sanity,ci_sanity,quick_sanity,sanity,suite1]" time="6.344">
      <skipped>Disabling v6 tests for CI</skipped>

    </testcase>

    <testcase classname="scripts.policy.test_policy.TestBasicPolicyNegativeIpv4v6" name="test_remove_policy_with_ref[ci_sanity,sanity]" time="5.060" />

    <testcase classname="scripts.policy.test_policy_basic.TestBasicPolicy" name="test_basic_policy_allow_deny[cb_sanity,ci_contrail_go_kolla_ocata_sanity,ci_sanity,quick_sanity,sanity,suite1]" time="66.858" />

    <testcase classname="scripts.routing_policy.test_routing_policy.TestRP" name="test_rp_interface[ci_sanity,sanity]" time="62.006" />

    <testcase classname="scripts.svc_firewall.test_svc_fw.TestSvcRegr" name="test_svc_in_network_datapath[ci_sanity]" time="129.457" />

    <testcase classname="scripts.vdns.test_vdns_basic.TestvDNSBasic0" name="test_vdns_ping_same_vn[ci_sanity,sanity,suite1]" time="95.297" />

    <testcase classname="scripts.vm_regression.test_vm.TestBasicVMVNx" name="test_vm_file_trf_scp_tests[ci_contrail_go_kolla_ocata_sanity,ci_sanity,quick_sanity,vrouter_gw]" time="64.740" />

    <testcase classname="scripts.vm_regression.test_vm_basic.TestBasicVMVN" name="test_generic_link_local_service[cb_sanity,ci_contrail_go_kolla_ocata_sanity,ci_sanity,dev_sanity_dpdk,sanity,suite1]" time="45.772" />

    <testcase classname="scripts.vm_regression.test_vm_basic.TestBasicVMVN" name="test_metadata_service[cb_sanity,ci_sanity,sanity,suite1]" time="46.609" />

    <testcase classname="scripts.vm_regression.test_vm_basic.TestBasicVMVN" name="test_ping_within_vn_two_vms_two_different_subnets[ci_contrail_go_kolla_ocata_sanity,ci_sanity,sanity,suite1]" time="91.074" />

  </testsuite>
  <testsuite errors="0" failures="0" id="1" name="" package="" skipped="3" tests="7" time="154.477">
    <testcase classname="serial_scripts.rbac.test_rbac.TestRbac" name="test_perms2_global_share[ci_sanity,sanity]" time="100.941" />

    <testcase classname="serial_scripts.rbac.test_rbac_basic.TestRbacBasic" name="test_perms2_owner[ci_sanity,sanity,suite1]" time="13.819" />

    <testcase classname="serial_scripts.rbac.test_rbac_basic.TestRbacBasic" name="test_rbac_acl_different_roles[ci_sanity,sanity,suite1]" time="13.224" />

    <testcase classname="scripts.analytics.test_analytics.AnalyticsTestSanity" name="test_contrail_status[cb_sanity,ci_sanity,dev_sanity_dpdk,sanity]" time="0.480" />

    <testcase classname="serial_scripts.sriov.test_sriov.TestSriov" name="test_communication_between_two_sriov_vm[ci_sanity]" time="0.003">
      <skipped>Skipped as test is not supported if sriov_cluster=False </skipped>

    </testcase>

    <testcase classname="serial_scripts.sriov.test_sriov.TestSriov" name="test_communication_between_two_sriov_vm_with_large_mtu[ci_sanity]" time="0.002">
      <skipped>Skipped as test is not supported if sriov_cluster=False </skipped>

    </testcase>

    <testcase classname="serial_scripts.sriov.test_sriov.TestSriov" name="test_virtual_function_exhaustion_and_resue[ci_sanity]" time="0.002">
      <skipped>Skipped as test is not supported if sriov_cluster=False </skipped>

    </testcase>

  </testsuite>
</testsuites>
