本文整理汇总了Golang中github.com/juju/names.SubnetTag类的典型用法代码示例。如果您正苦于以下问题:Golang SubnetTag类的具体用法?Golang SubnetTag怎么用?Golang SubnetTag使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SubnetTag类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: OpenedPorts
// OpenedPorts returns a map of network.PortRange to unit tag for all opened
// port ranges on the machine for the subnet matching given subnetTag.
func (m *Machine) OpenedPorts(subnetTag names.SubnetTag) (map[network.PortRange]names.UnitTag, error) {
var results params.MachinePortsResults
var subnetTagAsString string
if subnetTag.Id() != "" {
subnetTagAsString = subnetTag.String()
}
args := params.MachinePortsParams{
Params: []params.MachinePorts{
{MachineTag: m.tag.String(), SubnetTag: subnetTagAsString},
},
}
err := m.st.facade.FacadeCall("GetMachinePorts", args, &results)
if err != nil {
return nil, err
}
if len(results.Results) != 1 {
return nil, fmt.Errorf("expected 1 result, got %d", len(results.Results))
}
result := results.Results[0]
if result.Error != nil {
return nil, result.Error
}
// Convert string tags to names.UnitTag before returning.
endResult := make(map[network.PortRange]names.UnitTag)
for _, ports := range result.Ports {
unitTag, err := names.ParseUnitTag(ports.UnitTag)
if err != nil {
return nil, err
}
endResult[ports.PortRange.NetworkPortRange()] = unitTag
}
return endResult, nil
}
开发者ID:makyo,项目名称:juju,代码行数:35,代码来源:machine.go
示例2: CreateSubnet
// CreateSubnet creates a new subnet with the provider.
func (api *API) CreateSubnet(subnet names.SubnetTag, space names.SpaceTag, zones []string, isPublic bool) error {
var response params.ErrorResults
params := params.CreateSubnetsParams{
Subnets: []params.CreateSubnetParams{{
SubnetTag: subnet.String(),
SpaceTag: space.String(),
Zones: zones,
IsPublic: isPublic,
}},
}
err := api.facade.FacadeCall("CreateSubnets", params, &response)
if err != nil {
return errors.Trace(err)
}
return response.OneError()
}
开发者ID:imoapps,项目名称:juju,代码行数:17,代码来源:subnets.go
示例3: AddSubnet
// AddSubnet adds an existing subnet to the environment.
func (api *API) AddSubnet(subnet names.SubnetTag, providerId network.Id, space names.SpaceTag, zones []string) error {
var response params.ErrorResults
// Prefer ProviderId when set over CIDR.
subnetTag := subnet.String()
if providerId != "" {
subnetTag = ""
}
params := params.AddSubnetsParams{
Subnets: []params.AddSubnetParams{{
SubnetTag: subnetTag,
SubnetProviderId: string(providerId),
SpaceTag: space.String(),
Zones: zones,
}},
}
err := api.facade.FacadeCall("AddSubnets", params, &response)
if err != nil {
return errors.Trace(err)
}
return response.OneError()
}
开发者ID:imoapps,项目名称:juju,代码行数:23,代码来源:subnets.go
示例4: validateSubnet
// validateSubnet ensures either subnetTag or providerId is valid (not both),
// then uses the cache to validate and lookup the provider SubnetInfo for the
// subnet, if found.
func (cache *addSubnetsCache) validateSubnet(subnetTag, providerId string) (*network.SubnetInfo, error) {
haveTag := subnetTag != ""
haveProviderId := providerId != ""
if !haveTag && !haveProviderId {
return nil, errors.Errorf("either SubnetTag or SubnetProviderId is required")
} else if haveTag && haveProviderId {
return nil, errors.Errorf("SubnetTag and SubnetProviderId cannot be both set")
}
var tag names.SubnetTag
if haveTag {
var err error
tag, err = names.ParseSubnetTag(subnetTag)
if err != nil {
return nil, errors.Annotate(err, "given SubnetTag is invalid")
}
}
// Otherwise we need the cache to validate.
if err := cache.cacheSubnets(); err != nil {
return nil, errors.Trace(err)
}
if haveTag {
providerIds, ok := cache.providerIdsByCIDR[tag.Id()]
if !ok || providerIds.IsEmpty() {
return nil, errors.NotFoundf("subnet with CIDR %q", tag.Id())
}
if providerIds.Size() > 1 {
ids := `"` + strings.Join(providerIds.SortedValues(), `", "`) + `"`
return nil, errors.Errorf(
"multiple subnets with CIDR %q: retry using ProviderId from: %s",
tag.Id(), ids,
)
}
// A single CIDR matched.
providerId = providerIds.Values()[0]
}
info, ok := cache.subnetsByProviderId[providerId]
if !ok || info == nil {
return nil, errors.NotFoundf(
"subnet with CIDR %q and ProviderId %q",
tag.Id(), providerId,
)
}
// Do last-call validation.
if !names.IsValidSubnet(info.CIDR) {
_, ipnet, err := net.ParseCIDR(info.CIDR)
if err != nil && info.CIDR != "" {
// The underlying error is not important here, just that
// the CIDR is invalid.
return nil, errors.Errorf(
"subnet with CIDR %q and ProviderId %q: invalid CIDR",
info.CIDR, providerId,
)
}
if info.CIDR == "" {
return nil, errors.Errorf(
"subnet with ProviderId %q: empty CIDR", providerId,
)
}
return nil, errors.Errorf(
"subnet with ProviderId %q: incorrect CIDR format %q, expected %q",
providerId, info.CIDR, ipnet.String(),
)
}
return info, nil
}
开发者ID:makyo,项目名称:juju,代码行数:72,代码来源:subnets.go
注:本文中的github.com/juju/names.SubnetTag类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论