@@ -236,7 +236,7 @@ def convert_port_bindings(port_bindings):
236
236
for k , v in six .iteritems (port_bindings ):
237
237
key = str (k )
238
238
if '/' not in key :
239
- key = key + '/tcp'
239
+ key += '/tcp'
240
240
if isinstance (v , list ):
241
241
result [key ] = [_convert_port_binding (binding ) for binding in v ]
242
242
else :
@@ -434,7 +434,7 @@ def parse_bytes(s):
434
434
s = 0
435
435
else :
436
436
if s [- 2 :- 1 ].isalpha () and s [- 1 ].isalpha ():
437
- if ( s [- 1 ] == "b" or s [- 1 ] == "B" ) :
437
+ if s [- 1 ] == "b" or s [- 1 ] == "B" :
438
438
s = s [:- 1 ]
439
439
units = BYTE_UNITS
440
440
suffix = s [- 1 ].lower ()
@@ -467,17 +467,20 @@ def parse_bytes(s):
467
467
return s
468
468
469
469
470
- def host_config_type_error (param_value = None , expected = None ):
471
- return TypeError (
472
- 'Invalid type for {0} param: expected {1} but found {2}' .format (param_value , expected ,
473
- type (param_value ))
474
- )
470
+ def host_config_type_error (param , param_value , expected ):
471
+ error_msg = 'Invalid type for {0} param: expected {1} but found {2}'
472
+ return TypeError (error_msg .format (param , expected , type (param_value )))
475
473
476
474
477
- def host_config_version_error (param = None , version = None ):
478
- return errors .InvalidVersion (
479
- '{0} param is not supported in API versions < {1}' .format (param , version )
480
- )
475
+ def host_config_version_error (param , version , less_than = True ):
476
+ operator = '<' if less_than else '>'
477
+ error_msg = '{0} param is not supported in API versions {1} {2}'
478
+ return errors .InvalidVersion (error_msg .format (param , operator , version ))
479
+
480
+
481
+ def host_config_value_error (param , param_value ):
482
+ error_msg = 'Invalid value for {0} param: {1}'
483
+ return ValueError (error_msg .format (param , param_value ))
481
484
482
485
483
486
def create_host_config (binds = None , port_bindings = None , lxc_conf = None ,
@@ -509,20 +512,21 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
509
512
if memswap_limit is not None :
510
513
if isinstance (memswap_limit , six .string_types ):
511
514
memswap_limit = parse_bytes (memswap_limit )
515
+
512
516
host_config ['MemorySwap' ] = memswap_limit
513
517
514
518
if mem_swappiness is not None :
515
519
if version_lt (version , '1.20' ):
516
520
raise host_config_version_error ('mem_swappiness' , '1.20' )
517
521
if not isinstance (mem_swappiness , int ):
518
- raise host_config_type_error (mem_swappiness , 'int' )
522
+ raise host_config_type_error (
523
+ 'mem_swappiness' , mem_swappiness , 'int'
524
+ )
519
525
520
526
host_config ['MemorySwappiness' ] = mem_swappiness
521
527
522
528
if pid_mode not in (None , 'host' ):
523
- raise errors .DockerException (
524
- 'Invalid value for pid param: {0}' .format (pid_mode )
525
- )
529
+ raise host_config_value_error ('pid_mode' , pid_mode )
526
530
elif pid_mode :
527
531
host_config ['PidMode' ] = pid_mode
528
532
@@ -533,10 +537,9 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
533
537
host_config ['Privileged' ] = privileged
534
538
535
539
if oom_kill_disable :
536
- if version_lt (version , '1.19' ):
537
- raise errors .InvalidVersion (
538
- 'oom_kill_disable param not supported for API version < 1.19'
539
- )
540
+ if version_lt (version , '1.20' ):
541
+ raise host_config_version_error ('oom_kill_disable' , '1.19' )
542
+
540
543
host_config ['OomKillDisable' ] = oom_kill_disable
541
544
542
545
if publish_all_ports :
@@ -554,6 +557,11 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
554
557
host_config ['NetworkMode' ] = 'default'
555
558
556
559
if restart_policy :
560
+ if not isinstance (restart_policy , dict ):
561
+ raise host_config_type_error (
562
+ 'restart_policy' , restart_policy , 'dict'
563
+ )
564
+
557
565
host_config ['RestartPolicy' ] = restart_policy
558
566
559
567
if cap_add :
@@ -568,28 +576,29 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
568
576
if group_add :
569
577
if version_lt (version , '1.20' ):
570
578
raise host_config_version_error ('group_add' , '1.20' )
579
+
571
580
host_config ['GroupAdd' ] = [six .text_type (grp ) for grp in group_add ]
572
581
573
582
if dns is not None :
574
583
host_config ['Dns' ] = dns
575
584
576
585
if security_opt is not None :
577
586
if not isinstance (security_opt , list ):
578
- raise host_config_type_error (security_opt , 'list' )
587
+ raise host_config_type_error ('security_opt' , security_opt , 'list' )
588
+
579
589
host_config ['SecurityOpt' ] = security_opt
580
590
581
591
if volumes_from is not None :
582
592
if isinstance (volumes_from , six .string_types ):
583
593
volumes_from = volumes_from .split (',' )
594
+
584
595
host_config ['VolumesFrom' ] = volumes_from
585
596
586
597
if binds is not None :
587
598
host_config ['Binds' ] = convert_volume_binds (binds )
588
599
589
600
if port_bindings is not None :
590
- host_config ['PortBindings' ] = convert_port_bindings (
591
- port_bindings
592
- )
601
+ host_config ['PortBindings' ] = convert_port_bindings (port_bindings )
593
602
594
603
if extra_hosts is not None :
595
604
if isinstance (extra_hosts , dict ):
@@ -604,9 +613,7 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
604
613
if isinstance (links , dict ):
605
614
links = six .iteritems (links )
606
615
607
- formatted_links = [
608
- '{0}:{1}' .format (k , v ) for k , v in sorted (links )
609
- ]
616
+ formatted_links = ['{0}:{1}' .format (k , v ) for k , v in sorted (links )]
610
617
611
618
host_config ['Links' ] = formatted_links
612
619
@@ -624,7 +631,7 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
624
631
625
632
if ulimits is not None :
626
633
if not isinstance (ulimits , list ):
627
- raise host_config_type_error (ulimits , 'list' )
634
+ raise host_config_type_error ('ulimits' , ulimits , 'list' )
628
635
host_config ['Ulimits' ] = []
629
636
for l in ulimits :
630
637
if not isinstance (l , Ulimit ):
@@ -634,21 +641,24 @@ def create_host_config(binds=None, port_bindings=None, lxc_conf=None,
634
641
if log_config is not None :
635
642
if not isinstance (log_config , LogConfig ):
636
643
if not isinstance (log_config , dict ):
637
- raise host_config_type_error (log_config , 'LogConfig' )
644
+ raise host_config_type_error (
645
+ 'log_config' , log_config , 'LogConfig'
646
+ )
638
647
log_config = LogConfig (** log_config )
648
+
639
649
host_config ['LogConfig' ] = log_config
640
650
641
651
if cpu_quota :
642
652
if not isinstance (cpu_quota , int ):
643
- raise host_config_type_error (cpu_quota , 'int' )
653
+ raise host_config_type_error ('cpu_quota' , cpu_quota , 'int' )
644
654
if version_lt (version , '1.19' ):
645
655
raise host_config_version_error ('cpu_quota' , '1.19' )
646
656
647
657
host_config ['CpuQuota' ] = cpu_quota
648
658
649
659
if cpu_period :
650
660
if not isinstance (cpu_period , int ):
651
- raise host_config_type_error (cpu_period , 'int' )
661
+ raise host_config_type_error ('cpu_period' , cpu_period , 'int' )
652
662
if version_lt (version , '1.19' ):
653
663
raise host_config_version_error ('cpu_period' , '1.19' )
654
664
0 commit comments