ACME TLS ALPN
This commit is contained in:
parent
17ad5153b8
commit
139f280f35
258 changed files with 25528 additions and 1516 deletions
202
vendor/github.com/sacloud/libsacloud/api/gslb.go
generated
vendored
Normal file
202
vendor/github.com/sacloud/libsacloud/api/gslb.go
generated
vendored
Normal file
|
@ -0,0 +1,202 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
// "strings"
|
||||
"github.com/sacloud/libsacloud/sacloud"
|
||||
)
|
||||
|
||||
//HACK: さくらのAPI側仕様: CommonServiceItemsの内容によってJSONフォーマットが異なるため
|
||||
// DNS/GSLB/シンプル監視それぞれでリクエスト/レスポンスデータ型を定義する。
|
||||
|
||||
// SearchGSLBResponse GSLB検索レスポンス
|
||||
type SearchGSLBResponse struct {
|
||||
// Total 総件数
|
||||
Total int `json:",omitempty"`
|
||||
// From ページング開始位置
|
||||
From int `json:",omitempty"`
|
||||
// Count 件数
|
||||
Count int `json:",omitempty"`
|
||||
// CommonServiceGSLBItems GSLBリスト
|
||||
CommonServiceGSLBItems []sacloud.GSLB `json:"CommonServiceItems,omitempty"`
|
||||
}
|
||||
|
||||
type gslbRequest struct {
|
||||
CommonServiceGSLBItem *sacloud.GSLB `json:"CommonServiceItem,omitempty"`
|
||||
From int `json:",omitempty"`
|
||||
Count int `json:",omitempty"`
|
||||
Sort []string `json:",omitempty"`
|
||||
Filter map[string]interface{} `json:",omitempty"`
|
||||
Exclude []string `json:",omitempty"`
|
||||
Include []string `json:",omitempty"`
|
||||
}
|
||||
|
||||
type gslbResponse struct {
|
||||
*sacloud.ResultFlagValue
|
||||
*sacloud.GSLB `json:"CommonServiceItem,omitempty"`
|
||||
}
|
||||
|
||||
// GSLBAPI GSLB API
|
||||
type GSLBAPI struct {
|
||||
*baseAPI
|
||||
}
|
||||
|
||||
// NewGSLBAPI GSLB API作成
|
||||
func NewGSLBAPI(client *Client) *GSLBAPI {
|
||||
return &GSLBAPI{
|
||||
&baseAPI{
|
||||
client: client,
|
||||
FuncGetResourceURL: func() string {
|
||||
return "commonserviceitem"
|
||||
},
|
||||
FuncBaseSearchCondition: func() *sacloud.Request {
|
||||
res := &sacloud.Request{}
|
||||
res.AddFilter("Provider.Class", "gslb")
|
||||
return res
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
// Find 検索
|
||||
func (api *GSLBAPI) Find() (*SearchGSLBResponse, error) {
|
||||
|
||||
data, err := api.client.newRequest("GET", api.getResourceURL(), api.getSearchState())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var res SearchGSLBResponse
|
||||
if err := json.Unmarshal(data, &res); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &res, nil
|
||||
}
|
||||
|
||||
func (api *GSLBAPI) request(f func(*gslbResponse) error) (*sacloud.GSLB, error) {
|
||||
res := &gslbResponse{}
|
||||
err := f(res)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return res.GSLB, nil
|
||||
}
|
||||
|
||||
func (api *GSLBAPI) createRequest(value *sacloud.GSLB) *gslbResponse {
|
||||
return &gslbResponse{GSLB: value}
|
||||
}
|
||||
|
||||
// New 新規作成用パラメーター作成
|
||||
func (api *GSLBAPI) New(name string) *sacloud.GSLB {
|
||||
return sacloud.CreateNewGSLB(name)
|
||||
}
|
||||
|
||||
// Create 新規作成
|
||||
func (api *GSLBAPI) Create(value *sacloud.GSLB) (*sacloud.GSLB, error) {
|
||||
return api.request(func(res *gslbResponse) error {
|
||||
return api.create(api.createRequest(value), res)
|
||||
})
|
||||
}
|
||||
|
||||
// Read 読み取り
|
||||
func (api *GSLBAPI) Read(id int64) (*sacloud.GSLB, error) {
|
||||
return api.request(func(res *gslbResponse) error {
|
||||
return api.read(id, nil, res)
|
||||
})
|
||||
}
|
||||
|
||||
// Update 更新
|
||||
func (api *GSLBAPI) Update(id int64, value *sacloud.GSLB) (*sacloud.GSLB, error) {
|
||||
return api.request(func(res *gslbResponse) error {
|
||||
return api.update(id, api.createRequest(value), res)
|
||||
})
|
||||
}
|
||||
|
||||
// Delete 削除
|
||||
func (api *GSLBAPI) Delete(id int64) (*sacloud.GSLB, error) {
|
||||
return api.request(func(res *gslbResponse) error {
|
||||
return api.delete(id, nil, res)
|
||||
})
|
||||
}
|
||||
|
||||
// SetupGSLBRecord GSLB配下にサーバー追加
|
||||
func (api *GSLBAPI) SetupGSLBRecord(gslbName string, ip string) ([]string, error) {
|
||||
|
||||
gslbItem, err := api.findOrCreateBy(gslbName)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
gslbItem.Settings.GSLB.AddServer(ip)
|
||||
res, err := api.updateGSLBServers(gslbItem)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if gslbItem.ID == sacloud.EmptyID {
|
||||
return []string{res.Status.FQDN}, nil
|
||||
}
|
||||
return nil, nil
|
||||
|
||||
}
|
||||
|
||||
// DeleteGSLBServer GSLB配下のサーバー削除
|
||||
func (api *GSLBAPI) DeleteGSLBServer(gslbName string, ip string) error {
|
||||
gslbItem, err := api.findOrCreateBy(gslbName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
gslbItem.Settings.GSLB.DeleteServer(ip)
|
||||
|
||||
if gslbItem.HasGSLBServer() {
|
||||
_, err = api.updateGSLBServers(gslbItem)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
} else {
|
||||
_, err = api.Delete(gslbItem.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (api *GSLBAPI) findOrCreateBy(gslbName string) (*sacloud.GSLB, error) {
|
||||
|
||||
req := &sacloud.Request{}
|
||||
req.AddFilter("Name", gslbName)
|
||||
res, err := api.Find()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
//すでに登録されている場合
|
||||
var gslbItem *sacloud.GSLB
|
||||
if res.Count > 0 {
|
||||
gslbItem = &res.CommonServiceGSLBItems[0]
|
||||
} else {
|
||||
gslbItem = sacloud.CreateNewGSLB(gslbName)
|
||||
}
|
||||
|
||||
return gslbItem, nil
|
||||
}
|
||||
|
||||
func (api *GSLBAPI) updateGSLBServers(gslbItem *sacloud.GSLB) (*sacloud.GSLB, error) {
|
||||
|
||||
var item *sacloud.GSLB
|
||||
var err error
|
||||
|
||||
if gslbItem.ID == sacloud.EmptyID {
|
||||
item, err = api.Create(gslbItem)
|
||||
} else {
|
||||
item, err = api.Update(gslbItem.ID, gslbItem)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return item, nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue