Commit 3bbd6e8a authored by Brendan Melville's avatar Brendan Melville

Adds support for dm deployed-instances <type>:<version>.

When you deploy with <type>:<version>, the type actually seen by DM is
the template URL. While the template URL still shows up as the type when
performing a "dm deployed-types", this at least lets you look for
instances of a known type.

Refactoring the type URL code in client a bit.

Refactoring getTypeUrl.
parent 8a7fcb24
...@@ -110,10 +110,7 @@ func main() { ...@@ -110,10 +110,7 @@ func main() {
fmt.Printf("Templates:\n") fmt.Printf("Templates:\n")
for _, t := range templates { for _, t := range templates {
fmt.Printf("%s:%s\n", t.Name, t.Version) fmt.Printf("%s:%s\n", t.Name, t.Version)
downloadURL, err := git.GetURL(t) downloadURL := getDownloadUrl(t)
if err != nil {
log.Printf("Failed to get download URL for template %s:%s", t.Name, t.Version)
}
fmt.Printf("\tdownload URL: %s\n", downloadURL) fmt.Printf("\tdownload URL: %s\n", downloadURL)
} }
...@@ -159,8 +156,9 @@ func main() { ...@@ -159,8 +156,9 @@ func main() {
usage() usage()
} }
path := fmt.Sprintf("types/%s/instances", url.QueryEscape(args[1])) tUrl := getTypeUrl(args[1])
action := fmt.Sprintf("list deployed instances of type %s", args[1]) path := fmt.Sprintf("types/%s/instances", url.QueryEscape(tUrl))
action := fmt.Sprintf("list deployed instances of type %s", tUrl)
callService(path, "GET", action, nil) callService(path, "GET", action, nil)
default: default:
usage() usage()
...@@ -204,28 +202,38 @@ func describeType(args []string) { ...@@ -204,28 +202,38 @@ func describeType(args []string) {
usage() usage()
} }
var tUrl string tUrl := getTypeUrl(args[1])
schemaUrl := tUrl + ".schema"
fmt.Println(callHttp(schemaUrl, "GET", "get schema for type ("+tUrl+")", nil))
}
if strings.HasPrefix(args[1], "http://") || strings.HasPrefix(args[1], "https://") { func getTypeUrl(tName string) string {
if isHttp(tName) {
// User can pass raw URL to template. // User can pass raw URL to template.
tUrl = args[1] return tName
} else { }
// User can pass registry type. // User can pass registry type.
t := getRegistryType(args[1]) t := getRegistryType(tName)
if t == nil { if t == nil {
log.Fatalf("Invalid type name, must be in the form \"<type-name>:<version>\": %s", args[1]) log.Fatalf("Invalid type name, must be in the form \"<type-name>:<version>\": %s", tName)
} }
return getDownloadUrl(*t)
}
func getDownloadUrl(t registry.Type) string {
git := getGitRegistry() git := getGitRegistry()
url, err := git.GetURL(*t) url, err := git.GetURL(t)
if err != nil { if err != nil {
log.Fatalf("Failed to fetch type information for %s: %s", args[1], err) log.Fatalf("Failed to fetch type information for \"%s:%s\": %s", t.Name, t.Version, err)
}
tUrl = url
} }
schemaUrl := tUrl + ".schema" return url
fmt.Println(callHttp(schemaUrl, "GET", "get schema for type ("+tUrl+")", nil)) }
func isHttp(t string) bool {
return strings.HasPrefix(t, "http://") || strings.HasPrefix(t, "https://")
} }
func loadTemplate(args []string) *expander.Template { func loadTemplate(args []string) *expander.Template {
...@@ -267,11 +275,7 @@ func getRegistryType(fullType string) *registry.Type { ...@@ -267,11 +275,7 @@ func getRegistryType(fullType string) *registry.Type {
} }
func buildTemplateFromType(t registry.Type) *expander.Template { func buildTemplateFromType(t registry.Type) *expander.Template {
git := getGitRegistry() downloadURL := getDownloadUrl(t)
downloadURL, err := git.GetURL(t)
if err != nil {
log.Fatalf("Failed to get download URL for type %s:%s\n%s\n", t.Name, t.Version, err)
}
props := make(map[string]interface{}) props := make(map[string]interface{})
if *properties != "" { if *properties != "" {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment