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