Merge v1.2.1-master
Signed-off-by: Emile Vauge <emile@vauge.com>
This commit is contained in:
parent
a590155b0b
commit
aeb17182b4
396 changed files with 27271 additions and 9969 deletions
114
vendor/github.com/pyr/egoscale/exo.go
generated
vendored
114
vendor/github.com/pyr/egoscale/exo.go
generated
vendored
|
@ -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)
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue