예제 #1
0
func readRancherCompose(relativePath string, newTemplate *model.Template) error {

	composeBytes, err := readFile(relativePath, "rancher-compose.yml")
	if err != nil {
		return err
	}

	catalogConfig, err := lookup.ParseCatalogConfig(*composeBytes)
	if err != nil {
		return err
	}

	newTemplate.Questions = catalogConfig.Questions
	newTemplate.Name = catalogConfig.Name
	newTemplate.Description = catalogConfig.Description
	newTemplate.Version = catalogConfig.Version
	newTemplate.MinimumRancherVersion = catalogConfig.MinimumRancherVersion
	newTemplate.Output = catalogConfig.Output
	newTemplate.Labels = catalogConfig.Labels
	binding, err := model.CreateBindings(relativePath)
	if err != nil {
		return err
	}
	newTemplate.Bindings = binding
	newTemplate.MaximumRancherVersion = catalogConfig.MaximumRancherVersion
	newTemplate.UpgradeFrom = catalogConfig.UpgradeFrom
	return nil
}
예제 #2
0
func readTemplateConfig(relativePath string, template *model.Template) {
	filename, err := filepath.Abs(relativePath + "/config.yml")
	if err != nil {
		log.Errorf("Error forming path to config file at path: %s, error: %v", relativePath, err)
	}

	yamlFile, err := ioutil.ReadFile(filename)
	if err != nil {
		log.Errorf("Error reading config file under template: %s, error: %v", relativePath, err)
	} else {
		config := make(map[string]interface{})

		//Read the config.yml file
		err = yaml.Unmarshal(yamlFile, &config)
		if err != nil {
			log.Errorf("Error unmarshalling config.yml under template: %s, error: %v", relativePath, err)
		} else {
			template.Name, _ = config["name"].(string)
			template.Category, _ = config["category"].(string)
			template.Description, _ = config["description"].(string)
			template.Version, _ = config["version"].(string)
			template.Maintainer, _ = config["maintainer"].(string)
			template.License, _ = config["license"].(string)
			template.ProjectURL, _ = config["projectURL"].(string)
			template.IsSystem, _ = config["isSystem"].(string)
			template.DefaultVersion, _ = config["version"].(string)
			template.Labels = map[string]string{}

			labels, _ := config["labels"].(map[interface{}]interface{})
			for k, v := range labels {
				template.Labels[fmt.Sprint(k)] = fmt.Sprint(v)
			}
		}
	}
}