func CreateSecret()

in cmd/hub/api/secret.go [27:106]


func CreateSecret(entityKind, selector, name, component, kind string, values map[string]string) {
	id := ""
	resource := ""
	var parameters []Parameter
	var qErr error

	switch entityKind {
	case "environment":
		env, err := environmentBy(selector)
		qErr = err
		if err == nil && env != nil {
			id = env.Id
			resource = environmentsResource
			parameters = env.Parameters
		}
	case "template":
		template, err := templateBy(selector)
		qErr = err
		if err == nil && template != nil {
			id = template.Id
			resource = templatesResource
			parameters = template.Parameters
		}
	case "instance":
		instance, err := stackInstanceBy(selector)
		qErr = err
		if err == nil && instance != nil {
			id = instance.Id
			resource = stackInstancesResource
			parameters = instance.Parameters
		}
	default:
		log.Fatalf("Unknown entity kind `%s`", entityKind)
	}
	if id == "" && qErr == nil {
		qErr = errors.New("Not Found")
	}
	if qErr != nil {
		log.Fatalf("Unable to query %s: %v", entityKind, qErr)
	}

	for _, existing := range parameters {
		if !util.Empty(existing.Value) && existing.Name == name &&
			((existing.Component == "" && component == "") || existing.Component == component) {
			qname := name
			if component != "" {
				qname = fmt.Sprintf("%s|%s", name, component)
			}
			log.Fatalf("Parameter `%s` already exist in %s `%s` and is not empty", qname, entityKind, selector)
		}
	}

	secretId, err := createSecret(resource, id, name, component, kind, values)
	if err != nil {
		log.Fatalf("Unable to create %s secret: %v", entityKind, err)
	}
	if config.Verbose {
		log.Printf("Secret `%s` created in %s `%s` with id `%s`",
			name, entityKind, selector, secretId)
	}
	if config.Verbose {
		switch entityKind {
		case "environment":
			env, err := environmentById(id)
			if err == nil {
				formatEnvironment(env)
			}
		case "template":
			template, err := templateById(id)
			if err == nil {
				formatTemplate(template)
			}
		case "instance":
			instance, err := stackInstanceBy(id)
			if err == nil {
				formatStackInstance(instance)
			}
		}
	}
}