1 Star 0 Fork 0

zhuchance / kubernetes

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
requests.go 4.74 KB
一键复制 编辑 原始数据 按行查看 历史
Masahiro Sano 提交于 2015-04-18 18:35 . Update gophercloud to latest
package lbpools
import (
"github.com/rackspace/gophercloud"
"github.com/rackspace/gophercloud/pagination"
)
// List returns all load balancer pools that are associated with RackConnect.
func List(c *gophercloud.ServiceClient) pagination.Pager {
url := listURL(c)
createPage := func(r pagination.PageResult) pagination.Page {
return PoolPage{pagination.SinglePageBase(r)}
}
return pagination.NewPager(c, url, createPage)
}
// Get retrieves a specific load balancer pool (that is associated with RackConnect)
// based on its unique ID.
func Get(c *gophercloud.ServiceClient, id string) GetResult {
var res GetResult
_, res.Err = c.Get(getURL(c, id), &res.Body, nil)
return res
}
// ListNodes returns all load balancer pool nodes that are associated with RackConnect
// for the given LB pool ID.
func ListNodes(c *gophercloud.ServiceClient, id string) pagination.Pager {
url := listNodesURL(c, id)
createPage := func(r pagination.PageResult) pagination.Page {
return NodePage{pagination.SinglePageBase(r)}
}
return pagination.NewPager(c, url, createPage)
}
// CreateNode adds the cloud server with the given serverID to the load balancer
// pool with the given poolID.
func CreateNode(c *gophercloud.ServiceClient, poolID, serverID string) CreateNodeResult {
var res CreateNodeResult
reqBody := map[string]interface{}{
"cloud_server": map[string]string{
"id": serverID,
},
}
_, res.Err = c.Post(createNodeURL(c, poolID), reqBody, &res.Body, nil)
return res
}
// ListNodesDetails returns all load balancer pool nodes that are associated with RackConnect
// for the given LB pool ID with all their details.
func ListNodesDetails(c *gophercloud.ServiceClient, id string) pagination.Pager {
url := listNodesDetailsURL(c, id)
createPage := func(r pagination.PageResult) pagination.Page {
return NodeDetailsPage{pagination.SinglePageBase(r)}
}
return pagination.NewPager(c, url, createPage)
}
// GetNode retrieves a specific LB pool node (that is associated with RackConnect)
// based on its unique ID and the LB pool's unique ID.
func GetNode(c *gophercloud.ServiceClient, poolID, nodeID string) GetNodeResult {
var res GetNodeResult
_, res.Err = c.Get(nodeURL(c, poolID, nodeID), &res.Body, nil)
return res
}
// DeleteNode removes the node with the given nodeID from the LB pool with the
// given poolID.
func DeleteNode(c *gophercloud.ServiceClient, poolID, nodeID string) DeleteNodeResult {
var res DeleteNodeResult
_, res.Err = c.Delete(deleteNodeURL(c, poolID, nodeID), nil)
return res
}
// GetNodeDetails retrieves a specific LB pool node's details based on its unique
// ID and the LB pool's unique ID.
func GetNodeDetails(c *gophercloud.ServiceClient, poolID, nodeID string) GetNodeDetailsResult {
var res GetNodeDetailsResult
_, res.Err = c.Get(nodeDetailsURL(c, poolID, nodeID), &res.Body, nil)
return res
}
// NodeOpts are options for bulk adding/deleting nodes to LB pools.
type NodeOpts struct {
ServerID string
PoolID string
}
// NodesOpts are a slice of NodeOpts, passed as options for bulk operations.
type NodesOpts []NodeOpts
// ToLBPoolCreateNodesMap serializes a NodesOpts into a map to send in the request.
func (o NodesOpts) ToLBPoolCreateNodesMap() ([]map[string]interface{}, error) {
m := make([]map[string]interface{}, len(o))
for i := range o {
m[i] = map[string]interface{}{
"cloud_server": map[string]string{
"id": o[i].ServerID,
},
"load_balancer_pool": map[string]string{
"id": o[i].PoolID,
},
}
}
return m, nil
}
// CreateNodes adds the cloud servers with the given serverIDs to the corresponding
// load balancer pools with the given poolIDs.
func CreateNodes(c *gophercloud.ServiceClient, opts NodesOpts) CreateNodesResult {
var res CreateNodesResult
reqBody, err := opts.ToLBPoolCreateNodesMap()
if err != nil {
res.Err = err
return res
}
_, res.Err = c.Post(createNodesURL(c), reqBody, &res.Body, nil)
return res
}
// DeleteNodes removes the cloud servers with the given serverIDs to the corresponding
// load balancer pools with the given poolIDs.
func DeleteNodes(c *gophercloud.ServiceClient, opts NodesOpts) DeleteNodesResult {
var res DeleteNodesResult
reqBody, err := opts.ToLBPoolCreateNodesMap()
if err != nil {
res.Err = err
return res
}
_, res.Err = c.Request("DELETE", createNodesURL(c), gophercloud.RequestOpts{
JSONBody: &reqBody,
OkCodes: []int{204},
})
return res
}
// ListNodesDetailsForServer is similar to ListNodesDetails but only returns nodes
// for the given serverID.
func ListNodesDetailsForServer(c *gophercloud.ServiceClient, serverID string) pagination.Pager {
url := listNodesForServerURL(c, serverID)
createPage := func(r pagination.PageResult) pagination.Page {
return NodeDetailsForServerPage{pagination.SinglePageBase(r)}
}
return pagination.NewPager(c, url, createPage)
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/meoom/kubernetes.git
git@gitee.com:meoom/kubernetes.git
meoom
kubernetes
kubernetes
v1.1.0-beta

搜索帮助

344bd9b3 5694891 D2dac590 5694891