Exemplo n.º 1
0
class OpenstackTestCase(TestCase):
    '''
    Test case for openstack
    '''
    PRIVATE_IPS = ['0.0.0.0', '1.1.1.1', '2.2.2.2']

    @patch('salt.cloud.clouds.openstack.show_instance',
           MagicMock(return_value={
               'state': True,
               'public_ips': [],
               'private_ips': PRIVATE_IPS
           }))
    @patch('salt.cloud.clouds.openstack.rackconnect',
           MagicMock(return_value=False))
    @patch('salt.cloud.clouds.openstack.managedcloud',
           MagicMock(return_value=False))
    @patch('salt.cloud.clouds.openstack.preferred_ip',
           _preferred_ip(PRIVATE_IPS, ['0.0.0.0']))
    @patch('salt.cloud.clouds.openstack.ssh_interface',
           MagicMock(return_value=False))
    def test_query_node_data_filter_preferred_ip_addresses(self):
        '''
        Test if query node data is filtering out unpreferred IP addresses.
        '''
        openstack.NodeState = MagicMock()  # pylint: disable=blacklisted-unmocked-patching
        openstack.NodeState.RUNNING = True

        vm = {'name': None}
        data = MagicMock()
        data.public_ips = []

        with patch('salt.utils.cloud.is_public_ip',
                   MagicMock(return_value=True)):
            assert openstack._query_node_data(
                vm, data, False, MagicMock()).public_ips == ['0.0.0.0']
Exemplo n.º 2
0
class NovaTestCase(TestCase):
    '''
    Test case for openstack
    '''
    PRIVATE_IPS = ['0.0.0.0', '1.1.1.1', '2.2.2.2']

    @patch('salt.cloud.clouds.nova.show_instance',
           MagicMock(return_value={'state': 'ACTIVE',
                                   'public_ips': [],
                                   'addresses': [],
                                   'private_ips': PRIVATE_IPS}))
    @patch('salt.cloud.clouds.nova.rackconnect', MagicMock(return_value=False))
    @patch('salt.cloud.clouds.nova.rackconnectv3', MagicMock(return_value={'mynet': ['1.1.1.1']}))
    @patch('salt.cloud.clouds.nova.cloudnetwork', MagicMock(return_value=False))
    @patch('salt.cloud.clouds.nova.managedcloud', MagicMock(return_value=False))
    @patch('salt.cloud.clouds.nova.preferred_ip', _preferred_ip(PRIVATE_IPS, ['0.0.0.0']))
    @patch('salt.cloud.clouds.nova.ssh_interface', MagicMock(return_value='public_ips'))
    def test_query_node_data_filter_preferred_ip_addresses(self):
        '''
        Test if query node data is filtering out unpreferred IP addresses.
        '''
        vm = {'name': None}
        data = MagicMock()
        data.public_ips = []

        assert nova._query_node_data(vm, data, MagicMock()).public_ips == ['0.0.0.0']
Exemplo n.º 3
0
    def test_query_node_data_filter_preferred_ip_addresses(self):
        """
        Test if query node data is filtering out unpreferred IP addresses.
        """
        zero_ip = "0.0.0.0"
        private_ips = [zero_ip, "1.1.1.1", "2.2.2.2"]
        vm = {"name": None}
        data = MagicMock()
        data.public_ips = []
        # pylint: disable=blacklisted-unmocked-patching
        dimensiondata.NodeState = MagicMock()
        # pylint: enable=blacklisted-unmocked-patching
        dimensiondata.NodeState.RUNNING = True

        with patch(
                "salt.cloud.clouds.dimensiondata.show_instance",
                MagicMock(
                    return_value={
                        "state": True,
                        "name": "foo",
                        "public_ips": [],
                        "private_ips": private_ips,
                    }),
        ):
            with patch(
                    "salt.cloud.clouds.dimensiondata.preferred_ip",
                    _preferred_ip(private_ips, [zero_ip]),
            ):
                with patch(
                        "salt.cloud.clouds.dimensiondata.ssh_interface",
                        MagicMock(return_value="private_ips"),
                ):
                    self.assertEqual(
                        dimensiondata._query_node_data(vm, data).public_ips,
                        [zero_ip])
Exemplo n.º 4
0
    def test_query_node_data_filter_preferred_ip_addresses(self):
        '''
        Test if query node data is filtering out unpreferred IP addresses.
        '''
        zero_ip = '0.0.0.0'
        private_ips = [zero_ip, '1.1.1.1', '2.2.2.2']
        vm = {'name': None}
        data = MagicMock()
        data.public_ips = []
        dimensiondata.NodeState = MagicMock()  # pylint: disable=blacklisted-unmocked-patching
        dimensiondata.NodeState.RUNNING = True

        with patch(
                'salt.cloud.clouds.dimensiondata.show_instance',
                MagicMock(
                    return_value={
                        'state': True,
                        'name': 'foo',
                        'public_ips': [],
                        'private_ips': private_ips
                    })):
            with patch('salt.cloud.clouds.dimensiondata.preferred_ip',
                       _preferred_ip(private_ips, [zero_ip])):
                with patch('salt.cloud.clouds.dimensiondata.ssh_interface',
                           MagicMock(return_value='private_ips')):
                    self.assertEqual(
                        dimensiondata._query_node_data(vm, data).public_ips,
                        [zero_ip])
class DimensionDataTestCase(ExtendedTestCase):
    '''
    Unit TestCase for salt.cloud.clouds.dimensiondata module.
    '''

    def test_avail_images_call(self):
        '''
        Tests that a SaltCloudSystemExit is raised when trying to call avail_images
        with --action or -a.
        '''
        self.assertRaises(
            SaltCloudSystemExit,
            dimensiondata.avail_images,
            call='action'
        )

    def test_avail_locations_call(self):
        '''
        Tests that a SaltCloudSystemExit is raised when trying to call avail_locations
        with --action or -a.
        '''
        self.assertRaises(
            SaltCloudSystemExit,
            dimensiondata.avail_locations,
            call='action'
        )

    def test_avail_sizes_call(self):
        '''
        Tests that a SaltCloudSystemExit is raised when trying to call avail_sizes
        with --action or -a.
        '''
        self.assertRaises(
            SaltCloudSystemExit,
            dimensiondata.avail_sizes,
            call='action'
        )

    def test_list_nodes_call(self):
        '''
        Tests that a SaltCloudSystemExit is raised when trying to call list_nodes
        with --action or -a.
        '''
        self.assertRaises(
            SaltCloudSystemExit,
            dimensiondata.list_nodes,
            call='action'
        )

    def test_destroy_call(self):
        '''
        Tests that a SaltCloudSystemExit is raised when trying to call destroy
        with --function or -f.
        '''
        self.assertRaises(
            SaltCloudSystemExit,
            dimensiondata.destroy,
            name=VM_NAME,
            call='function'
        )

    @skipIf(HAS_LIBCLOUD is False, "Install 'libcloud' to be able to run this unit test.")
    def test_avail_sizes(self):
        '''
        Tests that avail_sizes returns an empty dictionary.
        '''
        sizes = dimensiondata.avail_sizes(call='foo')
        self.assertEqual(
            len(sizes),
            1
        )
        self.assertEqual(
            sizes['default']['name'],
            'default'
        )

    def test_import(self):
        """
        Test that the module picks up installed deps
        """
        with patch('salt.config.check_driver_dependencies', return_value=True) as p:
            get_deps = dimensiondata.get_dependencies()
            self.assertEqual(get_deps, True)
            if LooseVersion(mock.__version__) >= LooseVersion('2.0.0'):
                p.assert_called_once()

    def test_provider_matches(self):
        """
        Test that the first configured instance of a dimensiondata driver is matched
        """
        p = dimensiondata.get_configured_provider()
        self.assertNotEqual(p, None)

    PRIVATE_IPS = ['0.0.0.0', '1.1.1.1', '2.2.2.2']

    @patch('salt.cloud.clouds.dimensiondata.show_instance',
           MagicMock(return_value={'state': True,
                                   'name': 'foo',
                                   'public_ips': [],
                                   'private_ips': PRIVATE_IPS}))
    @patch('salt.cloud.clouds.dimensiondata.preferred_ip', _preferred_ip(PRIVATE_IPS, ['0.0.0.0']))
    @patch('salt.cloud.clouds.dimensiondata.ssh_interface', MagicMock(return_value='private_ips'))
    def test_query_node_data_filter_preferred_ip_addresses(self):
        '''
        Test if query node data is filtering out unpreferred IP addresses.
        '''
        dimensiondata.NodeState = MagicMock()
        dimensiondata.NodeState.RUNNING = True
        dimensiondata.__opts__ = {}

        vm = {'name': None}
        data = MagicMock()
        data.public_ips = []

        assert dimensiondata._query_node_data(vm, data).public_ips == ['0.0.0.0']