def run(root, *args, **kwargs): name = args[0].strip() if args else None if name: if name in root.project['mounting']: root.project.config['mounting'] = name logger.success(u'Mounting <b>%s</b> selected.' % root.mounting.name) else: logger.error(u'Mounting <b>%s</b> unknow.' % name) exit(1) else: def select_mounting_name(): # logger.ask('0) no mounting (localhost)') logger.ask( u'Please select the <b>{}</b> mounting to work on'.format( root.project.name)) for i, m in enumerate(root.project['mounting']): logger.choice(u'<b>{}</b>] {}'.format(i + 1, m.name)) mi = six.moves.input(': ') try: if mi == '0': raise Exception return root.project['mounting'][int(mi) - 1].name except Exception as e: logger.error(u'<b>%s</b> is not a valid choice' % mi) return select_mounting_name() root.project.config['mounting'] = select_mounting_name() logger.success(u'Mounting <b>%s</b> selected.' % root.mounting.name)
def run(root, *args, **kwargs): name = args[0].strip() if args else None if name: args = list(args) args.pop(0) mounting = root.project['mounting'].get(name) if mounting: logger.success(u'Prepare mounting <b>%s</b> to be created.' % mounting.name) else: logger.error(u'Mounting <b>%s</b> unknow.' % name) exit(1) else: mounting = root.mounting if not mounting.is_localhost: logger.cmd('Create machine <b>%s</b>' % (mounting.docker_machine_name, )) logger.cmd('With driver <b>%s</b>' % (mounting.get_machine_driver(), )) cmd = root.bash( mounting.docker_machine_bin, 'rm', mounting.docker_machine_name, #root.compose.name, *args, is_system=True) else: logger.warning(mounting.LOCAL_MACHINE_WARNING)
def run(root, *args, **kwargs): root.run_command('machine:start', internal=True) mounting = root.mounting hosts = mounting.get_machine_hosts() if hosts: for host in hosts: ip_address = '0.0.0.0' logger.cmd('Set host <b>%s</b> mapped at %s in /etc/hosts.' % (host, ip_address)) cmd = root.bash( "docker", "run", "-t", "-i" , "-v", "%s/managehosts:/bin/managehosts" % root.bin_root, "-v", "/etc/hosts:/etc/host_hosts", "-v", "/etc/hosts.bak:/etc/host_hosts.bak", "busybox", "sh", "/bin/managehosts" , "add %s %s %s" % (host, ip_address, root.project.name), mounting=mounting, is_system=True ) if cmd.is_success: logger.success('Host <b>%s</b> has been set on %s.' % (host, mounting, ))
def run(root, *args, **kwargs): cmd = root.bash(root.compose.bin, 'restart', *args, compose=root.compose, is_system=True) if cmd.is_success: logger.success('<b>%s</b> is restarted.' % (root.compose.name, ))
def run(root, *args, **kwargs): logger.cmd('Down project <b>%s</b>' % (root.compose.name, )) cmd = root.bash(root.compose.bin, 'down', '--remove-orphans', compose=root.compose, is_system=True) if cmd.is_success: logger.success('<b>%s</b> is down.' % (root.compose.name, ))
def run(root, *args, **kwargs): root.run_command('machine:start', internal=True) cmd = root.bash(root.compose.bin, 'start', *args, compose=root.compose, is_system=True) if cmd.is_success: logger.success('<b>%s</b> is started.' % (root.compose.name, ))
def run(root, *args, **kwargs): logger.cmd('Build <b>%s</b>' % (root.project.compose.name, )) root.run_command('machine:start', internal=True) cmd = root.bash(root.project.compose.bin, 'build', *args, compose=root.compose, is_system=True) if cmd.is_success: logger.success('<b>%s</b> built.' % (root.project.compose.name, ))
def run(root, *args, **kwargs): logger.cmd('Rebuild <b>%s</b>' % (root.project.compose.name, )) root.project.machine.start() cmd = root.bash(root.project.compose.bin, '--no-cache', 'build', *args, compose=root.compose, is_system=True) if cmd.is_success: logger.success('<b>%s</b> rebuilt.' % (root.project.compose.name, ))
def run(root, *args, **kwargs): mounting = root.mounting if mounting.is_localhost: logger.warning(mounting.LOCAL_MACHINE_WARNING) else: cmd = root.bash(mounting.docker_machine_bin, 'ssh', mounting.docker_machine_name, *args, is_system=True) if cmd.is_success: logger.success('')
def run(root, *args, **kwargs): def select_machine_name(): # logger.ask('0) no machine (localhost)') logger.ask(u'Please select the <b>{}</b> machine to work on'.format(root.project.name)) for i, m in enumerate(root.project['machines']): logger.choice(u'<b>{}</b>] {}'.format(i+1, m.name)) mi = six.moves.input(': ') try: if mi == '0': raise Exception return root.project['machines'][int(mi)-1].name except Exception as e: logger.error(u'<b>%s</b> is not a valid choice' % mi) return select_machine_name() root.project.config['machine'] = select_machine_name() logger.success(u'Machine <b>%s</b> selected.' % root.machine.name)
def run(root, *args, **kwargs): root.run_command('machine:start', internal=True) if '--set-hosts' in args: root.run_command('hosts:set', internal=True) args = filter(lambda s: s != '--set-hosts', args) else: logger.cmd('Hosts mapping ignored.') logger.cmd('Up project <b>%s</b>' % (root.compose.name, )) cmd = root.bash(root.compose.bin, 'up', *args, compose=root.compose, is_system=True) if cmd.is_success: logger.success('<b>%s</b> is up.' % (root.compose.name, )) if root.mounting['hosts']: for host in root.mounting['hosts']: logger.success('Project is accessible by http://%s.' % (host, ))
def run(root, *args, **kwargs): project = None project_name = args[0] if len(args) else None if project_name: project = root.projects.get(project_name) if not project: logger.warning('Project <b>%s</b> unknow.' % project_name) if not project: def select_project(): # logger.ask('0) no machine (localhost)') logger.ask('Select the project to work on') for i, p in enumerate(root.projects.items()): key, value = p logger.choice('<b>{}]</b> {}'.format(i + 1, key)) pi = six.moves.input(': ') try: if pi == '0': raise Exception return root.projects.items()[int(pi) - 1] except Exception as e: logger.error('{} is not a valid choice'.format(pi)) return select_project() project_name, project = select_project() if project: workdir = project.get('workdir') if workdir and os.path.isdir(workdir): logger.success('Workon the project <b>%s</b> in <b>%s</b>' % (project_name, workdir)) os.chdir(workdir) shell = os.environ.get('SHELL', '/bin/sh') # root.run_command('info', internal=True) os.execl(shell, shell) return
def run(root, *args, **kwargs): name = args[0].strip() if args else None if name: if name in root.project['contexts']: root.project.config['context'] = name logger.success(u'Context <b>%s</b> selected.' % root.context.name) else: logger.error(u'Context <b>%s</b> unknow.' % name) exit(0) else: contexts = root.project['contexts'] if not contexts: contexts['default'] = Context('default') root.project.config['context'] = 'default' logger.warning(u'No context defines, use <b>%s</b>.' % root.context.name) else: def select_context_name(contexts): logger.ask( u'Please select the <b>{}</b> context to work on'.format( root.project.name)) for i, c in enumerate(contexts): logger.choice(u'<b>%s</b>] %s' % (i + 1, c.name)) ci = six.moves.input(': ') try: if ci == '0': raise Exception return contexts[int(ci) - 1].name except Exception as e: logger.error(u'<b>%s/b> is not a valid choice' % ci) return select_context_name(contexts) root.project.config['context'] = select_context_name(contexts) logger.success(u'Context <b>%s</b> selected.' % root.context.name)
def log(self): logger.success(self.out)