Exemplo n.º 1
0
    def test_install_on_wrong_os_offline_installer(self):
        image = 'ubuntu'
        tag = '14.04'
        host = image + '-master'
        ubuntu_container = DockerCluster(host, [], DEFAULT_LOCAL_MOUNT_POINT,
                                         DEFAULT_DOCKER_MOUNT_POINT)
        try:
            ubuntu_container.fetch_image_if_not_present(image, tag)
            ubuntu_container.start_containers(
                image + ':' + tag, cmd='tail -f /var/log/bootstrap.log')

            ubuntu_container.run_script(install_py26_script,
                                        ubuntu_container.master)
            ubuntu_container.exec_cmd_on_container(
                ubuntu_container.master, 'sudo apt-get -y install wget')

            self.assertRaisesRegexp(
                OSError,
                r'ERROR\n'
                r'Paramiko could not be imported. This usually means that',
                self.install_presto_admin,
                ubuntu_container
            )
        finally:
            ubuntu_container.tear_down_containers()
Exemplo n.º 2
0
    def build_installer_in_docker(self, online_installer=False, cluster=None, unique=False):
        if not cluster:
            cluster = self.docker_cluster
        container_name = "installer"
        installer_container = DockerCluster(container_name, [], DEFAULT_LOCAL_MOUNT_POINT, DEFAULT_DOCKER_MOUNT_POINT)
        try:
            installer_container.create_image(
                os.path.join(LOCAL_RESOURCES_DIR, "centos6-ssh-test"),
                "teradatalabs/centos6-ssh-test",
                "jdeathe/centos-ssh",
            )
            installer_container.start_containers("teradatalabs/centos6-ssh-test")
        except DockerClusterException as e:
            installer_container.tear_down_containers()
            self.fail(e.msg)

        try:
            shutil.copytree(
                prestoadmin.main_dir,
                os.path.join(installer_container.get_local_mount_dir(container_name), "presto-admin"),
                ignore=shutil.ignore_patterns("tmp", ".git", "presto*.rpm"),
            )
            installer_container.run_script(
                "-e\n"
                "pip install --upgrade pip\n"
                "pip install --upgrade wheel\n"
                "pip install --upgrade setuptools\n"
                "mv %s/presto-admin ~/\n"
                "cd ~/presto-admin\n"
                "make %s\n"
                "cp dist/prestoadmin-*.tar.bz2 %s"
                % (
                    installer_container.docker_mount_dir,
                    "dist" if not online_installer else "dist-online",
                    installer_container.docker_mount_dir,
                ),
                container_name,
            )

            try:
                os.makedirs(cluster.get_dist_dir(unique))
            except OSError, e:
                if e.errno != errno.EEXIST:
                    raise
            local_container_dist_dir = os.path.join(
                prestoadmin.main_dir, installer_container.get_local_mount_dir(container_name)
            )
            installer_file = fnmatch.filter(os.listdir(local_container_dist_dir), "prestoadmin-*.tar.bz2")[0]
            shutil.copy(os.path.join(local_container_dist_dir, installer_file), cluster.get_dist_dir(unique))