Merge v1.2.1-master

Signed-off-by: Emile Vauge <emile@vauge.com>
This commit is contained in:
Emile Vauge 2017-04-11 17:10:46 +02:00
parent a590155b0b
commit aeb17182b4
No known key found for this signature in database
GPG key ID: D808B4C167352E59
396 changed files with 27271 additions and 9969 deletions

114
vendor/github.com/pyr/egoscale/exo.go generated vendored
View file

@ -3,115 +3,37 @@ package main
import (
"egoscale"
"fmt"
"flag"
"os"
"time"
)
var apikey = flag.String("xk", "", "Exoscale API Key")
var apisecret = flag.String("xs", "", "Exoscale API Secret")
var endpoint = flag.String("xe", "https://api.exoscale.ch/compute", "Exoscale API Endpoint")
func main() {
endpoint := os.Getenv("EXOSCALE_ENDPOINT")
apiKey := os.Getenv("EXOSCALE_API_KEY")
apiSecret := os.Getenv("EXOSCALE_API_SECRET")
client := egoscale.NewClient(endpoint, apiKey, apiSecret)
flag.Parse()
client := egoscale.NewClient(*endpoint, *apikey, *apisecret)
topo, err := client.GetTopology()
vms, err := client.ListVirtualMachines()
if err != nil {
fmt.Printf("got error: %+v\n", err)
return
fmt.Printf("got error: %s\n", err)
os.Exit(1)
}
rules := []egoscale.SecurityGroupRule{
{
SecurityGroupId: "",
Cidr: "0.0.0.0/0",
Protocol: "TCP",
Port: 22,
},
{
SecurityGroupId: "",
Cidr: "0.0.0.0/0",
Protocol: "TCP",
Port: 2376,
},
{
SecurityGroupId: "",
Cidr: "0.0.0.0/0",
Protocol: "ICMP",
IcmpType: 8,
IcmpCode: 0,
},
}
for _, vm := range(vms) {
sgid, present := topo.SecurityGroups["egoscale"]
if !present {
resp, err := client.CreateSecurityGroupWithRules("egoscale", rules, make([]egoscale.SecurityGroupRule, 0, 0))
if err != nil {
fmt.Printf("got error: %+v\n", err)
return
fmt.Println("vm:", vm.Displayname)
for _, nic := range(vm.Nic) {
fmt.Println("ip:", nic.Ipaddress)
}
sgid = resp.Id
}
agid, present := topo.AffinityGroups["egoscale"]
if !present {
//Affinity Group Create is an async call
jobid, err := client.CreateAffinityGroup("egoscale")
var resp *egoscale.QueryAsyncJobResultResponse
for i := 0; i <= 10; i++ {
resp, err = client.PollAsyncJob(jobid)
if err != nil {
fmt.Printf("got error: %+v\n", err)
return
}
if resp.Jobstatus == 1 {
break
}
time.Sleep(5 * time.Second)
for _, sg := range(vm.SecurityGroups) {
fmt.Println("securitygroup:", sg.Name)
}
}
fmt.Printf("Affinity Group ID :%v\n", agid)
os.Exit(0)
profile := egoscale.MachineProfile{
Template: topo.Images["ubuntu-14.04"][10],
ServiceOffering: topo.Profiles["large"],
SecurityGroups: []string{sgid},
Keypair: topo.Keypairs[0],
AffinityGroups: []string{"egoscale"},
Userdata: "#cloud-config\nmanage_etc_hosts: true\nfqdn: deployed-by-egoscale\n",
Zone: topo.Zones["ch-gva-2"],
Name: "deployed-by-egoscale",
}
jobid, err := client.CreateVirtualMachine(profile)
if err != nil {
fmt.Printf("got error: %+v\n", err)
return
}
var resp *egoscale.QueryAsyncJobResultResponse
for i := 0; i <= 10; i++ {
resp, err = client.PollAsyncJob(jobid)
if err != nil {
fmt.Printf("got error: %+v\n", err)
return
}
if resp.Jobstatus == 1 {
break
}
time.Sleep(5 * time.Second)
}
vm, err := client.AsyncToVirtualMachine(*resp)
if err != nil {
fmt.Printf("got error: %+v\n", err)
}
fmt.Printf("new machine up and running at: %s\n", vm.Nic[0].Ipaddress)
}