[Kimchi-devel] [PATCH] [Kimchi 1/2] Update mockmodel to have one more NIC available

Aline Manera alinefm at linux.vnet.ibm.com
Tue Apr 26 17:43:41 UTC 2016



On 04/25/2016 05:10 PM, Lucio Correia wrote:
> Signed-off-by: Lucio Correia <luciojhc at linux.vnet.ibm.com>
> ---
>   mockmodel.py | 41 ++++++++++++++++++++++++++++++++++++++++-
>   1 file changed, 40 insertions(+), 1 deletion(-)
>
> diff --git a/mockmodel.py b/mockmodel.py
> index 142e81f..ae5cbc1 100644
> --- a/mockmodel.py
> +++ b/mockmodel.py
> @@ -26,21 +26,25 @@ from collections import defaultdict
>   from lxml import objectify
>   from lxml.builder import E
>
> -from wok.exception import NotFoundError, OperationFailed
> +from wok.exception import InvalidParameter, NotFoundError, OperationFailed
>   from wok.objectstore import ObjectStore
>   from wok.utils import add_task
>   from wok.xmlutils.utils import xml_item_update
>
>   from wok.plugins.kimchi import imageinfo
> +from wok.plugins.kimchi import netinfo
>   from wok.plugins.kimchi import osinfo
>   from wok.plugins.kimchi.model import cpuinfo
>   from wok.plugins.kimchi.model.groups import PAMGroupsModel
>   from wok.plugins.kimchi.model.host import DeviceModel
>   from wok.plugins.kimchi.model.host import DevicesModel
> +from wok.plugins.kimchi.model.interfaces import InterfaceModel
> +from wok.plugins.kimchi.model.interfaces import InterfacesModel
>   from wok.plugins.kimchi.model.libvirtstoragepool import IscsiPoolDef
>   from wok.plugins.kimchi.model.libvirtstoragepool import NetfsPoolDef
>   from wok.plugins.kimchi.model.libvirtstoragepool import StoragePoolDef
>   from wok.plugins.kimchi.model.model import Model
> +from wok.plugins.kimchi.model.networks import NetworksModel
>   from wok.plugins.kimchi.model.storagepools import StoragePoolModel
>   from wok.plugins.kimchi.model.storagepools import StoragePoolsModel
>   from wok.plugins.kimchi.model.storagevolumes import StorageVolumeModel
> @@ -123,6 +127,11 @@ class MockModel(Model):
>           DeviceModel.is_device_3D_controller = \
>               self._mock_device_is_device_3D_controller
>           DevicesModel.get_list = self._mock_devices_get_list
> +        InterfacesModel.get_list = self._mock_interfaces_get_list
> +        InterfaceModel.lookup = self._mock_interface_lookup
> +        NetworksModel._set_network_vepa = self.networks_set_network_vepa
> +        self.networks = NetworksModel(conn=self.conn,
> +                                      objstore_loc=objstore_loc)
>           StoragePoolsModel._check_lvm = self._check_lvm
>           StoragePoolModel._update_lvm_disks = self._update_lvm_disks
>           StoragePoolModel._pool_used_by_template = self._pool_used_by_template
> @@ -350,6 +359,36 @@ class MockModel(Model):
>       def _mock_device_lookup(self, dev_name):
>           return self._mock_devices.devices[dev_name]
>
> +    def _mock_interfaces_get_list(self):

> +        return list(set(netinfo.all_favored_interfaces()) -
> +                    set(self.networks.get_all_networks_interfaces())) + \
> +                    ['eth-mock0']
> +
> +    def _mock_interface_lookup(self, name):
> +        if name == 'eth-mock0':
> +            return {'name': "eth-mock0",
> +                    'type': "nic",
> +                    'status': "active",
> +                    'link_detected': "yes",
> +                    'ipaddr': "",
> +                    'netmask': ""}
> +
> +        try:
> +            return netinfo.get_interface_info(name)
> +        except ValueError:
> +            raise NotFoundError("KCHIFACE0001E", {'name': name})
> +

As it is a mock test, you don't need to rely on real information, ie, 
you don't need to use netinfo, for example.
You can use hardcoded values to return it. Similar to what we have for 
MockDevices and MockPartitions.

> +    def networks_set_network_vepa(self, params):
> +        for iface in params['interfaces']:
> +            if iface == 'eth-mock0':
> +                continue
> +
> +            if ('vlan_id' in params or not (netinfo.is_bare_nic(iface) or
> +               netinfo.is_bonding(iface))):
> +                raise InvalidParameter('KCHNET0028E', {'name': iface})
> +
> +        params['forward'] = {'mode': 'vepa', 'devs': params['interfaces']}
> +
>       def _mock_partitions_get_list(self):
>           return self._mock_partitions.partitions.keys()
>




More information about the Kimchi-devel mailing list