1 Star 0 Fork 0

powerpaas/machine

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
storageServiceClient.go 3.25 KB
一键复制 编辑 原始数据 按行查看 历史
Ben Firshman 提交于 2014-12-04 20:28 . Vendor dependencies with Godep
package storageServiceClient
import (
"encoding/base64"
"encoding/xml"
"errors"
"fmt"
azure "github.com/MSOpenTech/azure-sdk-for-go"
"strings"
)
const (
azureXmlns = "http://schemas.microsoft.com/windowsazure"
azureStorageServiceListURL = "services/storageservices"
azureStorageServiceURL = "services/storageservices/%s"
blobEndpointNotFoundError = "Blob endpoint was not found in storage serice %s"
)
func GetStorageServiceList() (*StorageServiceList, error) {
storageServiceList := new(StorageServiceList)
response, err := azure.SendAzureGetRequest(azureStorageServiceListURL)
if err != nil {
return nil, err
}
err = xml.Unmarshal(response, storageServiceList)
if err != nil {
return storageServiceList, err
}
return storageServiceList, nil
}
func GetStorageServiceByName(serviceName string) (*StorageService, error) {
if len(serviceName) == 0 {
return nil, fmt.Errorf(azure.ParamNotSpecifiedError, "serviceName")
}
storageService := new(StorageService)
requestURL := fmt.Sprintf(azureStorageServiceURL, serviceName)
response, err := azure.SendAzureGetRequest(requestURL)
if err != nil {
return nil, err
}
err = xml.Unmarshal(response, storageService)
if err != nil {
return nil, err
}
return storageService, nil
}
func GetStorageServiceByLocation(location string) (*StorageService, error) {
if len(location) == 0 {
return nil, fmt.Errorf(azure.ParamNotSpecifiedError, "location")
}
storageService := new(StorageService)
storageServiceList, err := GetStorageServiceList()
if err != nil {
return storageService, err
}
for _, storageService := range storageServiceList.StorageServices {
if storageService.StorageServiceProperties.Location != location {
continue
}
return &storageService, nil
}
return nil, nil
}
func CreateStorageService(name, location string) (*StorageService, error) {
if len(name) == 0 {
return nil, fmt.Errorf(azure.ParamNotSpecifiedError, "name")
}
if len(location) == 0 {
return nil, fmt.Errorf(azure.ParamNotSpecifiedError, "location")
}
storageDeploymentConfig := createStorageServiceDeploymentConf(name, location)
deploymentBytes, err := xml.Marshal(storageDeploymentConfig)
if err != nil {
return nil, err
}
requestId, err := azure.SendAzurePostRequest(azureStorageServiceListURL, deploymentBytes)
if err != nil {
return nil, err
}
azure.WaitAsyncOperation(requestId)
storageService, err := GetStorageServiceByName(storageDeploymentConfig.ServiceName)
if err != nil {
return nil, err
}
return storageService, nil
}
func GetBlobEndpoint(storageService *StorageService) (string, error) {
for _, endpoint := range storageService.StorageServiceProperties.Endpoints {
if !strings.Contains(endpoint, ".blob.core") {
continue
}
return endpoint, nil
}
return "", errors.New(fmt.Sprintf(blobEndpointNotFoundError, storageService.ServiceName))
}
func createStorageServiceDeploymentConf(name, location string) StorageServiceDeployment {
storageServiceDeployment := StorageServiceDeployment{}
storageServiceDeployment.ServiceName = name
label := base64.StdEncoding.EncodeToString([]byte(name))
storageServiceDeployment.Label = label
storageServiceDeployment.Location = location
storageServiceDeployment.Xmlns = azureXmlns
return storageServiceDeployment
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/powerpaas/machine.git
git@gitee.com:powerpaas/machine.git
powerpaas
machine
machine
v0.2.0-rc2

搜索帮助

Cb406eda 1850385 E526c682 1850385