func readRancherCompose(relativePath string, newTemplate *model.Template) { composeBytes := readFile(catalogRoot+relativePath, "rancher-compose.yml") newTemplate.RancherCompose = string(*composeBytes) //read the questions section RC := make(map[string]model.RancherCompose) err := yaml.Unmarshal(*composeBytes, &RC) if err != nil { log.Errorf("Error unmarshalling %s under template: %s, error: %v", "rancher-compose.yml", relativePath, err) } else { newTemplate.Questions = RC[".catalog"].Questions newTemplate.Name = RC[".catalog"].Name newTemplate.UUID = RC[".catalog"].UUID newTemplate.Description = RC[".catalog"].Description newTemplate.Version = RC[".catalog"].Version if newTemplate.UUID != "" { //store uuid -> path map UUIDToPath[newTemplate.UUID] = relativePath log.Debugf("UUIDToPath map: %v", UUIDToPath) } } }
func ReadTemplateVersion(path string) model.Template { dirList, err := ioutil.ReadDir(catalogRoot + path) newTemplate := model.Template{} newTemplate.Path = path if err != nil { log.Errorf("Error reading template at path: %s, error: %v", path, err) } else { var foundConfig, foundIcon bool for _, subfile := range dirList { if strings.HasPrefix(subfile.Name(), "config.yml") { foundConfig = true readTemplateConfig(catalogRoot+path, &newTemplate) if newTemplate.UUID != "" { //store uuid -> path map UUIDToPath[newTemplate.UUID] = path log.Debugf("UUIDToPath map: %v", UUIDToPath) } } else if strings.HasPrefix(subfile.Name(), "catalogIcon") { newTemplate.IconLink = path + "/" + subfile.Name() foundIcon = true } else if strings.HasPrefix(subfile.Name(), "docker-compose") { newTemplate.DockerCompose = string(*(readFile(catalogRoot+path, subfile.Name()))) } else if strings.HasPrefix(subfile.Name(), "rancher-compose") { composeBytes := readFile(catalogRoot+path, subfile.Name()) newTemplate.RancherCompose = string(*composeBytes) //read the questions section RC := make(map[string]model.RancherCompose) err := yaml.Unmarshal(*composeBytes, &RC) if err != nil { log.Errorf("Error unmarshalling %s under template: %s, error: %v", subfile.Name(), path, err) } else { newTemplate.Questions = RC[".stack"].Questions } } } if !foundConfig { //use the parent config tokens := strings.Split(path, "/") parentPath := tokens[0] parentMetadata, ok := Catalog[parentPath] if ok { newTemplate.Name = parentMetadata.Name newTemplate.Category = parentMetadata.Category newTemplate.Description = parentMetadata.Description newTemplate.Version = parentMetadata.Version } else { log.Debugf("Could not find the parent metadata %s", parentPath) } } if !foundIcon { //use the parent icon tokens := strings.Split(path, "/") parentPath := tokens[0] parentMetadata, ok := Catalog[parentPath] if ok { newTemplate.IconLink = parentMetadata.IconLink } else { log.Debugf("Could not find the parent metadata %s", parentPath) } } } return newTemplate }