Exemplo n.º 1
0
def docker_cp(src, dest, logger=None, followlink=False):
    args = ['docker', 'cp']
    if followlink is True:
        args.append('-L')
    args.append(src)
    args.append(dest)
    return call_process2(args, logger=logger)
Exemplo n.º 2
0
 def create(self, hostname, env):
     env = {
         k: yaml.scalarstring.DoubleQuotedScalarString(v)
         for k, v in env.iteritems() if v is not None
     }
     if self.app.docker_ucr_style_env:
         env.update({shell_safe(k).upper(): v for k, v in env.iteritems()})
     else:
         env = {shell_safe(k).upper(): v for k, v in env.iteritems()}
     self._setup_env(env=env)
     self._setup_yml(recreate=True, env=env)
     ret, out_up = call_process2([
         'docker-compose', '-p', self.app.id, 'up', '-d', '--no-build',
         '--no-recreate'
     ],
                                 cwd=self.app.get_compose_dir())
     if ret != 0:
         raise DockerCouldNotStartContainer(out_up)
     self.container = self._get_main_service_container_id()
     if self.container is None:
         try:
             out_ps = ps(only_running=True)
         except Exception as e:
             out_ps = str(e)
         raise DockerCouldNotStartContainer(
             'could not find container for service %s! docker-ps: %s docker-compose: %s)'
             % (self.app.docker_main_service, out_ps, out_up))
     else:
         ucr_save({self.app.ucr_container_key: self.container})
         return self.container
 def pull(self):
     self.logger.info('Downloading app image %s' % self.image)
     try:
         hub, image_name = self.image.split('/', 1)
     except ValueError:
         pass
     else:
         cfg = {}
         dockercfg_file = os.path.expanduser('~/.dockercfg')
         if os.path.exists(dockercfg_file):
             with open(dockercfg_file) as dockercfg:
                 cfg = loads(dockercfg.read())
         if hub not in cfg:
             retcode = call([
                 'docker', 'login', '-e', 'invalid', '-u',
                 DOCKER_READ_USER_CRED['username'], '-p',
                 DOCKER_READ_USER_CRED['password'], hub
             ])
             if retcode != 0:
                 _logger.warn(
                     'Could not login to %s. You may not be able to pull the image from the repository!'
                     % hub)
     ret, out = call_process2(['docker', 'pull', self.image],
                              logger=_logger)
     if ret != 0:
         raise DockerImagePullFailed(self.image, out)
 def pull(self):
     self._setup_yml(recreate=True)
     self.logger.info('Downloading app images')
     ret, out = call_process2(['docker-compose', '-p', self.app.id, 'pull'],
                              cwd=self.app.get_compose_dir(),
                              logger=_logger)
     if ret != 0:
         raise DockerImagePullFailed(self.image, out)
Exemplo n.º 5
0
 def pull(self):
     self.setup_docker_files()
     self.logger.info('Downloading app images')
     ret, out = call_process2(['docker-compose', '-p', self.app.id, 'pull'],
                              cwd=self.app.get_compose_dir(),
                              logger=_logger)
     if ret != 0:
         raise DockerImagePullFailed(image=self.image, out=out, code=ret)
Exemplo n.º 6
0
	def pull(self):
		mkdir(self.app.get_compose_dir())
		yml_file = self.app.get_compose_file('docker-compose.yml')
		shutil.copy2(self.app.get_cache_file('compose'), yml_file)
		os.chmod(yml_file, 0600)
		self.logger.info('Downloading app images')
		ret, out = call_process2(['docker-compose', '-p', self.app.id, 'pull'], cwd=self.app.get_compose_dir(), logger=_logger)
		if ret != 0:
			raise DockerImagePullFailed(self.image, out)
 def get_status(cls, app):
     if app.uses_docker_compose():
         return ''
     else:
         try:
             ret, out = call_process2([cls.get_init(app), 'status'])
             # dirty, but we have a limit for sending status information
             out = out[500:]
         except Exception as e:
             out = str(e)
Exemplo n.º 8
0
	def pull(self):
		self.logger.info('Downloading app image %s' % self.image)
		try:
			hub, image_name = self.image.split('/', 1)
		except ValueError:
			pass
		else:
			if '.' in hub:
				retcode = login(hub, with_license=self.app.install_permissions)
				if retcode != 0:
					_logger.warn('Could not login to %s. You may not be able to pull the image from the repository!' % hub)
		ret, out = call_process2(['docker', 'pull', self.image], logger=_logger)
		if ret != 0:
			raise DockerImagePullFailed(self.image, out)
    def _run_parts(self, directory):
        """
		in order to call hooks we use run-parts, so that administrators can
		better comprehend what is done behind the scenes and test their script
		folders manually using that tool.
		"""
        if os.path.isdir(directory):
            (retval, output) = call_process2(["run-parts", directory])
            # self.log(output) is unnecessary, because call_process2 logs its
            # output, but if you are replacing call_process2 with something
            # different, please remember to to inform the user about the output
            # of the scripts!
        else:
            self.log('Potential script hook folder is unused: {folder}'.format(
                folder=directory))
 def create(self, hostname, env):
     env = {
         k: yaml.scalarstring.DoubleQuotedScalarString(v)
         for k, v in env.iteritems()
     }
     if self.app.docker_ucr_style_env:
         env.update({shell_safe(k).upper(): v for k, v in env.iteritems()})
     else:
         env = {shell_safe(k).upper(): v for k, v in env.iteritems()}
     self._setup_yml(recreate=True, env=env)
     ret, out_up = call_process2([
         'docker-compose', '-p', self.app.id, 'up', '-d', '--no-build',
         '--no-recreate'
     ],
                                 cwd=self.app.get_compose_dir())
     if ret != 0:
         raise DockerCouldNotStartContainer(out_up)
     try:
         out_ps = ps(only_running=True)
     except CalledProcessError:
         out_ps = str()
     else:
         yml_file = self.app.get_compose_file('docker-compose.yml')
         content = yaml.load(open(yml_file),
                             yaml.RoundTripLoader,
                             preserve_quotes=True)
         docker_image = content['services'][
             self.app.docker_main_service]['image']
         for line in out_ps.splitlines():
             try:
                 container, image = line.split()[:2]
             except ValueError:
                 pass
             else:
                 if image == docker_image:
                     ucr_save({self.app.ucr_container_key: container})
                     self.container = container
                     return container
     if self.container is None:
         raise DockerCouldNotStartContainer(
             'could not find container for %s (image: %s) in docker-ps %s (docker-compose: %s)'
             % (self.app.docker_main_service, docker_image, out_ps, out_up))
def create(image,
           command,
           hostname=None,
           ports=None,
           volumes=None,
           env_file=None,
           args=None):
    _args = []
    if hostname:
        _args.extend(['--hostname', hostname])
    if env_file:
        _args.extend(['--env-file', env_file])
    if ports:
        for port in ports:
            _args.extend(['-p', port])
    for volume in volumes:
        _args.extend(['-v', volume])
    if args:
        _args.extend(args)
    _args.append(image)
    if command:
        _args.extend(command)
    args = ['docker', 'create'] + _args
    return call_process2(args)
Exemplo n.º 12
0
def dockerd_logs(logger=None):
    args = ['journalctl', '-n', '20', '-o', 'short', '/usr/bin/dockerd']
    ret, out = call_process2(args, logger=logger)
    return out
Exemplo n.º 13
0
def docker_logs(container, logger=None):
    args = ['docker', 'logs', container]
    ret, out = call_process2(args, logger=logger)
    return out