Esempio n. 1
0
    def test_bootstrap(self):
        '''
        Test for Create an image for a specific platform.
        '''
        mock = MagicMock(return_value=False)
        with patch.dict(genesis.__salt__, {'file.directory_exists': mock}):
            mock = MagicMock(side_effect=Exception('foo'))
            with patch.dict(genesis.__salt__, {'file.mkdir': mock}):
                self.assertEqual(genesis.bootstrap('platform', 'root'),
                                 {'Error': "Exception('foo',)"})

        with patch.object(genesis, '_bootstrap_yum', return_value='A'):
            with patch.dict(genesis.__salt__, {'mount.umount': MagicMock(),
                                               'file.rmdir': MagicMock()}):
                self.assertEqual(genesis.bootstrap('rpm', 'root', 'dir1'), None)

        with patch.object(genesis, '_bootstrap_deb', return_value='A'):
            with patch.dict(genesis.__salt__, {'mount.umount': MagicMock(),
                                               'file.rmdir': MagicMock()}):
                self.assertEqual(genesis.bootstrap('deb', 'root', 'dir1'), None)

        with patch.object(genesis, '_bootstrap_pacman', return_value='A') as pacman_patch:
            with patch.dict(genesis.__salt__, {'mount.umount': MagicMock(return_value=True)}):
                with patch.dict(genesis.__salt__, {'file.rmdir': MagicMock(return_value=True)}):
                    genesis.bootstrap('pacman', 'root', 'dir1')
                    pacman_patch.assert_called_with('root', img_format='dir1', exclude_pkgs=[], pkgs=[])
Esempio n. 2
0
    def test_bootstrap(self):
        '''
        Test for Create an image for a specific platform.
        '''
        mock = MagicMock(return_value=False)
        with patch.dict(genesis.__salt__, {'file.directory_exists': mock}):
            mock = MagicMock(side_effect=Exception('foo'))
            with patch.dict(genesis.__salt__, {'file.mkdir': mock}):
                self.assertEqual(genesis.bootstrap('platform', 'root'),
                                 {'Error': "Exception('foo',)"})

        with patch.object(genesis, '_bootstrap_yum', return_value='A'):
            with patch.dict(genesis.__salt__, {'mount.umount': MagicMock(),
                                               'file.rmdir': MagicMock(),
                                               'file.directory_exists': MagicMock()}):
                with patch.dict(genesis.__salt__, {'disk.blkid': MagicMock(return_value={})}):
                    self.assertEqual(genesis.bootstrap('rpm', 'root', 'dir'), None)

        with patch.object(genesis, '_bootstrap_deb', return_value='A'):
            with patch.dict(genesis.__salt__, {'mount.umount': MagicMock(),
                                               'file.rmdir': MagicMock(),
                                               'file.directory_exists': MagicMock()}):
                with patch.dict(genesis.__salt__, {'disk.blkid': MagicMock(return_value={})}):
                    self.assertEqual(genesis.bootstrap('deb', 'root', 'dir'), None)

        with patch.object(genesis, '_bootstrap_pacman', return_value='A') as pacman_patch:
            with patch.dict(genesis.__salt__, {'mount.umount': MagicMock(),
                                               'file.rmdir': MagicMock(),
                                               'file.directory_exists': MagicMock(),
                                               'disk.blkid': MagicMock(return_value={})}):
                genesis.bootstrap('pacman', 'root', 'dir')
                pacman_patch.assert_called_with('root', img_format='dir', exclude_pkgs=[], pkgs=[])
Esempio n. 3
0
    def test_bootstrap(self):
        '''
        Test for Create an image for a specific platform.
        '''
        mock = MagicMock(return_value=False)
        with patch.dict(genesis.__salt__, {'file.directory_exists': mock}):
            mock = MagicMock(side_effect=Exception('foo'))
            with patch.dict(genesis.__salt__, {'file.mkdir': mock}):
                self.assertEqual(genesis.bootstrap('platform', 'root'),
                                 {'Error': "Exception('foo',)"})

        with patch.object(genesis, '_bootstrap_yum', return_value='A'):
            self.assertEqual(genesis.bootstrap('rpm', 'root', 'dir1'), 'A')

        with patch.object(genesis, '_bootstrap_deb', return_value='A'):
            self.assertEqual(genesis.bootstrap('deb', 'root', 'dir1'), 'A')

        with patch.object(genesis, '_bootstrap_pacman', return_value='A'):
            self.assertEqual(genesis.bootstrap('pacman', 'root', 'dir1'), 'A')
Esempio n. 4
0
    def test_bootstrap(self):
        """
        Test for Create an image for a specific platform.
        """
        # Changed in 3.7.0 pformat no longer includes the comma
        if sys.version_info >= (3, 7):
            exception_string = "Exception({})".format(repr("foo"))
        else:
            exception_string = "Exception({},)".format(repr("foo"))
        mock = MagicMock(return_value=False)
        with patch.dict(genesis.__salt__, {"file.directory_exists": mock}):
            mock = MagicMock(side_effect=Exception("foo"))
            with patch.dict(genesis.__salt__, {"file.mkdir": mock}):
                self.assertEqual(genesis.bootstrap("platform", "root"),
                                 {"Error": exception_string})

        with patch.object(genesis, "_bootstrap_yum", return_value="A"):
            with patch.dict(
                    genesis.__salt__,
                {
                    "mount.umount": MagicMock(),
                    "file.rmdir": MagicMock(),
                    "file.directory_exists": MagicMock(),
                },
            ):
                with patch.dict(genesis.__salt__,
                                {"disk.blkid": MagicMock(return_value={})}):
                    self.assertEqual(genesis.bootstrap("rpm", "root", "dir"),
                                     None)

        common_parms = {
            "platform": "deb",
            "root": "root",
            "img_format": "dir",
            "arch": "amd64",
            "flavor": "stable",
            "static_qemu": "qemu",
        }

        param_sets = [
            {
                "params": {},
                "cmd": [
                    "debootstrap",
                    "--foreign",
                    "--arch",
                    "amd64",
                    "stable",
                    "root",
                    "http://ftp.debian.org/debian/",
                ],
            },
            {
                "params": {
                    "pkgs": "vim"
                },
                "cmd": [
                    "debootstrap",
                    "--foreign",
                    "--arch",
                    "amd64",
                    "--include",
                    "vim",
                    "stable",
                    "root",
                    "http://ftp.debian.org/debian/",
                ],
            },
            {
                "params": {
                    "pkgs": "vim,emacs"
                },
                "cmd": [
                    "debootstrap",
                    "--foreign",
                    "--arch",
                    "amd64",
                    "--include",
                    "vim,emacs",
                    "stable",
                    "root",
                    "http://ftp.debian.org/debian/",
                ],
            },
            {
                "params": {
                    "pkgs": ["vim", "emacs"]
                },
                "cmd": [
                    "debootstrap",
                    "--foreign",
                    "--arch",
                    "amd64",
                    "--include",
                    "vim,emacs",
                    "stable",
                    "root",
                    "http://ftp.debian.org/debian/",
                ],
            },
            {
                "params": {
                    "pkgs": ["vim", "emacs"],
                    "exclude_pkgs": ["vim", "foo"]
                },
                "cmd": [
                    "debootstrap",
                    "--foreign",
                    "--arch",
                    "amd64",
                    "--include",
                    "vim,emacs",
                    "--exclude",
                    "vim,foo",
                    "stable",
                    "root",
                    "http://ftp.debian.org/debian/",
                ],
            },
        ]

        for param_set in param_sets:

            with patch.dict(
                    genesis.__salt__,
                {
                    "mount.umount": MagicMock(),
                    "file.rmdir": MagicMock(),
                    "file.directory_exists": MagicMock(),
                    "cmd.run": MagicMock(),
                    "disk.blkid": MagicMock(return_value={}),
                },
            ):
                with patch("salt.modules.genesis.salt.utils.path.which",
                           return_value=True):
                    with patch(
                            "salt.modules.genesis.salt.utils.validate.path.is_executable",
                            return_value=True,
                    ):
                        param_set["params"].update(common_parms)
                        self.assertEqual(
                            genesis.bootstrap(**param_set["params"]), None)
                        genesis.__salt__["cmd.run"].assert_any_call(
                            param_set["cmd"], python_shell=False)

        with patch.object(genesis, "_bootstrap_pacman",
                          return_value="A") as pacman_patch:
            with patch.dict(
                    genesis.__salt__,
                {
                    "mount.umount": MagicMock(),
                    "file.rmdir": MagicMock(),
                    "file.directory_exists": MagicMock(),
                    "disk.blkid": MagicMock(return_value={}),
                },
            ):
                genesis.bootstrap("pacman", "root", "dir")
                pacman_patch.assert_called_with("root",
                                                img_format="dir",
                                                exclude_pkgs=[],
                                                pkgs=[])
Esempio n. 5
0
    def test_bootstrap(self):
        '''
        Test for Create an image for a specific platform.
        '''
        # Changed in 3.7.0 pformat no longer includes the comma
        if sys.version_info >= (3, 7):
            exception_string = 'Exception({0})'.format(repr('foo'))
        else:
            exception_string = 'Exception({0},)'.format(repr('foo'))
        mock = MagicMock(return_value=False)
        with patch.dict(genesis.__salt__, {'file.directory_exists': mock}):
            mock = MagicMock(side_effect=Exception('foo'))
            with patch.dict(genesis.__salt__, {'file.mkdir': mock}):
                self.assertEqual(genesis.bootstrap('platform', 'root'),
                                 {'Error': exception_string})

        with patch.object(genesis, '_bootstrap_yum', return_value='A'):
            with patch.dict(genesis.__salt__, {'mount.umount': MagicMock(),
                                               'file.rmdir': MagicMock(),
                                               'file.directory_exists': MagicMock()}):
                with patch.dict(genesis.__salt__, {'disk.blkid': MagicMock(return_value={})}):
                    self.assertEqual(genesis.bootstrap('rpm', 'root', 'dir'), None)

        common_parms = {'platform': 'deb',
                        'root': 'root',
                        'img_format': 'dir',
                        'arch': 'amd64',
                        'flavor': 'stable',
                        'static_qemu': 'qemu'}

        param_sets = [

            {'params': {},
             'cmd': ['debootstrap', '--foreign', '--arch', 'amd64',
                     'stable', 'root', 'http://ftp.debian.org/debian/']
             },

            {'params': {'pkgs': 'vim'},
             'cmd': ['debootstrap', '--foreign', '--arch', 'amd64',
                     '--include', 'vim',
                     'stable', 'root', 'http://ftp.debian.org/debian/']
             },

            {'params': {'pkgs': 'vim,emacs'},
             'cmd': ['debootstrap', '--foreign', '--arch', 'amd64',
                     '--include', 'vim,emacs',
                     'stable', 'root', 'http://ftp.debian.org/debian/']
             },

            {'params': {'pkgs': ['vim', 'emacs']},
             'cmd': ['debootstrap', '--foreign', '--arch', 'amd64',
                     '--include', 'vim,emacs',
                     'stable', 'root', 'http://ftp.debian.org/debian/']
             },

            {'params': {'pkgs': ['vim', 'emacs'], 'exclude_pkgs': ['vim', 'foo']},
             'cmd': ['debootstrap', '--foreign', '--arch', 'amd64',
                     '--include', 'vim,emacs', '--exclude', 'vim,foo',
                     'stable', 'root', 'http://ftp.debian.org/debian/']
             },

        ]

        for param_set in param_sets:

            with patch.dict(genesis.__salt__, {'mount.umount': MagicMock(),
                                               'file.rmdir': MagicMock(),
                                               'file.directory_exists': MagicMock(),
                                               'cmd.run': MagicMock(),
                                               'disk.blkid': MagicMock(return_value={})}):
                with patch('salt.modules.genesis.salt.utils.path.which', return_value=True):
                    with patch('salt.modules.genesis.salt.utils.validate.path.is_executable',
                               return_value=True):
                        param_set['params'].update(common_parms)
                        self.assertEqual(genesis.bootstrap(**param_set['params']), None)
                        genesis.__salt__['cmd.run'].assert_any_call(param_set['cmd'], python_shell=False)

        with patch.object(genesis, '_bootstrap_pacman', return_value='A') as pacman_patch:
            with patch.dict(genesis.__salt__, {'mount.umount': MagicMock(),
                                               'file.rmdir': MagicMock(),
                                               'file.directory_exists': MagicMock(),
                                               'disk.blkid': MagicMock(return_value={})}):
                genesis.bootstrap('pacman', 'root', 'dir')
                pacman_patch.assert_called_with('root', img_format='dir', exclude_pkgs=[], pkgs=[])