@@ -98,15 +98,7 @@ type DockerDriverConfig struct {
98
98
ShmSize int64 `mapstructure:"shm_size"` // Size of /dev/shm of the container in bytes
99
99
}
100
100
101
- func (c * DockerDriverConfig ) Init () error {
102
- if strings .Contains (c .ImageName , "https://" ) {
103
- c .SSL = true
104
- c .ImageName = strings .Replace (c .ImageName , "https://" , "" , 1 )
105
- }
106
-
107
- return nil
108
- }
109
-
101
+ // Validate validates a docker driver config
110
102
func (c * DockerDriverConfig ) Validate () error {
111
103
if c .ImageName == "" {
112
104
return fmt .Errorf ("Docker Driver needs an image name" )
@@ -118,6 +110,24 @@ func (c *DockerDriverConfig) Validate() error {
118
110
return nil
119
111
}
120
112
113
+ // NewDockerDriverConfig returns a docker driver config by parsing the HCL
114
+ // config
115
+ func NewDockerDriverConfig (task * structs.Task ) (* DockerDriverConfig , error ) {
116
+ var driverConfig DockerDriverConfig
117
+ driverConfig .SSL = true
118
+ if err := mapstructure .WeakDecode (task .Config , & driverConfig ); err != nil {
119
+ return nil , err
120
+ }
121
+ if strings .Contains (driverConfig .ImageName , "https://" ) {
122
+ driverConfig .ImageName = strings .Replace (driverConfig .ImageName , "https://" , "" , 1 )
123
+ }
124
+
125
+ if err := driverConfig .Validate (); err != nil {
126
+ return nil , err
127
+ }
128
+ return & driverConfig , nil
129
+ }
130
+
121
131
type dockerPID struct {
122
132
Version string
123
133
ImageID string
@@ -657,16 +667,8 @@ func (d *DockerDriver) loadImage(driverConfig *DockerDriverConfig, client *docke
657
667
}
658
668
659
669
func (d * DockerDriver ) Start (ctx * ExecContext , task * structs.Task ) (DriverHandle , error ) {
660
- var driverConfig DockerDriverConfig
661
- if err := mapstructure .WeakDecode (task .Config , & driverConfig ); err != nil {
662
- return nil , err
663
- }
664
-
665
- if err := driverConfig .Init (); err != nil {
666
- return nil , err
667
- }
668
-
669
- if err := driverConfig .Validate (); err != nil {
670
+ driverConfig , err := NewDockerDriverConfig (task )
671
+ if err != nil {
670
672
return nil , err
671
673
}
672
674
@@ -683,7 +685,7 @@ func (d *DockerDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle
683
685
return nil , fmt .Errorf ("Failed to connect to docker daemon: %s" , err )
684
686
}
685
687
686
- if err := d .createImage (& driverConfig , client , taskDir ); err != nil {
688
+ if err := d .createImage (driverConfig , client , taskDir ); err != nil {
687
689
return nil , fmt .Errorf ("failed to create image: %v" , err )
688
690
}
689
691
@@ -723,7 +725,7 @@ func (d *DockerDriver) Start(ctx *ExecContext, task *structs.Task) (DriverHandle
723
725
return nil , fmt .Errorf ("failed to start syslog collector: %v" , err )
724
726
}
725
727
726
- config , err := d .createContainer (ctx , task , & driverConfig , ss .Addr )
728
+ config , err := d .createContainer (ctx , task , driverConfig , ss .Addr )
727
729
if err != nil {
728
730
d .logger .Printf ("[ERR] driver.docker: failed to create container configuration for image %s: %s" , image , err )
729
731
pluginClient .Kill ()
0 commit comments