nodeup: make sure tasks implement HasDependencies

This commit is contained in:
Justin Santa Barbara 2016-06-04 16:04:34 -04:00
parent c774777160
commit 82f373cba0
4 changed files with 19 additions and 11 deletions

View File

@ -58,6 +58,8 @@ func NewFileTask(name string, src fi.Resource, destPath string, meta string) (*F
return f, nil
}
var _ fi.HasDependencies = &File{}
func (f *File) GetDependencies(tasks map[string]fi.Task) []fi.Task {
var deps []fi.Task
if f.Owner != nil {

View File

@ -26,11 +26,13 @@ const (
localPackageDir = "/var/cache/nodeup/packages/"
)
func (p *Package) GetDependencies(tasks map[string]fi.Task) []string {
var deps []string
for k, v := range tasks {
var _ fi.HasDependencies = &Package{}
func (p *Package) GetDependencies(tasks map[string]fi.Task) []fi.Task {
var deps []fi.Task
for _, v := range tasks {
if _, ok := v.(*UpdatePackages); ok {
deps = append(deps, k)
deps = append(deps, v)
}
}
return deps

View File

@ -30,19 +30,21 @@ type Service struct {
SmartRestart *bool `json:"smartRestart"`
}
func (p *Service) GetDependencies(tasks map[string]fi.Task) []string {
var deps []string
for k, v := range tasks {
var _ fi.HasDependencies = &Service{}
func (p *Service) GetDependencies(tasks map[string]fi.Task) []fi.Task {
var deps []fi.Task
for _, v := range tasks {
// We assume that services depend on basically everything
typeName := utils.BuildTypeName(reflect.TypeOf(v))
switch typeName {
case "*CopyAssetTask", "*File", "*Package", "*Sysctl", "*UpdatePackages", "*User", "*Disk":
deps = append(deps, k)
deps = append(deps, v)
case "*Service":
// ignore
default:
glog.Warningf("Unhandled type name in Service::GetDependencies: %q", typeName)
deps = append(deps, k)
deps = append(deps, v)
}
}
return deps

View File

@ -13,8 +13,10 @@ import (
type UpdatePackages struct {
}
func (p *UpdatePackages) GetDependencies(tasks map[string]fi.Task) []string {
return []string{}
var _ fi.HasDependencies = &UpdatePackages{}
func (p *UpdatePackages) GetDependencies(tasks map[string]fi.Task) []fi.Task {
return []fi.Task{}
}
func (p *UpdatePackages) String() string {