本文整理汇总了Golang中github.com/juju/names.NewNetworkTag函数的典型用法代码示例。如果您正苦于以下问题:Golang NewNetworkTag函数的具体用法?Golang NewNetworkTag怎么用?Golang NewNetworkTag使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewNetworkTag函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestNetworkNames
func (s *networkSuite) TestNetworkNames(c *gc.C) {
for i, test := range networkNameTests {
c.Logf("test %d: %q", i, test.pattern)
c.Check(names.IsNetwork(test.pattern), gc.Equals, test.valid)
if test.valid {
expectTag := fmt.Sprintf("%s-%s", names.NetworkTagKind, test.pattern)
c.Check(names.NewNetworkTag(test.pattern).String(), gc.Equals, expectTag)
} else {
expectErr := fmt.Sprintf("%q is not a valid network name", test.pattern)
testNetworkTag := func() { names.NewNetworkTag(test.pattern) }
c.Check(testNetworkTag, gc.PanicMatches, regexp.QuoteMeta(expectErr))
}
}
}
示例2: TestGetMachineActiveNetworks
func (s *firewallerSuite) TestGetMachineActiveNetworks(c *gc.C) {
s.openPorts(c)
args := addFakeEntities(params.Entities{Entities: []params.Entity{
{Tag: s.machines[0].Tag().String()},
{Tag: s.machines[1].Tag().String()},
{Tag: s.machines[2].Tag().String()},
{Tag: s.service.Tag().String()},
{Tag: s.units[0].Tag().String()},
}})
networkTag := names.NewNetworkTag(network.DefaultPublic)
expectResults := []string{networkTag.String()}
result, err := s.firewaller.GetMachineActiveNetworks(args)
c.Assert(err, jc.ErrorIsNil)
c.Assert(result, jc.DeepEquals, params.StringsResults{
Results: []params.StringsResult{
{Result: expectResults},
{Result: nil, Error: nil},
{Result: expectResults},
{Error: apiservertesting.ErrUnauthorized},
{Error: apiservertesting.ErrUnauthorized},
{Error: apiservertesting.NotFoundError("machine 42")},
{Error: apiservertesting.ErrUnauthorized},
{Error: apiservertesting.ErrUnauthorized},
{Error: apiservertesting.ErrUnauthorized},
{Error: apiservertesting.ErrUnauthorized},
{Error: apiservertesting.ErrUnauthorized},
},
})
}
示例3: prepareNetworkAndInterfaces
func (task *provisionerTask) prepareNetworkAndInterfaces(networkInfo []network.InterfaceInfo) (
networks []params.Network, ifaces []params.NetworkInterface, err error) {
if len(networkInfo) == 0 {
return nil, nil, nil
}
visitedNetworks := set.NewStrings()
for _, info := range networkInfo {
if !names.IsValidNetwork(info.NetworkName) {
return nil, nil, errors.Errorf("invalid network name %q", info.NetworkName)
}
networkTag := names.NewNetworkTag(info.NetworkName).String()
if !visitedNetworks.Contains(networkTag) {
networks = append(networks, params.Network{
Tag: networkTag,
ProviderId: string(info.ProviderId),
CIDR: info.CIDR,
VLANTag: info.VLANTag,
})
visitedNetworks.Add(networkTag)
}
ifaces = append(ifaces, params.NetworkInterface{
InterfaceName: info.ActualInterfaceName(),
MACAddress: info.MACAddress,
NetworkTag: networkTag,
IsVirtual: info.IsVirtual(),
Disabled: info.Disabled,
})
}
return networks, ifaces, nil
}
示例4: prepareNetworkAndInterfaces
func (task *provisionerTask) prepareNetworkAndInterfaces(networkInfo []network.Info) (
networks []params.Network, ifaces []params.NetworkInterface) {
if len(networkInfo) == 0 {
return nil, nil
}
visitedNetworks := set.NewStrings()
for _, info := range networkInfo {
networkTag := names.NewNetworkTag(info.NetworkName).String()
if !visitedNetworks.Contains(networkTag) {
networks = append(networks, params.Network{
Tag: networkTag,
ProviderId: info.ProviderId,
CIDR: info.CIDR,
VLANTag: info.VLANTag,
})
visitedNetworks.Add(networkTag)
}
ifaces = append(ifaces, params.NetworkInterface{
InterfaceName: info.InterfaceName,
MACAddress: info.MACAddress,
NetworkTag: networkTag,
IsVirtual: info.IsVirtual(),
})
}
return networks, ifaces
}
示例5: GetMachineActiveNetworks
// GetMachineActiveNetworks returns the tags of the all networks the
// each given machine has open ports on.
func (f *FirewallerAPI) GetMachineActiveNetworks(args params.Entities) (params.StringsResults, error) {
result := params.StringsResults{
Results: make([]params.StringsResult, len(args.Entities)),
}
canAccess, err := f.accessMachine()
if err != nil {
return params.StringsResults{}, err
}
for i, entity := range args.Entities {
machineTag, err := names.ParseMachineTag(entity.Tag)
if err != nil {
result.Results[i].Error = common.ServerError(common.ErrPerm)
continue
}
machine, err := f.getMachine(canAccess, machineTag)
if err != nil {
result.Results[i].Error = common.ServerError(err)
continue
}
ports, err := machine.AllPorts()
if err != nil {
result.Results[i].Error = common.ServerError(err)
continue
}
for _, port := range ports {
networkTag := names.NewNetworkTag(port.NetworkName()).String()
result.Results[i].Result = append(result.Results[i].Result, networkTag)
}
}
return result, nil
}
示例6: TestAuthFuncForTagKind
func (s *commonSuite) TestAuthFuncForTagKind(c *gc.C) {
// TODO(dimitern): This list of all supported tags and kinds needs
// to live in juju/names.
uuid, err := utils.NewUUID()
c.Assert(err, jc.ErrorIsNil)
allTags := []names.Tag{
nil, // invalid tag
names.NewActionTag(uuid.String()),
names.NewCharmTag("cs:precise/missing"),
names.NewModelTag(uuid.String()),
names.NewFilesystemTag("20/20"),
names.NewLocalUserTag("user"),
names.NewMachineTag("42"),
names.NewNetworkTag("public"),
names.NewRelationTag("wordpress:mysql mysql:db"),
names.NewServiceTag("wordpress"),
names.NewSpaceTag("apps"),
names.NewStorageTag("foo/42"),
names.NewUnitTag("wordpress/5"),
names.NewUserTag("joe"),
names.NewVolumeTag("80/20"),
}
for i, allowedTag := range allTags {
c.Logf("test #%d: allowedTag: %v", i, allowedTag)
var allowedKind string
if allowedTag != nil {
allowedKind = allowedTag.Kind()
}
getAuthFunc := common.AuthFuncForTagKind(allowedKind)
authFunc, err := getAuthFunc()
if allowedKind == "" {
c.Check(err, gc.ErrorMatches, "tag kind cannot be empty")
c.Check(authFunc, gc.IsNil)
continue
} else if !c.Check(err, jc.ErrorIsNil) {
continue
}
for j, givenTag := range allTags {
c.Logf("test #%d.%d: givenTag: %v", i, j, givenTag)
var givenKind string
if givenTag != nil {
givenKind = givenTag.Kind()
}
if allowedKind == givenKind {
c.Check(authFunc(givenTag), jc.IsTrue)
} else {
c.Check(authFunc(givenTag), jc.IsFalse)
}
}
}
}
示例7: parsePortsKey
// parsePortsKey parses a ports document global key coming from the
// ports watcher (e.g. "42:juju-public") and returns the machine and
// network tags from its components (in the last example "machine-42"
// and "network-juju-public").
func parsePortsKey(change string) (machineTag names.MachineTag, networkTag names.NetworkTag, err error) {
defer errors.DeferredAnnotatef(&err, "invalid ports change %q", change)
parts := strings.SplitN(change, ":", 2)
if len(parts) != 2 {
return names.MachineTag{}, names.NetworkTag{}, errors.Errorf("unexpected format")
}
machineId, networkName := parts[0], parts[1]
return names.NewMachineTag(machineId), names.NewNetworkTag(networkName), nil
}
示例8: networkNamesToTags
// networkNamesToTags returns the given network names converted to
// tags, or an error.
func networkNamesToTags(networks []string) ([]string, error) {
var tags []string
for _, network := range networks {
if !names.IsValidNetwork(network) {
return nil, fmt.Errorf("%q is not a valid network name", network)
}
tags = append(tags, names.NewNetworkTag(network).String())
}
return tags, nil
}
示例9: prepareNetworkAndInterfaces
func (task *provisionerTask) prepareNetworkAndInterfaces(networkInfo []network.InterfaceInfo) (
networks []params.Network, ifaces []params.NetworkInterface, err error) {
if len(networkInfo) == 0 {
return nil, nil, nil
}
visitedNetworks := set.NewStrings()
for _, info := range networkInfo {
// TODO(dimitern): The following few fields are required, but no longer
// matter and will be dropped or changed soon as part of making spaces
// and subnets usable across the board.
if info.NetworkName == "" {
info.NetworkName = network.DefaultPrivate
}
if info.ProviderId == "" {
info.ProviderId = network.DefaultPrivate
}
if info.CIDR == "" {
// TODO(dimitern): This is only when NOT using addressable
// containers, as we don't fetch the subnet details, but since
// networks in state are going away real soon, it's not important.
info.CIDR = "0.0.0.0/32"
}
if !names.IsValidNetwork(info.NetworkName) {
return nil, nil, errors.Errorf("invalid network name %q", info.NetworkName)
}
networkTag := names.NewNetworkTag(info.NetworkName).String()
if !visitedNetworks.Contains(networkTag) {
networks = append(networks, params.Network{
Tag: networkTag,
ProviderId: string(info.ProviderId),
CIDR: info.CIDR,
VLANTag: info.VLANTag,
})
visitedNetworks.Add(networkTag)
}
ifaces = append(ifaces, params.NetworkInterface{
InterfaceName: info.ActualInterfaceName(),
MACAddress: info.MACAddress,
NetworkTag: networkTag,
IsVirtual: info.IsVirtual(),
Disabled: info.Disabled,
})
}
return networks, ifaces, nil
}
示例10: TestOpenedPorts
func (s *machineSuite) TestOpenedPorts(c *gc.C) {
networkTag := names.NewNetworkTag(network.DefaultPublic)
unitTag := s.units[0].Tag().(names.UnitTag)
// No ports opened at first.
ports, err := s.apiMachine.OpenedPorts(networkTag)
c.Assert(err, jc.ErrorIsNil)
c.Assert(ports, gc.HasLen, 0)
// Open a port and check again.
err = s.units[0].OpenPort("tcp", 1234)
c.Assert(err, jc.ErrorIsNil)
ports, err = s.apiMachine.OpenedPorts(networkTag)
c.Assert(err, jc.ErrorIsNil)
c.Assert(ports, jc.DeepEquals, map[network.PortRange]names.UnitTag{
network.PortRange{FromPort: 1234, ToPort: 1234, Protocol: "tcp"}: unitTag,
})
}
示例11: TestGetMachinePorts
func (s *firewallerSuite) TestGetMachinePorts(c *gc.C) {
s.openPorts(c)
networkTag := names.NewNetworkTag(network.DefaultPublic).String()
args := params.MachinePortsParams{
Params: []params.MachinePorts{
{MachineTag: s.machines[0].Tag().String(), NetworkTag: networkTag},
{MachineTag: s.machines[1].Tag().String(), NetworkTag: networkTag},
{MachineTag: s.machines[2].Tag().String(), NetworkTag: networkTag},
{MachineTag: s.machines[0].Tag().String(), NetworkTag: "invalid"},
{MachineTag: "machine-42", NetworkTag: networkTag},
{MachineTag: s.machines[0].Tag().String(), NetworkTag: "network-missing"},
},
}
unit0Tag := s.units[0].Tag().String()
expectPortsMachine0 := []params.MachinePortRange{
{UnitTag: unit0Tag, PortRange: params.PortRange{
FromPort: 1234, ToPort: 1400, Protocol: "tcp",
}},
{UnitTag: unit0Tag, PortRange: params.PortRange{
FromPort: 4321, ToPort: 4321, Protocol: "tcp",
}},
}
unit2Tag := s.units[2].Tag().String()
expectPortsMachine2 := []params.MachinePortRange{
{UnitTag: unit2Tag, PortRange: params.PortRange{
FromPort: 1111, ToPort: 2222, Protocol: "udp",
}},
}
result, err := s.firewaller.GetMachinePorts(args)
c.Assert(err, jc.ErrorIsNil)
c.Assert(result, jc.DeepEquals, params.MachinePortsResults{
Results: []params.MachinePortsResult{
{Ports: expectPortsMachine0},
{Error: nil, Ports: nil},
{Ports: expectPortsMachine2},
{Error: apiservertesting.ErrUnauthorized},
{Error: apiservertesting.NotFoundError("machine 42")},
{Error: nil, Ports: nil},
},
})
}
示例12: TestActiveNetworks
func (s *machineSuite) TestActiveNetworks(c *gc.C) {
// No ports opened at first, no networks.
nets, err := s.apiMachine.ActiveNetworks()
c.Assert(err, jc.ErrorIsNil)
c.Assert(nets, gc.HasLen, 0)
// Open a port and check again.
err = s.units[0].OpenPort("tcp", 1234)
c.Assert(err, jc.ErrorIsNil)
nets, err = s.apiMachine.ActiveNetworks()
c.Assert(err, jc.ErrorIsNil)
c.Assert(nets, jc.DeepEquals, []names.NetworkTag{
names.NewNetworkTag(network.DefaultPublic),
})
// Remove all ports, no networks.
ports, err := s.machines[0].OpenedPorts(network.DefaultPublic)
c.Assert(err, jc.ErrorIsNil)
err = ports.Remove()
c.Assert(err, jc.ErrorIsNil)
nets, err = s.apiMachine.ActiveNetworks()
c.Assert(err, jc.ErrorIsNil)
c.Assert(nets, gc.HasLen, 0)
}
示例13: TestParseTag
expectKind: names.ActionTagKind,
expectType: names.ActionTag{},
resultId: "wordpress/0" + names.ActionMarker + "333",
}, {
tag: "foo",
resultErr: `"foo" is not a valid tag`,
}}
var makeTag = map[string]func(string) names.Tag{
names.MachineTagKind: func(tag string) names.Tag { return names.NewMachineTag(tag) },
names.UnitTagKind: func(tag string) names.Tag { return names.NewUnitTag(tag) },
names.ServiceTagKind: func(tag string) names.Tag { return names.NewServiceTag(tag) },
names.RelationTagKind: func(tag string) names.Tag { return names.NewRelationTag(tag) },
names.EnvironTagKind: func(tag string) names.Tag { return names.NewEnvironTag(tag) },
names.UserTagKind: func(tag string) names.Tag { return names.NewUserTag(tag) },
names.NetworkTagKind: func(tag string) names.Tag { return names.NewNetworkTag(tag) },
names.ActionTagKind: func(tag string) names.Tag { return names.NewActionTag(tag) },
}
func (*tagSuite) TestParseTag(c *gc.C) {
for i, test := range parseTagTests {
c.Logf("test %d: %q expectKind %q", i, test.tag, test.expectKind)
tag, err := names.ParseTag(test.tag)
if test.resultErr != "" {
c.Assert(err, gc.ErrorMatches, test.resultErr)
c.Assert(tag, gc.IsNil)
// If the tag has a valid kind which matches the
// expected kind, test that using an empty
// expectKind does not change the error message.
if tagKind, err := names.TagKind(test.tag); err == nil && tagKind == test.expectKind {
示例14: NetworkTag
// NetworkTag returns the network tag of the interface.
func (ni *NetworkInterface) NetworkTag() string {
return names.NewNetworkTag(ni.doc.NetworkName).String()
}
示例15: Tag
// Tag returns the network tag.
func (n *Network) Tag() string {
return names.NewNetworkTag(n.doc.Name).String()
}