mirror of https://github.com/kubernetes/kops.git
Merge pull request #688 from zmerlynn/add-docker-dep-loadimagetask
nodeup: Add docker.service dep to LoadImageTask
This commit is contained in:
commit
97675adbdd
|
|
@ -1,6 +1,7 @@
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Kubernetes Kubelet Server
|
Description=Kubernetes Kubelet Server
|
||||||
Documentation=https://github.com/kubernetes/kubernetes
|
Documentation=https://github.com/kubernetes/kubernetes
|
||||||
|
After=docker.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
EnvironmentFile=/etc/sysconfig/kubelet
|
EnvironmentFile=/etc/sysconfig/kubelet
|
||||||
|
|
|
||||||
|
|
@ -18,17 +18,20 @@ package nodetasks
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os/exec"
|
||||||
|
"path"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"k8s.io/kops/upup/pkg/fi"
|
"k8s.io/kops/upup/pkg/fi"
|
||||||
"k8s.io/kops/upup/pkg/fi/nodeup/cloudinit"
|
"k8s.io/kops/upup/pkg/fi/nodeup/cloudinit"
|
||||||
"k8s.io/kops/upup/pkg/fi/nodeup/local"
|
"k8s.io/kops/upup/pkg/fi/nodeup/local"
|
||||||
"k8s.io/kops/upup/pkg/fi/utils"
|
"k8s.io/kops/upup/pkg/fi/utils"
|
||||||
"k8s.io/kops/util/pkg/hashing"
|
"k8s.io/kops/util/pkg/hashing"
|
||||||
"os/exec"
|
|
||||||
"path"
|
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const dockerService = "docker.service"
|
||||||
|
|
||||||
// LoadImageTask is responsible for downloading a docker image
|
// LoadImageTask is responsible for downloading a docker image
|
||||||
type LoadImageTask struct {
|
type LoadImageTask struct {
|
||||||
Source string
|
Source string
|
||||||
|
|
@ -36,6 +39,20 @@ type LoadImageTask struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ fi.Task = &LoadImageTask{}
|
var _ fi.Task = &LoadImageTask{}
|
||||||
|
var _ fi.HasDependencies = &LoadImageTask{}
|
||||||
|
|
||||||
|
func (t *LoadImageTask) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||||
|
// LoadImageTask depends on the docker service to ensure we
|
||||||
|
// sideload images after docker is completely updated and
|
||||||
|
// configured.
|
||||||
|
var deps []fi.Task
|
||||||
|
for _, v := range tasks {
|
||||||
|
if svc, ok := v.(*Service); ok && svc.Name == dockerService {
|
||||||
|
deps = append(deps, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return deps
|
||||||
|
}
|
||||||
|
|
||||||
func (t *LoadImageTask) String() string {
|
func (t *LoadImageTask) String() string {
|
||||||
return fmt.Sprintf("LoadImageTask: %s", t.Source)
|
return fmt.Sprintf("LoadImageTask: %s", t.Source)
|
||||||
|
|
|
||||||
|
|
@ -19,19 +19,18 @@ package nodetasks
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/golang/glog"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"path"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/golang/glog"
|
||||||
"k8s.io/kops/upup/pkg/fi"
|
"k8s.io/kops/upup/pkg/fi"
|
||||||
"k8s.io/kops/upup/pkg/fi/nodeup/cloudinit"
|
"k8s.io/kops/upup/pkg/fi/nodeup/cloudinit"
|
||||||
"k8s.io/kops/upup/pkg/fi/nodeup/local"
|
"k8s.io/kops/upup/pkg/fi/nodeup/local"
|
||||||
"k8s.io/kops/upup/pkg/fi/nodeup/tags"
|
"k8s.io/kops/upup/pkg/fi/nodeup/tags"
|
||||||
"k8s.io/kops/upup/pkg/fi/utils"
|
|
||||||
"os"
|
|
||||||
"os/exec"
|
|
||||||
"path"
|
|
||||||
"reflect"
|
|
||||||
"strings"
|
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -60,15 +59,17 @@ var _ fi.HasDependencies = &Service{}
|
||||||
func (p *Service) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
func (p *Service) GetDependencies(tasks map[string]fi.Task) []fi.Task {
|
||||||
var deps []fi.Task
|
var deps []fi.Task
|
||||||
for _, v := range tasks {
|
for _, v := range tasks {
|
||||||
// We assume that services depend on basically everything
|
// We assume that services depend on everything except for
|
||||||
typeName := utils.BuildTypeName(reflect.TypeOf(v))
|
// LoadImageTask. If there are any LoadImageTasks (e.g. we're
|
||||||
switch typeName {
|
// launching a custom Kubernetes build), they all depend on
|
||||||
case "*CopyAssetTask", "*File", "*Package", "*Sysctl", "*UpdatePackages", "*UserTask", "*Disk":
|
// the "docker.service" Service task.
|
||||||
|
switch v.(type) {
|
||||||
|
case *File, *Package, *UpdatePackages, *UserTask, *MountDiskTask:
|
||||||
deps = append(deps, v)
|
deps = append(deps, v)
|
||||||
case "*Service":
|
case *Service, *LoadImageTask:
|
||||||
// ignore
|
// ignore
|
||||||
default:
|
default:
|
||||||
glog.Warningf("Unhandled type name in Service::GetDependencies: %q", typeName)
|
glog.Warningf("Unhandled type %t in Service::GetDependencies: %v", v, v)
|
||||||
deps = append(deps, v)
|
deps = append(deps, v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue