本文整理汇总了Golang中github.com/rancher/rancher-catalog-service/model.Template类的典型用法代码示例。如果您正苦于以下问题:Golang Template类的具体用法?Golang Template怎么用?Golang Template使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Template类的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: readRancherCompose
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: readTemplateConfig
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]string)
//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"]
template.Category = config["category"]
template.Description = config["description"]
template.Version = config["version"]
if config["uuid"] != "" {
template.UUID = config["uuid"]
}
}
}
}
示例3: readTemplateConfig
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)
}
}
}
}
示例4: GetNewTemplateVersions
func GetNewTemplateVersions(templateUUID string) model.Template {
templateMetadata := model.Template{}
path := UUIDToPath[templateUUID]
if path != "" {
//refresh the catalog and sync any new changes
RefreshCatalog()
//find the base template metadata name
tokens := strings.Split(path, "/")
parentPath := tokens[0]
cVersion := tokens[1]
currentVersion, err := strconv.Atoi(cVersion)
if err != nil {
log.Debugf("Error %v reading Current Version from path: %s for uuid: %s", err, path, templateUUID)
} else {
templateMetadata, ok := Catalog[parentPath]
if ok {
log.Debugf("Template found by uuid: %s", templateUUID)
copyOfversionLinks := make(map[string]string)
for key, value := range templateMetadata.VersionLinks {
if value != path {
otherVersionTokens := strings.Split(value, "/")
oVersion := otherVersionTokens[1]
otherVersion, err := strconv.Atoi(oVersion)
if err == nil && otherVersion > currentVersion {
copyOfversionLinks[key] = value
}
} else {
templateMetadata.Version = key
}
}
templateMetadata.VersionLinks = copyOfversionLinks
return templateMetadata
} else {
log.Debugf("Template metadata not found by uuid: %s", templateUUID)
}
}
} else {
log.Debugf("Template path not found by uuid: %s", templateUUID)
}
return templateMetadata
}
示例5: ReadTemplateVersion
//ReadTemplateVersion reads the template version details
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 foundIcon bool
for _, subfile := range dirList {
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") {
readRancherCompose(path, &newTemplate)
}
}
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
}
示例6: walkVersion
func walkVersion(path string, template *model.Template) (bool, bool, error) {
dirList, err := ioutil.ReadDir(path)
if err != nil {
log.Errorf("Error reading template at path: %s, error: %v", path, err)
return false, false, err
}
var foundIcon, foundReadme bool
for _, subfile := range dirList {
if strings.HasPrefix(subfile.Name(), "catalogIcon") {
template.IconLink = template.Id + "?image"
foundIcon = true
PathToImage[template.Path] = subfile.Name()
} else if strings.HasPrefix(strings.ToLower(subfile.Name()), "readme") {
template.ReadmeLink = template.Id + "?readme"
foundReadme = true
PathToReadme[template.Path] = subfile.Name()
} else {
//read if its a file and put it in the files map
if !subfile.IsDir() {
bytes, err := readFile(path, subfile.Name())
if err != nil {
continue
}
key := deriveFilePath(template.Path, path) + subfile.Name()
template.Files[key] = string(*bytes)
if strings.HasPrefix(subfile.Name(), "rancher-compose") {
readRancherCompose(path, template)
}
} else {
//grab files under this folder
walkVersion(path+"/"+subfile.Name(), template)
}
}
}
return foundIcon, foundReadme, nil
}
示例7: PopulateTemplateLinks
func PopulateTemplateLinks(r *http.Request, template *model.Template, resourceType string) map[string]string {
copyOfversionLinks := make(map[string]string)
for key, value := range template.VersionLinks {
copyOfversionLinks[key] = BuildURL(r, resourceType, value)
}
template.IconLink = BuildURL(r, "image", template.IconLink)
return copyOfversionLinks
}
示例8: readRancherCompose
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)
}
}
}
示例9: walkCatalog
func walkCatalog(path string, f os.FileInfo, err error) error {
if f.IsDir() && metadataFolder.MatchString(path) {
log.Debugf("Reading metadata folder for template:%s", f.Name())
newTemplate := model.Template{}
newTemplate.Path = f.Name()
//read the root level config.yml
readTemplateConfig(path, &newTemplate)
//list the folders under the root level
newTemplate.VersionLinks = make(map[string]string)
dirList, err := ioutil.ReadDir(path)
if err != nil {
log.Errorf("Error reading directories at path: %s, error: %v", f.Name(), err)
} else {
for _, subfile := range dirList {
if subfile.IsDir() {
//read the subversion config.yml file into a template
subTemplate := model.Template{}
readRancherCompose(f.Name()+"/"+subfile.Name(), &subTemplate)
if subTemplate.UUID != "" {
UUIDToPath[subTemplate.UUID] = f.Name() + "/" + subfile.Name()
log.Debugf("UUIDToPath map: %v", UUIDToPath)
}
newTemplate.VersionLinks[subTemplate.Version] = f.Name() + "/" + subfile.Name()
} else if strings.HasPrefix(subfile.Name(), "catalogIcon") {
newTemplate.IconLink = f.Name() + "/" + subfile.Name()
}
}
}
Catalog[f.Name()] = newTemplate
}
return nil
}
示例10: ReadTemplateVersion
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
}
示例11: ReadTemplateVersion
//ReadTemplateVersion reads the template version details
func (cat *Catalog) ReadTemplateVersion(templateID string, versionID string) (*model.Template, bool) {
prefix, templateName := ExtractTemplatePrefixAndName(templateID)
path := cat.CatalogID + "/" + prefix + "/" + templateName + "/" + versionID
parentPath := cat.CatalogID + "/" + templateID
parentMetadata, ok := cat.metadata[parentPath]
if ok {
newTemplate := model.Template{}
newTemplate.Path = cat.CatalogID + "/" + templateID + "/" + versionID
newTemplate.TemplateBase = parentMetadata.TemplateBase
newTemplate.Id = cat.CatalogID + ":" + templateID + ":" + versionID
newTemplate.CatalogID = cat.CatalogID
newTemplate.DefaultVersion = parentMetadata.DefaultVersion
newTemplate.Category = parentMetadata.Category
newTemplate.IsSystem = parentMetadata.IsSystem
newTemplate.Files = make(map[string]string)
foundIcon, foundReadme, err := walkVersion(CatalogRootDir+path, &newTemplate)
if err != nil {
log.Errorf("Error reading template at path: %s, error: %v", path, err)
return nil, false
}
if !foundIcon {
//use the parent icon
newTemplate.IconLink = parentMetadata.IconLink
}
if !foundReadme {
//use the parent readme
newTemplate.ReadmeLink = parentMetadata.ReadmeLink
}
return &newTemplate, true
}
return nil, false
}
示例12: walkCatalog
func (cat *Catalog) walkCatalog(filePath string, f os.FileInfo, err error) error {
//log.Debugf("Reading folder for template:%s %v", filePath, f)
if f != nil && f.IsDir() && metadataFolder.MatchString(filePath) {
//matches ./DATA/catalogID/templates/ElasticSearch or ./DATA/catalogID/k8s-templates/ElasticSearch
// get the prefix like 'k8s' if any
prefix := metadataFolder.ReplaceAllString(filePath, "$2")
prefixWithSeparator := prefix
if prefix != "" {
prefixWithSeparator = prefix + "*"
}
log.Debugf("Reading metadata folder for template:%s, path: %v", f.Name(), filePath)
newTemplate := model.Template{
Resource: client.Resource{
Id: cat.CatalogID + ":" + prefixWithSeparator + f.Name(),
Type: "template",
},
Path: cat.CatalogID + "/" + prefixWithSeparator + f.Name(), //catalogRoot + prefix + f.Name()
TemplateBase: prefix,
}
//read the root level config.yml
readTemplateConfig(filePath, &newTemplate)
//list the folders under the root level
newTemplate.VersionLinks = make(map[string]string)
newTemplate.CatalogID = cat.CatalogID
newTemplate.TemplateVersionRancherVersion = make(map[string]string)
newTemplate.TemplateVersionRancherVersionGte = make(map[string]string)
dirList, err := ioutil.ReadDir(filePath)
if err != nil {
log.Errorf("Error reading directories at path: %s, error: %v", f.Name(), err)
} else {
for _, subfile := range dirList {
if subfile.IsDir() {
//read the subversion config.yml file into a template
subTemplate := model.Template{}
err := readRancherCompose(path.Join(filePath, subfile.Name()), &subTemplate)
if err == nil {
newTemplate.VersionLinks[subTemplate.Version] = newTemplate.Id + ":" + subfile.Name()
newTemplate.TemplateVersionRancherVersion[subTemplate.Version] = subTemplate.MinimumRancherVersion
newTemplate.TemplateVersionRancherVersionGte[subTemplate.Version] = subTemplate.MaximumRancherVersion
} else {
subfilePath := path.Join(f.Name(), subfile.Name())
if ValidationMode {
log.Fatalf("Error processing the template version: %s, error: %v", subfilePath, err)
}
log.Infof("Skipping the template version: %s, error: %v", subfilePath, err)
}
} else if strings.HasPrefix(subfile.Name(), "catalogIcon") {
newTemplate.IconLink = newTemplate.Id + "?image"
PathToImage[newTemplate.Path] = subfile.Name()
} else if strings.HasPrefix(strings.ToLower(subfile.Name()), "readme") {
newTemplate.ReadmeLink = newTemplate.Id + "?readme"
PathToReadme[newTemplate.Path] = subfile.Name()
}
}
}
cat.metadata[newTemplate.Path] = newTemplate
}
return nil
}