iij / p2pubapi

Golang binding for IIJ GIO P2 PUB API
6 stars 4 forks source link

Golang binding for P2PUB API

Install

...or download binary

Use p2pub command

# vi setup.sh
IIJAPI_ACCESS_KEY=<YOUR ACCESS KEY>
IIJAPI_SECRET_KEY=<YOUR SECRET KEY>
GISSERVICECODE=<YOUR GIS SERVICE CODE>
# . ./setup.sh
# p2pub VMListGet
{... (result json)}
# p2pub VMGet --IvmServiceCode=ivm12345678
# p2pub --format yaml VMListGet
(result YAML)

Example

Usage for Golang users

API reference

package main

// Usage:
//   export IIJAPI_ACCESS_KEY=<YOUR ACCESSS KEY>
//   export IIJAPI_SECRET_KEY=<YOUR SECRET KEY>
//   export GISSERVICECODE=<YOUR GIS CODE>
//   $0

import (
    "log"
    "os"

    "github.com/iij/p2pubapi"
    "github.com/iij/p2pubapi/protocol"
)

func main() {
    api := p2pubapi.NewAPI(os.Getenv("IIJAPI_ACCESS_KEY"), os.Getenv("IIJAPI_SECRET_KEY"))
    // list VMs
    listarg := protocol.VMListGet{}
    listarg.GisServiceCode = os.Getenv("GISSERVICECODE")
    var listresp = protocol.VMListGetResponse{}
    if err := p2pubapi.Call(*api, listarg, &listresp); err != nil {
        log.Println("List API error", err)
    }

    // Power On Stopped VMs
    arg := protocol.VMPower{}
    arg.GisServiceCode = os.Getenv("GISSERVICECODE")
    arg.Power = "On"
    for _, v := range listresp.VirtualServerList {
        if v.ResourceStatus == "Stopped" {
            log.Println("Power On VM:", v.ServiceCode, v.OSType)
            arg.IvmServiceCode = v.ServiceCode
            var resp = protocol.VMPowerResponse{}
            if err := p2pubapi.Call(*api, arg, &resp); err != nil {
                log.Println("API error", err)
            }
            log.Printf("%+v", resp)
        }
    }
}

Example