[libvirt] [test-API][PATCH] Add network update test case

Guannan Ren gren at redhat.com
Mon Aug 12 05:27:20 UTC 2013


On 08/09/2013 05:28 PM, hongming zhang wrote:
> The patch add network update test case to cover network update api.
> modified: cases/basic_network.conf
> - The test suite covers add/modify/delete ip-dhcp-host in network. For other test
> scenario, they can be test via customing the conf file.
> new file: repos/network/update.py
> - So far the network update test case only checking when flag is live or current.
> new file: repos/network/xmls/ip-dhcp-host.xml
> - Create the ip-dhcp-host sample xml file for adding/deleting ip-dhcp-host
> new file: repos/network/xmls/modify-ip-dhcp-host.xml
> - Create the ip-dhcp-host sample xml file for modifying ip-dhcp-host
> Known bug:
> - Bug 985782 - Some flag values of method are missing in libvirt-python bindings
> ---
>   cases/basic_network.conf                   |   28 ++++++++++
>   repos/network/update.py                    |   82 ++++++++++++++++++++++++++++
>   repos/network/xmls/ip-dhcp-host.xml        |    1 +
>   repos/network/xmls/modify-ip-dhcp-host.xml |    1 +
>   4 files changed, 112 insertions(+), 0 deletions(-)
>   create mode 100644 repos/network/update.py
>   create mode 100644 repos/network/xmls/ip-dhcp-host.xml
>   create mode 100644 repos/network/xmls/modify-ip-dhcp-host.xml
>
> diff --git a/cases/basic_network.conf b/cases/basic_network.conf
> index 91d7f21..e9abd57 100644
> --- a/cases/basic_network.conf
> +++ b/cases/basic_network.conf
> @@ -32,6 +32,34 @@ network:autostart
>       autostart
>           enable
>   
> +network:update
> +    networkname
> +	$defaultnetname
> +    command
> +        add-first
> +    section
> +        ip-dhcp-host
> +
> +network:update
> +    networkname
> +	$defaultnetname
> +    command
> +        modify
> +    section
> +        ip-dhcp-host
> +    xml
> +	xmls/modify-ip-dhcp-host.xml
> +
> +network:update
> +    networkname
> +	$defaultnetname
> +    command
> +        delete
> +    section
> +        ip-dhcp-host
> +    xml
> +	xmls/modify-ip-dhcp-host.xml
> +
>   network:destroy
>       networkname
>           $defaultnetname
> diff --git a/repos/network/update.py b/repos/network/update.py
> new file mode 100644
> index 0000000..0024a5e
> --- /dev/null
> +++ b/repos/network/update.py
> @@ -0,0 +1,82 @@
> +#!/usr/bin/evn python
> +#Update a network
> +
> +import libvirt
> +from libvirt import libvirtError
> +from src import sharedmod
> +
> +COMMANDDICT = {"none":0, "modify":1, "delete":2, "add-first":4}
> +SECTIONDICT = {"none":0, "bridge":1, "domain":2, "ip":3, "ip-dhcp-host":4, \
> +               "ip-dhcp-range":5, "forward":6, "forward-interface":7,\
> +               "forward-pf":8, "portgroup":9, "dns-host":10, "dns-txt":11,\
> +               "dns-srv":12}
> +FLAGSDICT = {"current":0, "live":1, "config": 2}
> +
> +required_params = ('networkname', )
> +optional_params = {
> +                   'command': 'add-first',
> +                   'section': 'ip-dhcp-host',
> +                   'parentIndex': 0,
> +                   'xml': 'xmls/ip-dhcp-host.xml',
> +                   'flag': 'current',
> +                  }
> +
> +def update(params):
> +    """Update a network from xml"""
> +    global logger
> +    logger = params['logger']
> +    networkname = params['networkname']
> +    conn = sharedmod.libvirtobj['conn']
> +
> +    command = params['command']
> +    logger.info("The specified command is %s" % command)
> +    section = params['section']
> +    logger.info("The specified section is %s" % section)
> +    parentIndex = int(params.get('parentIndex', 0))
> +    logger.info("The specified parentIndex is %d" % parentIndex)
> +    xmlstr = params.get('xml', 'xmls/ip-dhcp-host.xml').replace('\"','\'')
> +    logger.info("The specified updatexml is %s" % xmlstr)
> +    flag = params.get('flag', 'current')
> +    logger.info("The specified flag is %s" % flag)
> +
> +    command_val = 0
> +    section_val = 0
> +    flag_val = 0
> +    if COMMANDDICT.has_key(command):
> +        command_val = COMMANDDICT.get(command)
> +    if SECTIONDICT.has_key(section):
> +        section_val = SECTIONDICT.get(section)
> +    if FLAGSDICT.has_key(flag):
> +        flag_val = FLAGSDICT.get(flag)
> +
> +    try:
> +        network = conn.networkLookupByName(networkname)
> +        logger.info("The original network xml is %s" % network.XMLDesc(0))
> +        network.update(command_val, section_val, parentIndex, xmlstr, \
> +                       flag_val)
> +        updated_netxml = network.XMLDesc(0)
> +        logger.info("The updated network xml is %s" % updated_netxml)
> +        #The check only works when flag isn't set as config
> +        if flag_val !=2:
> +            if command_val == 0 or command_val == 2:
> +                if xmlstr not in updated_netxml:
> +                    logger.info("Successfully update network")
> +                    return 0
> +                else:
> +                    logger.error("Failed to update network")
> +                    return 1
> +
> +            elif command_val == 1 or command_val == 4:
> +                if xmlstr in updated_netxml:
> +                    logger.info("Successfully update network")
> +                    return 0
> +                else:
> +                    logger.error("Failed to update network")
> +                    return 1
> +
> +    except libvirtError, e:
> +        logger.error("API error message: %s, error code is %s" \
> +                     % (e.message, e.get_error_code()))
> +        return 1
> +
> +    return 0
> diff --git a/repos/network/xmls/ip-dhcp-host.xml b/repos/network/xmls/ip-dhcp-host.xml
> new file mode 100644
> index 0000000..50e7908
> --- /dev/null
> +++ b/repos/network/xmls/ip-dhcp-host.xml
> @@ -0,0 +1 @@
> +<host mac="00:16:3e:77:e2:ed" name="foo.example.com" ip="192.168.122.10" />
> diff --git a/repos/network/xmls/modify-ip-dhcp-host.xml b/repos/network/xmls/modify-ip-dhcp-host.xml
> new file mode 100644
> index 0000000..a10e9fa
> --- /dev/null
> +++ b/repos/network/xmls/modify-ip-dhcp-host.xml
> @@ -0,0 +1 @@
> +<host mac="00:16:3e:77:e2:ed" name="beijing.redhat.com" ip="192.168.122.101" />

ACK, pushed.
Thanks

Guannan




More information about the libvir-list mailing list