You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.3 KiB
66 lines
2.3 KiB
package main |
|
|
|
import ( |
|
"bytes" |
|
"log" |
|
"net/http" |
|
"io/ioutil" |
|
"strings" |
|
"encoding/json" |
|
/* |
|
"fmt" |
|
*/ |
|
) |
|
|
|
func main() { |
|
// Create a slice to insert the ID of the current droplet |
|
url_slice := []string{"https://api.digitalocean.com/v2/droplets/", get_droplet_id("foo"), "/actions"} |
|
// Construct the string from the slice |
|
droplet_actions_url := strings.Join(url_slice, "") |
|
/* ---- Old ------ Using http.Get |
|
// Create the json object to be posted |
|
post_body, _ := json.Marshal(map[string]string{"type": "power_off"}) |
|
// Open a buffer for the post response body |
|
response_body := bytes.NewBuffer(post_body) |
|
// instantiate the POST object |
|
http_response, err := http.Post(droplet_actions_url, "application/json", response_body) |
|
*/ |
|
do_client := &http.Client{ |
|
CheckRedirect: redirectPolicyFunc, |
|
} |
|
http_response, err := do_client.Get(droplet_actions_url)) |
|
if err != nil { |
|
log.Fatalf("Responese Error: %v", err) |
|
} |
|
// Create an http.Request object to store the request data |
|
// Is 'nil' the correct parameter? Check the docs |
|
// How is the response body cached? Is the 'nil' parameter the actual POST body? |
|
// Is the post_body to be fashioned with json.Marshal as above? Where is it |
|
// used as a parameter? |
|
http_request, err := http.Request("POST", droplet_actions_url, nil) |
|
// Add the Authorization header with the OAuth token to the request data |
|
http_request.Header.Add("Authorization", "Bearer 72a0ec632d0834dd3e1b72ec096f4644f527853a747875ca387a0269a625597a") |
|
http_response, err := client.Post(droplet_actions_url, "application/json", response_body) |
|
// Pause thread until response is read and http connection closes (I think?) |
|
defer http_response.Body.Close() |
|
body, err := ioutil.ReadAll(response_body) |
|
if err != nil { |
|
log.Fatalln(err) |
|
} |
|
// Turn the http response object into a string |
|
response_body_string := string(body) |
|
log.Printf(response_body_string) |
|
} |
|
|
|
func get_droplet_id(hostname string) string { |
|
/* |
|
Eventually, the goal is to use droplet tags to group the cluster, |
|
use the droplet tags api to list all droplets, differentially |
|
identify 'other' nodes with knowledge of our current droplet properties, |
|
and finally return the droplet_id that corresponds to the supplied hostname |
|
*/ |
|
|
|
// var droplet_id string = "253365345" |
|
var droplet_id string = "253365347" |
|
return droplet_id |
|
}
|
|
|