Example #1
0
func serversRetrieve(client *cm15.Api, serversLocator string) []Server {
	serverLocator := client.ServerLocator(serversLocator)
	servers, err := serverLocator.Index(rsapi.ApiParams{"view": "instance_detail"})
	if err != nil {
		fmt.Println("failed to find servers: %s", err)
	}
	var serverList = make([]Server, len(servers))
	for i := 0; i < len(servers); i++ {
		nextInstanceLocator := extractHref(servers[i].Links, "next_instance")
		currentInstanceLocator := extractHref(servers[i].Links, "current_instance")
		s := Server{Name: servers[i].Name, Locked: false}
		nextInstance := instanceRetrieve(client, nextInstanceLocator)
		templateLocator := extractHref(nextInstance.Links, "server_template")
		template := templateRetrieve(client, templateLocator)
		s.Template = template.Name
		templates[templateLocator] = template.Name
		alertSpecs := alertsRetrieve(client, extractHref(servers[i].Links, "alert_specs"))
		alerts = append(alerts, alertSpecs...)
		s.NextInstance = inputsRetrieve(client, extractHref(nextInstance.Links, "inputs"))
		if currentInstanceLocator != "" {
			templateLocator := instanceRetrieve(client, currentInstanceLocator)
			s.CurrentInstance = inputsRetrieve(client, extractHref(templateLocator.Links, "inputs"))
			s.Locked = templateLocator.Locked
			s.Volumes = extractVolumesInfo(client, currentInstanceLocator+"/volume_attachments")
			if len(s.Volumes) == 0 {
				s.Volumes = nil
			}
		}
		serverList[i] = s
	}
	return serverList
}
Example #2
0
File: main.go Project: dylanmei/rsc
// Makes a GET call on the given server and returns the current instance of the server.
func server(client *cm15.Api, name string) *cm15.Instance {
	serverLocator := client.ServerLocator("/api/servers")
	servers, err := serverLocator.Index(rsapi.ApiParams{"view": "instance_detail", "filter": []string{"name==" + name}})
	if err != nil {
		fail("Failed to retrieve server: %v\n", err.Error())
	}
	if len(servers) == 0 {
		fail("Could not find server with name: %v\n", name)
	} else if len(servers) != 1 {
		fail("More than one server found with name: %v\n", name)
	}
	return servers[0].CurrentInstance
}