[Libvirt-cim] [PATCH] [TEST] Update FilterList tests and helper
Chip Vincent
cvincent at linux.vnet.ibm.com
Thu Feb 2 18:27:36 UTC 2012
+1 and pushed.
On 01/30/2012 06:59 PM, Eduardo Lima (Etrunko) wrote:
> From: "Eduardo Lima (Etrunko)"<eblima at br.ibm.com>
>
> According to recent changes in FilterList and FilterEntry providers.
>
> 03_create.py:
> - Creation and deletion of AppliedFilterList instance
> - Deletion of NestedFilterList instance
> - Deletion of FilterList instance
>
> helper.py:
> - Removed warning about Deprecated use of lxml functionality
> - New filter rule actions
> - Match protocol id
>
> Signed-off-by: Eduardo Lima (Etrunko)<eblima at br.ibm.com>
> ---
> suites/libvirt-cim/cimtest/FilterList/03_create.py | 35 +++++++++++++---
> suites/libvirt-cim/cimtest/FilterList/helper.py | 42 +++++++++++++++++---
> 2 files changed, 64 insertions(+), 13 deletions(-)
>
> diff --git a/suites/libvirt-cim/cimtest/FilterList/03_create.py b/suites/libvirt-cim/cimtest/FilterList/03_create.py
> index e828e92..551a01f 100644
> --- a/suites/libvirt-cim/cimtest/FilterList/03_create.py
> +++ b/suites/libvirt-cim/cimtest/FilterList/03_create.py
> @@ -38,6 +38,9 @@ from VirtLib.utils import run_remote
> sup_types = ["KVM",]
>
> domain = None
> +flist_name = None
> +nested_name = None
> +applied_name = None
>
> def get_filter_inst_and_inst_name(name):
> try:
> @@ -89,6 +92,7 @@ def create_filter_list(name):
>
> # A NestedFilterList instance will add the "clean-traffic" filter
> # as an entry of the newly created FilterList
> + global nested_name
> logger.info("Creating NestedFilterList instance")
> nested_name = test.CreateFilterListInstance(None, "KVM_NestedFilterList",
> {"Antecedent":flist_name,
> @@ -125,8 +129,11 @@ def get_nwport_inst_and_inst_name(domain_name):
>
> def cleanup():
> try:
> - # Destroy filter list
> - test.wbem.DeleteInstance(flist_name)
> + # Destroy filter list instances
> + for n in [applied_name, nested_name, flist_name]:
> + if n is not None:
> + logger.info("Deleting instance %s", n)
> + test.wbem.DeleteInstance(n)
> except Exception, e:
> logger.error("Error deleting filter list: %s", e)
>
> @@ -165,15 +172,29 @@ def main():
>
> # An AppliedFilterList Instance will apply the filter to the network
> # port of the defined domain
> - test.CreateFilterListInstance(None, "KVM_AppliedFilterList",
> - {"Antecedent":nwport_name,
> - "Dependent":flist_name})
> + global applied_name
> + logger.info ("Creating AppliedFilterList instance")
> + applied_name = test.CreateFilterListInstance(None, "KVM_AppliedFilterList",
> + {"Antecedent":nwport_name,
> + "Dependent":flist_name})
> + logger.info("Got AppliedFilterList name '%s'", applied_name)
> + #applied = test.GetInstance(applied_name)
> + #logger.info("Got AppliedFilterList '%s'", applied)
> +
> + # Check results
> + filterref = test.libvirt_applied_filter_lists(domain_name)[0]
> + rule = helper.FilterRule(filterref)
> + if rule.filter != test_flist:
> + raise Exception("AppliedFilterList name '%s' does not match expected '%s'",
> + rule.filter, test_flist)
> +
> + test.cim_applied_filter_lists(domain_name)
> + logger.info("AppliedFilterList created succesfully")
> + result = PASS
> except Exception, e:
> logger.error("Caught exception: %s", e)
> result = FAIL
>
> - # Check results
> -
> # Cleanup
> cleanup()
>
> diff --git a/suites/libvirt-cim/cimtest/FilterList/helper.py b/suites/libvirt-cim/cimtest/FilterList/helper.py
> index 9ae2f62..5202fa6 100644
> --- a/suites/libvirt-cim/cimtest/FilterList/helper.py
> +++ b/suites/libvirt-cim/cimtest/FilterList/helper.py
> @@ -252,7 +252,7 @@ class FilterListTest(BaseTestObject):
> d = {}
> for f in filters:
> root = self.libvirt_filter_dumpxml(f[0])
> - if not root:
> + if root is None:
> return None
>
> d[f] = root
> @@ -307,6 +307,22 @@ class FilterListTest(BaseTestObject):
>
> return self.Associators(_inst_name, result_class="CIM_FilterEntryBase")
> # cim_entries_in_filter_list
> +
> + def libvirt_applied_filter_lists(self, dom_name):
> + cmd = "virsh -q -c %s dumpxml %s 2>/dev/null" % (self.uri, dom_name)
> + ret, dom_xml = run_remote(self.server, cmd)
> + if ret:
> + logger.error("Error retrieving domain xml for %s", dom_name)
> + return None
> +
> + xdoc = etree.fromstring(dom_xml)
> + filter_list = xdoc.xpath("/domain/devices/interface/filterref")
> + return filter_list
> + # libvirt_applied_filter_lists
> +
> + def cim_applied_filter_lists(self, dom_name):
> + pass
> + # cim_applied_filter_lists
> # FilterListTest
>
>
> @@ -319,9 +335,17 @@ class FilterRule(object):
> __versions = {"ip" : "4",
> "ipv6": "6",}
>
> - __actions = {"accept" : "1",
> - "deny" : "2",
> - "drop" : "2",}
> + __actions = {"accept" : "1",
> + "deny" : "2",
> + "drop" : "2",
> + "reject" : "3",
> + "return" : "4",
> + "continue" : "5",}
> +
> + __protocolids = {"ipv4": "2048",
> + "arp" : "2054",
> + "rarp": "32821",
> + "ipv6": "34525",}
>
> __baserule_map = {"action" : "Action",
> "direction" : "Direction",
> @@ -394,7 +418,7 @@ class FilterRule(object):
>
> for e in element:
> self.__dict = dict(self.__dict, **e.attrib)
> - if not self.__type:
> + if self.__type is None:
> self.__type = e.tag
>
> try:
> @@ -415,6 +439,12 @@ class FilterRule(object):
> return self.__actions[self.__dict[key]]
> elif key == "type":
> return self.__type
> + elif key == "protocolid":
> + value = self.__dict[key]
> + try:
> + return self.__protocolids[value]
> + except KeyError:
> + return value
>
> try:
> return self.__dict[key]
> @@ -470,7 +500,7 @@ class FilterRule(object):
> # convert the property value to string
> prop = instance.properties[inst_key]
> val = self.__getattr__(key)
> - if val.startswith("0x"):
> + if isinstance(val, str) and val.startswith("0x"):
> inst_val = hex(int(prop.value))
> else:
> inst_val = str(prop.value)
--
Chip Vincent
Open Virtualization
IBM Linux Technology Center
cvincent at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list