func (s Service) podManifestToMap(result map[string][]cntspec.ACFullname, contents []byte) error { pod := schema.BlankPodManifest() err := pod.UnmarshalJSON(contents) if err != nil { return err } var podname string var acis []cntspec.ACFullname for i, podAci := range pod.Apps { version, _ := podAci.Image.Labels.Get("version") fullname := cntspec.NewACFullName(podAci.Image.Name.String() + ":" + version) if i == 0 { nameSplit := strings.SplitN(fullname.ShortName(), "_", 2) podname = fullname.DomainName() + "/" + nameSplit[0] } // resolved, err := fullname.FullyResolved() // TODO should not be resolved for local test ?? // if err != nil { // logrus.WithError(err).Fatal("Cannot fully resolve ACI") // } acis = append(acis, *fullname) } result[podname] = acis return nil }
func (p *Pod) toAciManifest(e spec.RuntimeApp) spec.AciManifest { fullname := spec.NewACFullName(p.manifest.Name.Name() + "_" + e.Name + ":" + p.manifest.Name.Version()) return spec.AciManifest{ Aci: spec.AciDefinition{ Annotations: e.Annotations, App: e.App, Dependencies: e.Dependencies, PathWhitelist: nil, // TODO }, NameAndVersion: *fullname, } }
func (s Service) aciManifestToMap(result map[string][]cntspec.ACFullname, contents []byte) error { aci := schema.BlankImageManifest() err := aci.UnmarshalJSON(contents) if err != nil { return err } version, _ := aci.Labels.Get("version") fullname := cntspec.NewACFullName(aci.Name.String() + ":" + version) result[fullname.Name()] = []cntspec.ACFullname{*fullname} return nil }
func (cnt *Img) prepareTestAci() (*Img, error) { files, err := ioutil.ReadDir(cnt.path + PATH_TESTS) if err != nil { return nil, err } utils.CopyDir(cnt.path+PATH_TESTS+PATH_FILES, cnt.target+PATH_TESTS+PATH_FILES) utils.CopyDir(cnt.path+PATH_TESTS+PATH_ATTRIBUTES, cnt.target+PATH_TESTS+PATH_ATTRIBUTES) utils.CopyDir(cnt.path+PATH_TESTS+PATH_CONFD, cnt.target+PATH_TESTS+PATH_CONFD) utils.CopyDir(cnt.path+PATH_TESTS+PATH_RUNLEVELS, cnt.target+PATH_TESTS+PATH_RUNLEVELS) os.MkdirAll(cnt.target+PATH_TESTS+PATH_FILES+PATH_TESTS, 0777) for _, f := range files { if !f.IsDir() { if err := utils.CopyFile(cnt.path+PATH_TESTS+"/"+f.Name(), cnt.target+PATH_TESTS+PATH_FILES+PATH_TESTS+"/"+f.Name()); err != nil { panic(err) } } } ExecScript := strings.Replace(TEST_INIT_SCRIPT, "%%COMMAND%%", "'"+strings.Join(cnt.manifest.Aci.App.Exec, "' '")+"'", 1) ExecScript = strings.Replace(ExecScript, "%%CWD%%", "'"+cnt.manifest.Aci.App.WorkingDirectory+"'", 2) ioutil.WriteFile(cnt.target+PATH_TESTS+PATH_FILES+"/init.sh", []byte(ExecScript), 0777) fullname, err := spec.NewACFullName(cnt.manifest.NameAndVersion.Name() + "_test:" + cnt.manifest.NameAndVersion.Version()) if err != nil { panic(err) } resultMountName, _ := types.NewACName("result") testAci, err := NewAciWithManifest(cnt.target+PATH_TESTS, cnt.args, spec.AciManifest{ Aci: spec.AciDefinition{ App: &spec.CntApp{ Exec: []string{"/init.sh"}, MountPoints: []types.MountPoint{{Path: PATH_RESULT, Name: *resultMountName}}, }, Dependencies: []spec.ACFullname{BATS_ACI, cnt.manifest.NameAndVersion}, }, NameAndVersion: *fullname, }, nil) if err != nil { panic("Cannot build test aci" + err.Error()) } return testAci, nil }