示例#1
0
文件: test_virt.py 项目: veym4os/salt
    def test_network_running(self):
        '''
        network_running state test cases.
        '''
        ret = {'name': 'mynet', 'changes': {}, 'result': True, 'comment': ''}
        define_mock = MagicMock(return_value=True)
        with patch.dict(virt.__salt__, {  # pylint: disable=no-member
                    'virt.network_info': MagicMock(return_value={}),
                    'virt.network_define': define_mock
                }):
            ret.update({'changes': {'mynet': 'Network defined and started'},
                        'comment': 'Network mynet defined and started'})
            self.assertDictEqual(virt.network_running('mynet',
                                                      'br2',
                                                      'bridge',
                                                      vport='openvswitch',
                                                      tag=180,
                                                      autostart=False,
                                                      connection='myconnection',
                                                      username='******',
                                                      password='******'), ret)
            define_mock.assert_called_with('mynet',
                                           'br2',
                                           'bridge',
                                           vport='openvswitch',
                                           tag=180,
                                           autostart=False,
                                           start=True,
                                           connection='myconnection',
                                           username='******',
                                           password='******')

        with patch.dict(virt.__salt__, {  # pylint: disable=no-member
                    'virt.network_info': MagicMock(return_value={'mynet': {'active': True}}),
                    'virt.network_define': define_mock,
                }):
            ret.update({'changes': {}, 'comment': 'Network mynet exists and is running'})
            self.assertDictEqual(virt.network_running('mynet', 'br2', 'bridge'), ret)

        start_mock = MagicMock(return_value=True)
        with patch.dict(virt.__salt__, {  # pylint: disable=no-member
                    'virt.network_info': MagicMock(return_value={'mynet': {'active': False}}),
                    'virt.network_start': start_mock,
                    'virt.network_define': define_mock,
                }):
            ret.update({'changes': {'mynet': 'Network started'}, 'comment': 'Network mynet started'})
            self.assertDictEqual(virt.network_running('mynet',
                                                      'br2',
                                                      'bridge',
                                                      connection='myconnection',
                                                      username='******',
                                                      password='******'), ret)
            start_mock.assert_called_with('mynet', connection='myconnection', username='******', password='******')

        with patch.dict(virt.__salt__, {  # pylint: disable=no-member
                    'virt.network_info': MagicMock(return_value={}),
                    'virt.network_define': MagicMock(side_effect=self.mock_libvirt.libvirtError('Some error'))
                }):
            ret.update({'changes': {}, 'comment': 'Some error', 'result': False})
            self.assertDictEqual(virt.network_running('mynet', 'br2', 'bridge'), ret)
示例#2
0
def test_network_running_nochange(test):
    """
    network_running state test cases, no change case case.
    """
    with patch.dict(virt.__opts__, {"test": test}):
        define_mock = MagicMock(return_value=True)
        update_mock = MagicMock(return_value=False)
        with patch.dict(
                virt.__salt__,
            {
                "virt.network_info":
                MagicMock(return_value={
                    "mynet": {
                        "active": True,
                        "autostart": True
                    }
                }),
                "virt.network_define":
                define_mock,
                "virt.network_update":
                update_mock,
            },
        ):
            assert virt.network_running("mynet", "br2", "bridge") == {
                "name": "mynet",
                "changes": {},
                "comment": "Network mynet unchanged and is running",
                "result": None if test else True,
            }
            assert update_mock.call_args_list == [
                network_update_call("mynet", "br2", "bridge", test=True)
            ]
示例#3
0
def test_network_running_stopped(test):
    """
    network_running state test cases, network stopped case.
    """
    with patch.dict(virt.__opts__, {"test": test}):
        define_mock = MagicMock(return_value=True)
        start_mock = MagicMock(return_value=True)
        update_mock = MagicMock(return_value=False)
        with patch.dict(
            virt.__salt__,
            {  # pylint: disable=no-member
                "virt.network_info": MagicMock(
                    return_value={"mynet": {"active": False, "autostart": True}}
                ),
                "virt.network_start": start_mock,
                "virt.network_define": define_mock,
                "virt.network_update": update_mock,
            },
        ):
            assert virt.network_running(
                "mynet",
                "br2",
                "bridge",
                connection="myconnection",
                username="******",
                password="******",
            ) == {
                "name": "mynet",
                "changes": {
                    "mynet": "Network started"
                },
                "comment": "Network mynet unchanged and started",
                "result": None if test else True,
            }
            assert update_mock.call_args_list == [
                network_update_call(
                    "mynet",
                    "br2",
                    "bridge",
                    connection="myconnection",
                    username="******",
                    password="******",
                    test=True,
                )
            ]
            if not test:
                start_mock.assert_called_with(
                    "mynet",
                    connection="myconnection",
                    username="******",
                    password="******",
                )
            else:
                start_mock.assert_not_called()
示例#4
0
def test_network_running_error(test):
    """
    network_running state test cases, libvirt error case.
    """
    with patch.dict(virt.__opts__, {"test": test}):
        with patch.dict(
                virt.__salt__,
            {
                "virt.network_info":
                MagicMock(side_effect=virt.libvirt.libvirtError("Some error")),
            },
        ):
            assert virt.network_running("mynet", "br2", "bridge") == {
                "name": "mynet",
                "changes": {},
                "comment": "Some error",
                "result": False,
            }
示例#5
0
def test_network_running_not_existing(test):
    """
    network_running state test cases, non-existing network case.
    """
    with patch.dict(virt.__opts__, {"test": test}):
        define_mock = MagicMock(return_value=True)
        start_mock = MagicMock(return_value=True)
        # Non-existing network case
        with patch.dict(
                virt.__salt__,
            {
                "virt.network_info":
                MagicMock(side_effect=[{}, {
                    "mynet": {
                        "active": False
                    }
                }]),
                "virt.network_define":
                define_mock,
                "virt.network_start":
                start_mock,
            },
        ):
            assert virt.network_running(
                "mynet",
                "br2",
                "bridge",
                vport="openvswitch",
                tag=180,
                ipv4_config={
                    "cidr":
                    "192.168.2.0/24",
                    "dhcp_ranges": [
                        {
                            "start": "192.168.2.10",
                            "end": "192.168.2.25"
                        },
                        {
                            "start": "192.168.2.110",
                            "end": "192.168.2.125"
                        },
                    ],
                },
                ipv6_config={
                    "cidr":
                    "2001:db8:ca2:2::1/64",
                    "dhcp_ranges": [
                        {
                            "start": "2001:db8:ca2:1::10",
                            "end": "2001:db8:ca2::1f"
                        },
                    ],
                },
                mtu=9000,
                domain={"name": "acme.lab"},
                nat={"ports": {
                    "start": 1024,
                    "end": 2048
                }},
                interfaces="eth0 eth1",
                addresses="0000:01:02.4 0000:01:02.5",
                physical_function="eth4",
                dns={
                    "hosts": {
                        "192.168.2.10": {
                            "name": "web",
                            "mac": "de:ad:be:ef:00:00"
                        }
                    }
                },
                autostart=False,
                connection="myconnection",
                username="******",
                password="******",
            ) == {
                "name": "mynet",
                "changes": {
                    "mynet": "Network defined and started"
                },
                "comment": "Network mynet defined and started",
                "result": None if test else True,
            }
            if not test:
                define_mock.assert_called_with(
                    "mynet",
                    "br2",
                    "bridge",
                    vport="openvswitch",
                    tag=180,
                    autostart=False,
                    start=False,
                    ipv4_config={
                        "cidr":
                        "192.168.2.0/24",
                        "dhcp_ranges": [
                            {
                                "start": "192.168.2.10",
                                "end": "192.168.2.25"
                            },
                            {
                                "start": "192.168.2.110",
                                "end": "192.168.2.125"
                            },
                        ],
                    },
                    ipv6_config={
                        "cidr":
                        "2001:db8:ca2:2::1/64",
                        "dhcp_ranges": [
                            {
                                "start": "2001:db8:ca2:1::10",
                                "end": "2001:db8:ca2::1f"
                            },
                        ],
                    },
                    mtu=9000,
                    domain={"name": "acme.lab"},
                    nat={"ports": {
                        "start": 1024,
                        "end": 2048
                    }},
                    interfaces="eth0 eth1",
                    addresses="0000:01:02.4 0000:01:02.5",
                    physical_function="eth4",
                    dns={
                        "hosts": {
                            "192.168.2.10": {
                                "name": "web",
                                "mac": "de:ad:be:ef:00:00"
                            }
                        }
                    },
                    connection="myconnection",
                    username="******",
                    password="******",
                )
                start_mock.assert_called_with(
                    "mynet",
                    connection="myconnection",
                    username="******",
                    password="******",
                )
            else:
                define_mock.assert_not_called()
                start_mock.assert_not_called()