def _setup_dynamic(self):
        """Create a vcenter simulator using docker."""
        container_id = get_docker_container_id()

        if container_id:
            display.info('Running in docker container: %s' % container_id,
                         verbosity=1)

        self.container_name = self.DOCKER_SIMULATOR_NAME

        results = docker_inspect(self.args, self.container_name)

        if results and not results[0].get('State', {}).get('Running'):
            docker_rm(self.args, self.container_name)
            results = []

        if results:
            display.info(
                'Using the existing vCenter simulator docker container.',
                verbosity=1)
        else:
            display.info('Starting a new vCenter simulator docker container.',
                         verbosity=1)

            if not self.args.docker and not container_id:
                # publish the simulator ports when not running inside docker
                publish_ports = [
                    '-p',
                    '80:80',
                    '-p',
                    '443:443',
                    '-p',
                    '8080:8080',
                    '-p',
                    '8989:8989',
                    '-p',
                    '5000:5000',  # control port for flask app in simulator
                ]
            else:
                publish_ports = []

            docker_pull(self.args, self.image)
            docker_run(
                self.args,
                self.image,
                ['-d', '--name', self.container_name] + publish_ports,
            )

        if self.args.docker:
            vcenter_host = self.DOCKER_SIMULATOR_NAME
        elif container_id:
            vcenter_host = self._get_simulator_address()
            display.info('Found vCenter simulator container address: %s' %
                         vcenter_host,
                         verbosity=1)
        else:
            vcenter_host = 'localhost'

        self._set_cloud_config('vcenter_host', vcenter_host)
Exemple #2
0
    def _setup_dynamic(self):
        """Create a CloudStack simulator using docker."""
        config = self._read_config_template()

        self.container_name = self.DOCKER_SIMULATOR_NAME

        results = docker_inspect(self.args, self.container_name)

        if results and not results[0]['State']['Running']:
            docker_rm(self.args, self.container_name)
            results = []

        if results:
            display.info('Using the existing CloudStack simulator docker container.', verbosity=1)
        else:
            display.info('Starting a new CloudStack simulator docker container.', verbosity=1)
            docker_pull(self.args, self.image)
            docker_run(self.args, self.image, ['-d', '-p', '8888:8888', '--name', self.container_name])
            if not self.args.explain:
                display.notice('The CloudStack simulator will probably be ready in 5 - 10 minutes.')

        container_id = get_docker_container_id()

        if container_id:
            display.info('Running in docker container: %s' % container_id, verbosity=1)
            self.host = self._get_simulator_address()
            display.info('Found CloudStack simulator container address: %s' % self.host, verbosity=1)
        else:
            self.host = 'localhost'

        self.port = 8888
        self.endpoint = 'http://%s:%d' % (self.host, self.port)

        self._wait_for_service()

        if self.args.explain:
            values = dict(
                HOST=self.host,
                PORT=str(self.port),
            )
        else:
            credentials = self._get_credentials()

            if self.args.docker:
                host = self.DOCKER_SIMULATOR_NAME
            else:
                host = self.host

            values = dict(
                HOST=host,
                PORT=str(self.port),
                KEY=credentials['apikey'],
                SECRET=credentials['secretkey'],
            )

        config = self._populate_config_template(config, values)

        self._write_config(config)
Exemple #3
0
    def _setup_dynamic(self):
        """Create a CloudStack simulator using docker."""
        config = self._read_config_template()

        self.container_name = self.DOCKER_SIMULATOR_NAME

        results = docker_inspect(self.args, self.container_name)

        if results and not results[0]['State']['Running']:
            docker_rm(self.args, self.container_name)
            results = []

        if results:
            display.info('Using the existing CloudStack simulator docker container.', verbosity=1)
        else:
            display.info('Starting a new CloudStack simulator docker container.', verbosity=1)
            docker_pull(self.args, self.image)
            docker_run(self.args, self.image, ['-d', '-p', '8888:8888', '--name', self.container_name])
            if not self.args.explain:
                display.notice('The CloudStack simulator will probably be ready in 5 - 10 minutes.')

        container_id = get_docker_container_id()

        if container_id:
            display.info('Running in docker container: %s' % container_id, verbosity=1)
            self.host = self._get_simulator_address()
            display.info('Found CloudStack simulator container address: %s' % self.host, verbosity=1)
        else:
            self.host = 'localhost'

        self.port = 8888
        self.endpoint = 'http://%s:%d' % (self.host, self.port)

        self._wait_for_service()

        if self.args.explain:
            values = dict(
                HOST=self.host,
                PORT=str(self.port),
            )
        else:
            credentials = self._get_credentials()

            if self.args.docker:
                host = self.DOCKER_SIMULATOR_NAME
            else:
                host = self.host

            values = dict(
                HOST=host,
                PORT=str(self.port),
                KEY=credentials['apikey'],
                SECRET=credentials['secretkey'],
            )

        config = self._populate_config_template(config, values)

        self._write_config(config)
Exemple #4
0
    def _setup_dynamic(self):
        """Create a ACME test container using docker."""
        container_id = get_docker_container_id()

        if container_id:
            display.info('Running in docker container: %s' % container_id, verbosity=1)

        self.container_name = self.DOCKER_SIMULATOR_NAME

        results = docker_inspect(self.args, self.container_name)

        if results and not results[0].get('State', {}).get('Running'):
            docker_rm(self.args, self.container_name)
            results = []

        if results:
            display.info('Using the existing ACME docker test container.', verbosity=1)
        else:
            display.info('Starting a new ACME docker test container.', verbosity=1)

            if not self.args.docker and not container_id:
                # publish the simulator ports when not running inside docker
                publish_ports = [
                    '-p', '5000:5000',  # control port for flask app in container
                    '-p', '14000:14000',  # Pebble ACME CA
                ]
            else:
                publish_ports = []

            if not os.environ.get('ANSIBLE_ACME_CONTAINER'):
                docker_pull(self.args, self.image)

            docker_run(
                self.args,
                self.image,
                ['-d', '--name', self.container_name] + publish_ports,
            )

        if self.args.docker:
            acme_host = self.DOCKER_SIMULATOR_NAME
            acme_host_ip = self._get_simulator_address()
        elif container_id:
            acme_host = self._get_simulator_address()
            acme_host_ip = acme_host
            display.info('Found ACME test container address: %s' % acme_host, verbosity=1)
        else:
            acme_host = 'localhost'
            acme_host_ip = acme_host

        self._set_cloud_config('acme_host', acme_host)

        self._wait_for_service('http', acme_host_ip, 5000, '', 'ACME controller')
        self._wait_for_service('https', acme_host_ip, 14000, 'dir', 'ACME CA endpoint')
Exemple #5
0
    def _setup_dynamic(self):
        """Create a vcenter simulator using docker."""
        container_id = get_docker_container_id()

        if container_id:
            display.info('Running in docker container: %s' % container_id, verbosity=1)

        self.container_name = self.DOCKER_SIMULATOR_NAME

        results = docker_inspect(self.args, self.container_name)

        if results and not results[0].get('State', {}).get('Running'):
            docker_rm(self.args, self.container_name)
            results = []

        if results:
            display.info('Using the existing vCenter simulator docker container.', verbosity=1)
        else:
            display.info('Starting a new vCenter simulator docker container.', verbosity=1)

            if not self.args.docker and not container_id:
                # publish the simulator ports when not running inside docker
                publish_ports = [
                    '-p', '80:80',
                    '-p', '443:443',
                    '-p', '8080:8080',
                    '-p', '8989:8989',
                    '-p', '5000:5000',  # control port for flask app in simulator
                ]
            else:
                publish_ports = []

            if not os.environ.get('ANSIBLE_VCSIM_CONTAINER'):
                docker_pull(self.args, self.image)

            docker_run(
                self.args,
                self.image,
                ['-d', '--name', self.container_name] + publish_ports,
            )

        if self.args.docker:
            vcenter_host = self.DOCKER_SIMULATOR_NAME
        elif container_id:
            vcenter_host = self._get_simulator_address()
            display.info('Found vCenter simulator container address: %s' % vcenter_host, verbosity=1)
        else:
            vcenter_host = 'localhost'

        self._set_cloud_config('vcenter_host', vcenter_host)
Exemple #6
0
    def _setup_dynamic(self):
        """Create a OpenShift container using docker."""
        self.container_name = self.DOCKER_CONTAINER_NAME

        results = docker_inspect(self.args, self.container_name)

        if results and not results[0]['State']['Running']:
            docker_rm(self.args, self.container_name)
            results = []

        if results:
            display.info('Using the existing OpenShift docker container.',
                         verbosity=1)
        else:
            display.info('Starting a new OpenShift docker container.',
                         verbosity=1)
            docker_pull(self.args, self.image)
            cmd = ['start', 'master', '--listen', 'https://0.0.0.0:8443']
            docker_run(
                self.args, self.image,
                ['-d', '-p', '8443:8443', '--name', self.container_name], cmd)

        container_id = get_docker_container_id()

        if container_id:
            display.info('Running in docker container: %s' % container_id,
                         verbosity=1)
            host = self._get_container_address()
            display.info('Found OpenShift container address: %s' % host,
                         verbosity=1)
        else:
            host = 'localhost'

        port = 8443
        endpoint = 'https://%s:%s/' % (host, port)

        self._wait_for_service(endpoint)

        if self.args.explain:
            config = '# Unknown'
        else:
            if self.args.docker:
                host = self.DOCKER_CONTAINER_NAME

            server = 'https://%s:%s' % (host, port)
            config = self._get_config(server)

        self._write_config(config)
Exemple #7
0
    def _setup_dynamic(self):
        """Create a OpenShift container using docker."""
        self.container_name = self.DOCKER_CONTAINER_NAME

        results = docker_inspect(self.args, self.container_name)

        if results and not results[0]['State']['Running']:
            docker_rm(self.args, self.container_name)
            results = []

        if results:
            display.info('Using the existing OpenShift docker container.', verbosity=1)
        else:
            display.info('Starting a new OpenShift docker container.', verbosity=1)
            docker_pull(self.args, self.image)
            cmd = ['start', 'master', '--listen', 'https://0.0.0.0:8443']
            docker_run(self.args, self.image, ['-d', '-p', '8443:8443', '--name', self.container_name], cmd)

        container_id = get_docker_container_id()

        if container_id:
            display.info('Running in docker container: %s' % container_id, verbosity=1)
            host = self._get_container_address()
            display.info('Found OpenShift container address: %s' % host, verbosity=1)
        else:
            host = 'localhost'

        port = 8443
        endpoint = 'https://%s:%s/' % (host, port)

        self._wait_for_service(endpoint)

        if self.args.explain:
            config = '# Unknown'
        else:
            if self.args.docker:
                host = self.DOCKER_CONTAINER_NAME

            server = 'https://%s:%s' % (host, port)
            config = self._get_config(server)

        self._write_config(config)
Exemple #8
0
 def _get_simulator_address(self):
     results = docker_inspect(self.args, self.container_name)
     ipaddress = results[0]['NetworkSettings']['IPAddress']
     return ipaddress
Exemple #9
0
 def _get_simulator_address(self):
     results = docker_inspect(self.args, self.container_name)
     ipaddress = results[0]['NetworkSettings']['IPAddress']
     return ipaddress
Exemple #10
0
    def _setup_dynamic(self):
        """Create a CloudStack simulator using docker."""
        config = self._read_config_template()

        self.container_name = self.DOCKER_SIMULATOR_NAME

        results = docker_inspect(self.args, self.container_name)

        if results and not results[0]['State']['Running']:
            docker_rm(self.args, self.container_name)
            results = []

        if results:
            display.info(
                'Using the existing CloudStack simulator docker container.',
                verbosity=1)
        else:
            display.info(
                'Starting a new CloudStack simulator docker container.',
                verbosity=1)
            docker_pull(self.args, self.image)
            docker_run(
                self.args, self.image,
                ['-d', '-p', '8888:8888', '--name', self.container_name])

            # apply work-around for OverlayFS issue
            # https://github.com/docker/for-linux/issues/72#issuecomment-319904698
            docker_exec(self.args, self.container_name, [
                'find', '/var/lib/mysql', '-type', 'f', '-exec', 'touch', '{}',
                ';'
            ])

            if not self.args.explain:
                display.notice(
                    'The CloudStack simulator will probably be ready in 2 - 4 minutes.'
                )

        container_id = get_docker_container_id()

        if container_id:
            display.info('Running in docker container: %s' % container_id,
                         verbosity=1)
            self.host = self._get_simulator_address()
            display.info('Found CloudStack simulator container address: %s' %
                         self.host,
                         verbosity=1)
        else:
            self.host = 'localhost'

        self.port = 8888
        self.endpoint = 'http://%s:%d' % (self.host, self.port)

        self._wait_for_service()

        if self.args.explain:
            values = dict(
                HOST=self.host,
                PORT=str(self.port),
            )
        else:
            credentials = self._get_credentials()

            if self.args.docker:
                host = self.DOCKER_SIMULATOR_NAME
            else:
                host = self.host

            values = dict(
                HOST=host,
                PORT=str(self.port),
                KEY=credentials['apikey'],
                SECRET=credentials['secretkey'],
            )

            display.sensitive.add(values['SECRET'])

        config = self._populate_config_template(config, values)

        self._write_config(config)