Ejemplo n.º 1
0
    def take_action(self, parsed_args):
        client = _get_client(self, parsed_args)
        opts = {}
        opts['name'] = parsed_args.name
        opts['image'] = parsed_args.image
        opts['memory'] = parsed_args.memory
        opts['cpu'] = parsed_args.cpu
        opts['environment'] = zun_utils.format_args(parsed_args.environment)
        opts['workdir'] = parsed_args.workdir
        opts['labels'] = zun_utils.format_args(parsed_args.label)
        opts['image_pull_policy'] = parsed_args.image_pull_policy
        opts['image_driver'] = parsed_args.image_driver
        opts['auto_remove'] = parsed_args.auto_remove
        if parsed_args.security_group:
            opts['security_groups'] = parsed_args.security_group
        if parsed_args.command:
            opts['command'] = zun_utils.parse_command(parsed_args.command)
        if parsed_args.restart:
            opts['restart_policy'] = \
                zun_utils.check_restart_policy(parsed_args.restart)
        if parsed_args.interactive:
            opts['interactive'] = True
        opts['hints'] = zun_utils.format_args(parsed_args.hint)
        opts['nets'] = zun_utils.parse_nets(parsed_args.net)

        opts = zun_utils.remove_null_parms(**opts)
        container = client.containers.create(**opts)
        columns = _container_columns(container)
        return columns, utils.get_item_properties(container, columns)
Ejemplo n.º 2
0
def do_create(cs, args):
    """Create a container."""
    opts = {}
    opts['name'] = args.name
    opts['image'] = args.image
    opts['memory'] = args.memory
    opts['cpu'] = args.cpu
    opts['environment'] = zun_utils.format_args(args.environment)
    opts['auto_remove'] = args.rm
    opts['workdir'] = args.workdir
    opts['labels'] = zun_utils.format_args(args.label)
    opts['image_pull_policy'] = args.image_pull_policy
    opts['image_driver'] = args.image_driver
    opts['hints'] = zun_utils.format_args(args.hint)
    opts['nets'] = zun_utils.parse_nets(args.net)

    if args.security_group:
        opts['security_groups'] = args.security_group
    if args.command:
        opts['command'] = zun_utils.parse_command(args.command)
    if args.restart:
        opts['restart_policy'] = zun_utils.check_restart_policy(args.restart)
    if args.interactive:
        opts['interactive'] = True
    opts = zun_utils.remove_null_parms(**opts)
    _show_container(cs.containers.create(**opts))
Ejemplo n.º 3
0
def do_run(cs, args):
    """Run a command in a new container."""
    opts = {}
    opts['name'] = args.name
    opts['image'] = args.image
    opts['memory'] = args.memory
    opts['cpu'] = args.cpu
    opts['environment'] = zun_utils.format_args(args.environment)
    opts['workdir'] = args.workdir
    opts['auto_remove'] = args.auto_remove
    opts['labels'] = zun_utils.format_args(args.label)
    opts['image_pull_policy'] = args.image_pull_policy
    opts['image_driver'] = args.image_driver
    opts['hints'] = zun_utils.format_args(args.hint)
    opts['nets'] = zun_utils.parse_nets(args.net)
    opts['mounts'] = zun_utils.parse_mounts(args.mount)
    opts['runtime'] = args.runtime
    opts['hostname'] = args.hostname
    opts['disk'] = args.disk
    opts['availability_zone'] = args.availability_zone
    opts['command'] = args.command
    opts['registry'] = args.registry
    if args.healthcheck:
        opts['healthcheck'] = zun_utils.parse_health(args.healthcheck)

    if args.auto_heal:
        opts['auto_heal'] = args.auto_heal
    if args.security_group:
        opts['security_groups'] = args.security_group
    if args.expose_port:
        opts['exposed_ports'] = zun_utils.parse_exposed_ports(args.expose_port)
    if args.restart:
        opts['restart_policy'] = zun_utils.check_restart_policy(args.restart)
    if args.interactive:
        opts['interactive'] = True
    if args.privileged:
        opts['privileged'] = True
    opts = zun_utils.remove_null_parms(**opts)
    container = cs.containers.run(**opts)
    _show_container(container)
    container_uuid = getattr(container, 'uuid', None)
    if args.interactive:
        ready_for_attach = False
        while True:
            container = cs.containers.get(container_uuid)
            if zun_utils.check_container_status(container, 'Running'):
                ready_for_attach = True
                break
            if zun_utils.check_container_status(container, 'Error'):
                raise exceptions.ContainerStateError(container_uuid)
            print("Waiting for container start")
            time.sleep(1)
        if ready_for_attach is True:
            response = cs.containers.attach(container_uuid)
            websocketclient.do_attach(cs, response, container_uuid, "~", 0.5)
        else:
            raise exceptions.InvalidWebSocketLink(container_uuid)
Ejemplo n.º 4
0
def do_run(cs, args):
    """Run a command in a new container."""
    opts = {}
    opts['name'] = args.name
    opts['image'] = args.image
    opts['memory'] = args.memory
    opts['cpu'] = args.cpu
    opts['environment'] = zun_utils.format_args(args.environment)
    opts['workdir'] = args.workdir
    opts['auto_remove'] = args.auto_remove
    opts['labels'] = zun_utils.format_args(args.label)
    opts['image_pull_policy'] = args.image_pull_policy
    opts['image_driver'] = args.image_driver
    opts['hints'] = zun_utils.format_args(args.hint)
    opts['nets'] = zun_utils.parse_nets(args.net)
    opts['mounts'] = zun_utils.parse_mounts(args.mount)
    opts['runtime'] = args.runtime
    opts['hostname'] = args.hostname
    opts['disk'] = args.disk
    opts['availability_zone'] = args.availability_zone
    opts['command'] = args.command
    opts['registry'] = args.registry
    if args.healthcheck:
        opts['healthcheck'] = zun_utils.parse_health(args.healthcheck)

    if args.auto_heal:
        opts['auto_heal'] = args.auto_heal
    if args.security_group:
        opts['security_groups'] = args.security_group
    if args.expose_port:
        opts['exposed_ports'] = zun_utils.parse_exposed_ports(args.expose_port)
    if args.restart:
        opts['restart_policy'] = zun_utils.check_restart_policy(args.restart)
    if args.interactive:
        opts['interactive'] = True
    if args.privileged:
        opts['privileged'] = True
    opts = zun_utils.remove_null_parms(**opts)
    container = cs.containers.run(**opts)
    _show_container(container)
    container_uuid = getattr(container, 'uuid', None)
    if args.interactive:
        ready_for_attach = False
        while True:
            container = cs.containers.get(container_uuid)
            if zun_utils.check_container_status(container, 'Running'):
                ready_for_attach = True
                break
            if zun_utils.check_container_status(container, 'Error'):
                raise exceptions.ContainerStateError(container_uuid)
            print("Waiting for container start")
            time.sleep(1)
        if ready_for_attach is True:
            response = cs.containers.attach(container_uuid)
            websocketclient.do_attach(cs, response, container_uuid, "~", 0.5)
        else:
            raise exceptions.InvalidWebSocketLink(container_uuid)
Ejemplo n.º 5
0
    def take_action(self, parsed_args):
        client = _get_client(self, parsed_args)
        opts = {}
        opts['name'] = parsed_args.name
        opts['image'] = parsed_args.image
        opts['memory'] = parsed_args.memory
        opts['cpu'] = parsed_args.cpu
        opts['environment'] = zun_utils.format_args(parsed_args.environment)
        opts['workdir'] = parsed_args.workdir
        opts['labels'] = zun_utils.format_args(parsed_args.label)
        opts['image_pull_policy'] = parsed_args.image_pull_policy
        opts['image_driver'] = parsed_args.image_driver
        opts['auto_remove'] = parsed_args.auto_remove
        if parsed_args.security_group:
            opts['security_groups'] = parsed_args.security_group
        if parsed_args.command:
            opts['command'] = zun_utils.parse_command(parsed_args.command)
        if parsed_args.restart:
            opts['restart_policy'] = \
                zun_utils.check_restart_policy(parsed_args.restart)
        if parsed_args.interactive:
            opts['interactive'] = True
        opts['hints'] = zun_utils.format_args(parsed_args.hint)
        opts['nets'] = zun_utils.parse_nets(parsed_args.net)
        opts['mounts'] = zun_utils.parse_mounts(parsed_args.mount)
        opts['runtime'] = parsed_args.runtime
        opts['hostname'] = parsed_args.hostname
        opts['disk'] = parsed_args.disk
        opts['availability_zone'] = parsed_args.availability_zone
        opts['auto_heal'] = parsed_args.auto_heal

        opts = zun_utils.remove_null_parms(**opts)
        container = client.containers.run(**opts)
        columns = _container_columns(container)
        container_uuid = getattr(container, 'uuid', None)
        if parsed_args.interactive:
            ready_for_attach = False
            while True:
                container = client.containers.get(container_uuid)
                if zun_utils.check_container_status(container, 'Running'):
                    ready_for_attach = True
                    break
                if zun_utils.check_container_status(container, 'Error'):
                    break
                print("Waiting for container start")
                time.sleep(1)
            if ready_for_attach is True:
                response = client.containers.attach(container_uuid)
                websocketclient.do_attach(client, response, container_uuid,
                                          "~", 0.5)
            else:
                raise exceptions.InvalidWebSocketLink(container_uuid)

        return columns, utils.get_item_properties(container, columns)
Ejemplo n.º 6
0
def do_create(cs, args):
    """Create a container."""
    opts = {}
    opts['name'] = args.name
    opts['image'] = args.image
    opts['command'] = args.command
    opts['memory'] = args.memory
    opts['cpu'] = args.cpu
    opts['environment'] = zun_utils.format_args(args.environment)
    opts['workdir'] = args.workdir
    opts['labels'] = zun_utils.format_args(args.label)
    opts['image_pull_policy'] = args.image_pull_policy
    _show_container(cs.containers.create(**opts))
Ejemplo n.º 7
0
 def test_format_args_multiple_values_per_args(self):
     l = utils.format_args([
         'K1=V1',
         'K1=V2'])
     self.assertIn('K1', l)
     self.assertIn('V1', l['K1'])
     self.assertIn('V2', l['K1'])
Ejemplo n.º 8
0
    def take_action(self, parsed_args):
        client = _get_client(self, parsed_args)
        opts = {}
        opts['name'] = parsed_args.name
        opts['image'] = parsed_args.image
        opts['command'] = parsed_args.command
        opts['memory'] = parsed_args.memory
        opts['cpu'] = parsed_args.cpu
        opts['environment'] = zun_utils.format_args(parsed_args.environment)
        opts['workdir'] = parsed_args.workdir
        opts['labels'] = zun_utils.format_args(parsed_args.label)
        opts['image_pull_policy'] = parsed_args.image_pull_policy

        container = client.containers.create(**opts)
        columns = _container_columns(container)
        return columns, utils.get_item_properties(container, columns)
Ejemplo n.º 9
0
 def test_format_args_multiple_colon_values(self):
     l = utils.format_args([
         'K1=V1',
         'K2=V2,V22,V222,V2222',
         'K3=3.3.3.3'])
     self.assertEqual({'K1': 'V1',
                       'K2': 'V2,V22,V222,V2222',
                       'K3': '3.3.3.3'}, l)
Ejemplo n.º 10
0
 def test_format_args_multiple_colon_values(self):
     li = utils.format_args(['K1=V1', 'K2=V2,V22,V222,V2222', 'K3=3.3.3.3'])
     self.assertEqual(
         {
             'K1': 'V1',
             'K2': 'V2,V22,V222,V2222',
             'K3': '3.3.3.3'
         }, li)
Ejemplo n.º 11
0
 def test_format_args(self):
     li = utils.format_args(['K1=V1,K2=V2,' 'K3=V3,K4=V4,' 'K5=V5'])
     self.assertEqual(
         {
             'K1': 'V1',
             'K2': 'V2',
             'K3': 'V3',
             'K4': 'V4',
             'K5': 'V5'
         }, li)
Ejemplo n.º 12
0
 def test_format_args_mix_commas_semicolon(self):
     li = utils.format_args(['K1=V1,K2=V2,' 'K3=V3;K4=V4,' 'K5=V5'])
     self.assertEqual(
         {
             'K1': 'V1',
             'K2': 'V2',
             'K3': 'V3',
             'K4': 'V4',
             'K5': 'V5'
         }, li)
Ejemplo n.º 13
0
 def test_format_args_split(self):
     l = utils.format_args([
         'K1=V1,'
         'K2=V22222222222222222222222222222'
         '222222222222222222222222222,'
         'K3=3.3.3.3'])
     self.assertEqual({'K1': 'V1',
                       'K2': 'V22222222222222222222222222222'
                       '222222222222222222222222222',
                       'K3': '3.3.3.3'}, l)
Ejemplo n.º 14
0
 def test_format_args_multiple(self):
     l = utils.format_args([
         'K1=V1',
         'K2=V22222222222222222222222222222'
         '222222222222222222222222222',
         'K3=3.3.3.3'])
     self.assertEqual({'K1': 'V1',
                       'K2': 'V22222222222222222222222222222'
                       '222222222222222222222222222',
                       'K3': '3.3.3.3'}, l)
Ejemplo n.º 15
0
 def test_format_args_semicolon(self):
     l = utils.format_args(['K1=V1;K2=V2;' 'K3=V3;K4=V4;' 'K5=V5'])
     self.assertEqual(
         {
             'K1': 'V1',
             'K2': 'V2',
             'K3': 'V3',
             'K4': 'V4',
             'K5': 'V5'
         }, l)
Ejemplo n.º 16
0
 def test_format_args_mix_commas_semicolon(self):
     l = utils.format_args([
         'K1=V1,K2=V2,'
         'K3=V3;K4=V4,'
         'K5=V5'])
     self.assertEqual({'K1': 'V1',
                       'K2': 'V2',
                       'K3': 'V3',
                       'K4': 'V4',
                       'K5': 'V5'
                       }, l)
Ejemplo n.º 17
0
 def test_format_args(self):
     l = utils.format_args([
         'K1=V1,K2=V2,'
         'K3=V3,K4=V4,'
         'K5=V5'])
     self.assertEqual({'K1': 'V1',
                       'K2': 'V2',
                       'K3': 'V3',
                       'K4': 'V4',
                       'K5': 'V5'
                       }, l)
Ejemplo n.º 18
0
def do_create(cs, args):
    """Create a container."""
    opts = {}
    opts['name'] = args.name
    opts['image'] = args.image
    opts['memory'] = args.memory
    opts['cpu'] = args.cpu
    opts['environment'] = zun_utils.format_args(args.environment)
    opts['auto_remove'] = args.auto_remove
    opts['workdir'] = args.workdir
    opts['labels'] = zun_utils.format_args(args.label)
    opts['image_pull_policy'] = args.image_pull_policy
    opts['image_driver'] = args.image_driver
    opts['hints'] = zun_utils.format_args(args.hint)
    opts['nets'] = zun_utils.parse_nets(args.net)
    opts['mounts'] = zun_utils.parse_mounts(args.mount)
    opts['runtime'] = args.runtime
    opts['hostname'] = args.hostname
    opts['disk'] = args.disk
    opts['availability_zone'] = args.availability_zone
    opts['command'] = args.command
    opts['registry'] = args.registry
    if args.healthcheck:
        opts['healthcheck'] = zun_utils.parse_health(args.healthcheck)

    if args.auto_heal:
        opts['auto_heal'] = args.auto_heal
    if args.security_group:
        opts['security_groups'] = args.security_group
    if args.expose_port:
        opts['exposed_ports'] = zun_utils.parse_exposed_ports(args.expose_port)
    if args.restart:
        opts['restart_policy'] = zun_utils.check_restart_policy(args.restart)
    if args.interactive:
        opts['interactive'] = True
    if args.privileged:
        opts['privileged'] = True
    opts = zun_utils.remove_null_parms(**opts)
    _show_container(cs.containers.create(**opts))
Ejemplo n.º 19
0
def do_create(cs, args):
    """Create a container."""
    opts = {}
    opts['name'] = args.name
    opts['image'] = args.image
    opts['memory'] = args.memory
    opts['cpu'] = args.cpu
    opts['environment'] = zun_utils.format_args(args.environment)
    opts['auto_remove'] = args.auto_remove
    opts['workdir'] = args.workdir
    opts['labels'] = zun_utils.format_args(args.label)
    opts['image_pull_policy'] = args.image_pull_policy
    opts['image_driver'] = args.image_driver
    opts['hints'] = zun_utils.format_args(args.hint)
    opts['nets'] = zun_utils.parse_nets(args.net)
    opts['mounts'] = zun_utils.parse_mounts(args.mount)
    opts['runtime'] = args.runtime
    opts['hostname'] = args.hostname
    opts['disk'] = args.disk
    opts['availability_zone'] = args.availability_zone
    opts['command'] = args.command
    opts['registry'] = args.registry
    if args.healthcheck:
        opts['healthcheck'] = zun_utils.parse_health(args.healthcheck)

    if args.auto_heal:
        opts['auto_heal'] = args.auto_heal
    if args.security_group:
        opts['security_groups'] = args.security_group
    if args.expose_port:
        opts['exposed_ports'] = zun_utils.parse_exposed_ports(args.expose_port)
    if args.restart:
        opts['restart_policy'] = zun_utils.check_restart_policy(args.restart)
    if args.interactive:
        opts['interactive'] = True
    if args.privileged:
        opts['privileged'] = True
    opts = zun_utils.remove_null_parms(**opts)
    _show_container(cs.containers.create(**opts))
Ejemplo n.º 20
0
 def test_format_args_split(self):
     li = utils.format_args([
         'K1=V1,'
         'K2=V22222222222222222222222222222'
         '222222222222222222222222222,'
         'K3=3.3.3.3'
     ])
     self.assertEqual(
         {
             'K1': 'V1',
             'K2': 'V22222222222222222222222222222'
             '222222222222222222222222222',
             'K3': '3.3.3.3'
         }, li)
Ejemplo n.º 21
0
 def test_format_args_none(self):
     self.assertEqual({}, utils.format_args(None))
Ejemplo n.º 22
0
 def test_format_args_parse_comma_false(self):
     li = utils.format_args(['K1=V1,K2=2.2.2.2,K=V'], parse_comma=False)
     self.assertEqual({'K1': 'V1,K2=2.2.2.2,K=V'}, li)
Ejemplo n.º 23
0
 def test_format_args_parse_comma_false(self):
     l = utils.format_args(
         ['K1=V1,K2=2.2.2.2,K=V'],
         parse_comma=False)
     self.assertEqual({'K1': 'V1,K2=2.2.2.2,K=V'}, l)
Ejemplo n.º 24
0
 def test_format_args_none(self):
     self.assertEqual({}, utils.format_args(None))