本文整理汇总了Golang中github.com/juju/juju/network.NewScopedAddress函数的典型用法代码示例。如果您正苦于以下问题:Golang NewScopedAddress函数的具体用法?Golang NewScopedAddress怎么用?Golang NewScopedAddress使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewScopedAddress函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Addresses
// Addresses is specified in the Instance interface.
func (inst *azureInstance) Addresses() ([]jujunetwork.Address, error) {
addresses := make([]jujunetwork.Address, 0, len(inst.networkInterfaces)+len(inst.publicIPAddresses))
for _, nic := range inst.networkInterfaces {
if nic.Properties.IPConfigurations == nil {
continue
}
for _, ipConfiguration := range *nic.Properties.IPConfigurations {
privateIpAddress := ipConfiguration.Properties.PrivateIPAddress
if privateIpAddress == nil {
continue
}
addresses = append(addresses, jujunetwork.NewScopedAddress(
to.String(privateIpAddress),
jujunetwork.ScopeCloudLocal,
))
}
}
for _, pip := range inst.publicIPAddresses {
if pip.Properties.IPAddress == nil {
continue
}
addresses = append(addresses, jujunetwork.NewScopedAddress(
to.String(pip.Properties.IPAddress),
jujunetwork.ScopePublic,
))
}
return addresses, nil
}
示例2: convertNovaAddresses
// convertNovaAddresses returns nova addresses in generic format
func convertNovaAddresses(publicIP string, addresses map[string][]nova.IPAddress) []network.Address {
var machineAddresses []network.Address
if publicIP != "" {
publicAddr := network.NewScopedAddress(publicIP, network.ScopePublic)
machineAddresses = append(machineAddresses, publicAddr)
}
// TODO(gz) Network ordering may be significant but is not preserved by
// the map, see lp:1188126 for example. That could potentially be fixed
// in goose, or left to be derived by other means.
for netName, ips := range addresses {
networkScope := network.ScopeUnknown
if netName == "public" {
networkScope = network.ScopePublic
}
for _, address := range ips {
// If this address has already been added as a floating IP, skip it.
if publicIP == address.Address {
continue
}
// Assume IPv4 unless specified otherwise
addrtype := network.IPv4Address
if address.Version == 6 {
addrtype = network.IPv6Address
}
machineAddr := network.NewScopedAddress(address.Address, networkScope)
if machineAddr.Type != addrtype {
logger.Warningf("derived address type %v, nova reports %v", machineAddr.Type, addrtype)
}
machineAddresses = append(machineAddresses, machineAddr)
}
}
return machineAddresses
}
示例3: TestExactScopeMatchHonoursPreferIPv6
func (*AddressSuite) TestExactScopeMatchHonoursPreferIPv6(c *gc.C) {
network.SetPreferIPv6(true)
addr := network.NewScopedAddress("10.0.0.2", network.ScopeCloudLocal)
match := network.ExactScopeMatch(addr, network.ScopeCloudLocal)
c.Assert(match, jc.IsFalse)
match = network.ExactScopeMatch(addr, network.ScopePublic)
c.Assert(match, jc.IsFalse)
addr = network.NewScopedAddress("8.8.8.8", network.ScopePublic)
match = network.ExactScopeMatch(addr, network.ScopeCloudLocal)
c.Assert(match, jc.IsFalse)
match = network.ExactScopeMatch(addr, network.ScopePublic)
c.Assert(match, jc.IsFalse)
addr = network.NewScopedAddress("2001:db8::ff00:42:8329", network.ScopePublic)
match = network.ExactScopeMatch(addr, network.ScopeCloudLocal)
c.Assert(match, jc.IsFalse)
match = network.ExactScopeMatch(addr, network.ScopePublic)
c.Assert(match, jc.IsTrue)
addr = network.NewScopedAddress("fc00::1", network.ScopeCloudLocal)
match = network.ExactScopeMatch(addr, network.ScopeCloudLocal)
c.Assert(match, jc.IsTrue)
match = network.ExactScopeMatch(addr, network.ScopePublic)
c.Assert(match, jc.IsFalse)
}
示例4: TestMachineAddresses
func (s *MachinerStateSuite) TestMachineAddresses(c *gc.C) {
s.setupSetMachineAddresses(c, false)
c.Assert(s.machine.MachineAddresses(), jc.DeepEquals, []network.Address{
network.NewAddress("2001:db8::1"),
network.NewScopedAddress("10.0.0.1", network.ScopeCloudLocal),
network.NewScopedAddress("::1", network.ScopeMachineLocal),
network.NewScopedAddress("127.0.0.1", network.ScopeMachineLocal),
})
}
示例5: TestNewScopedAddressHostname
func (s *AddressSuite) TestNewScopedAddressHostname(c *gc.C) {
addr := network.NewScopedAddress("localhost", network.ScopeUnknown)
c.Check(addr.Value, gc.Equals, "localhost")
c.Check(addr.Type, gc.Equals, network.HostName)
c.Check(addr.Scope, gc.Equals, network.ScopeUnknown)
addr = network.NewScopedAddress("example.com", network.ScopeUnknown)
c.Check(addr.Value, gc.Equals, "example.com")
c.Check(addr.Type, gc.Equals, network.HostName)
c.Check(addr.Scope, gc.Equals, network.ScopeUnknown)
}
示例6: setAddresses
func (s *SSHCommonSuite) setAddresses(c *gc.C, m *state.Machine) {
addrPub := network.NewScopedAddress(
fmt.Sprintf("%s.public", m.Id()),
network.ScopePublic,
)
addrPriv := network.NewScopedAddress(
fmt.Sprintf("%s.private", m.Id()),
network.ScopeCloudLocal,
)
err := m.SetProviderAddresses(addrPub, addrPriv)
c.Assert(err, jc.ErrorIsNil)
}
示例7: TestNewAddressIPv6
func (s *AddressSuite) TestNewAddressIPv6(c *gc.C) {
value := "2001:db8::1"
addr1 := network.NewScopedAddress(value, network.ScopeUnknown)
addr2 := network.NewAddress(value)
addr3 := network.NewScopedAddress(value, network.ScopeLinkLocal)
// NewAddress behaves exactly like NewScopedAddress with ScopeUnknown
c.Assert(addr1, jc.DeepEquals, addr2)
c.Assert(addr2.Scope, gc.Equals, network.ScopePublic) // derived from value
c.Assert(addr2.Value, gc.Equals, value)
c.Assert(addr2.Type, gc.Equals, network.IPv6Address)
c.Assert(addr2.Scope, gc.Not(gc.Equals), addr3.Scope) // different scope
c.Assert(addr3.Scope, gc.Equals, network.ScopeLinkLocal)
}
示例8: TestExactScopeMatch
func (*AddressSuite) TestExactScopeMatch(c *gc.C) {
addr := network.NewScopedAddress("10.0.0.2", network.ScopeCloudLocal)
match := network.ExactScopeMatch(addr, network.ScopeCloudLocal)
c.Assert(match, jc.IsTrue)
match = network.ExactScopeMatch(addr, network.ScopePublic)
c.Assert(match, jc.IsFalse)
addr = network.NewScopedAddress("8.8.8.8", network.ScopePublic)
match = network.ExactScopeMatch(addr, network.ScopeCloudLocal)
c.Assert(match, jc.IsFalse)
match = network.ExactScopeMatch(addr, network.ScopePublic)
c.Assert(match, jc.IsTrue)
}
示例9: TestNetworkInterfacesLegacy
func (suite *environSuite) TestNetworkInterfacesLegacy(c *gc.C) {
testInstance := suite.createSubnets(c, false)
netInfo, err := suite.makeEnviron().NetworkInterfaces(testInstance.Id())
c.Assert(err, jc.ErrorIsNil)
expectedInfo := []network.InterfaceInfo{{
DeviceIndex: 0,
MACAddress: "aa:bb:cc:dd:ee:ff",
CIDR: "192.168.1.2/24",
ProviderSubnetId: "WLAN",
VLANTag: 0,
InterfaceName: "wlan0",
Disabled: true,
NoAutoStart: true,
ConfigType: network.ConfigDHCP,
ExtraConfig: nil,
GatewayAddress: network.Address{},
Address: network.NewScopedAddress("192.168.1.2", network.ScopeCloudLocal),
}, {
DeviceIndex: 1,
MACAddress: "aa:bb:cc:dd:ee:f1",
CIDR: "192.168.2.2/24",
ProviderSubnetId: "LAN",
VLANTag: 42,
InterfaceName: "eth0",
Disabled: false,
NoAutoStart: false,
ConfigType: network.ConfigDHCP,
ExtraConfig: nil,
GatewayAddress: network.NewScopedAddress("192.168.2.1", network.ScopeCloudLocal),
Address: network.NewScopedAddress("192.168.2.2", network.ScopeCloudLocal),
}, {
DeviceIndex: 2,
MACAddress: "aa:bb:cc:dd:ee:f2",
CIDR: "192.168.3.2/24",
ProviderSubnetId: "Virt",
VLANTag: 0,
InterfaceName: "vnet1",
Disabled: false,
NoAutoStart: false,
ConfigType: network.ConfigDHCP,
ExtraConfig: nil,
GatewayAddress: network.Address{},
Address: network.NewScopedAddress("192.168.3.2", network.ScopeCloudLocal),
}}
network.SortInterfaceInfo(netInfo)
c.Assert(netInfo, jc.DeepEquals, expectedInfo)
}
示例10: GetNetworkInterfaces
func (c *client) GetNetworkInterfaces(inst instance.Id, ecfg *environConfig) ([]network.InterfaceInfo, error) {
vm, err := c.getVm(string(inst))
if err != nil {
return nil, errors.Trace(err)
}
if vm.Guest == nil {
return nil, errors.Errorf("vm guest is not initialized")
}
res := make([]network.InterfaceInfo, 0)
for _, net := range vm.Guest.Net {
ipScope := network.ScopeCloudLocal
if net.Network == ecfg.externalNetwork() {
ipScope = network.ScopePublic
}
res = append(res, network.InterfaceInfo{
DeviceIndex: net.DeviceConfigId,
MACAddress: net.MacAddress,
NetworkName: net.Network,
Disabled: !net.Connected,
ProviderId: network.Id(fmt.Sprintf("net-device%d", net.DeviceConfigId)),
ProviderSubnetId: network.Id(net.Network),
InterfaceName: fmt.Sprintf("unsupported%d", net.DeviceConfigId),
ConfigType: network.ConfigDHCP,
Address: network.NewScopedAddress(net.IpAddress[0], ipScope),
})
}
return res, nil
}
示例11: TestAllocateTo
func (s *IPAddressSuite) TestAllocateTo(c *gc.C) {
machine := s.createMachine(c)
addr := network.NewScopedAddress("0.1.2.3", network.ScopePublic)
ipAddr, err := s.State.AddIPAddress(addr, "foobar")
c.Assert(err, jc.ErrorIsNil)
c.Assert(ipAddr.State(), gc.Equals, state.AddressStateUnknown)
c.Assert(ipAddr.MachineId(), gc.Equals, "")
c.Assert(ipAddr.InterfaceId(), gc.Equals, "")
c.Assert(ipAddr.InstanceId(), gc.Equals, instance.UnknownId)
err = ipAddr.AllocateTo(machine.Id(), "wobble")
c.Assert(err, jc.ErrorIsNil)
c.Assert(ipAddr.State(), gc.Equals, state.AddressStateAllocated)
c.Assert(ipAddr.MachineId(), gc.Equals, machine.Id())
c.Assert(ipAddr.InterfaceId(), gc.Equals, "wobble")
c.Assert(ipAddr.InstanceId(), gc.Equals, instance.Id("foo"))
freshCopy, err := s.State.IPAddress("0.1.2.3")
c.Assert(err, jc.ErrorIsNil)
c.Assert(freshCopy.State(), gc.Equals, state.AddressStateAllocated)
c.Assert(freshCopy.MachineId(), gc.Equals, machine.Id())
c.Assert(freshCopy.InterfaceId(), gc.Equals, "wobble")
c.Assert(freshCopy.InstanceId(), gc.Equals, instance.Id("foo"))
// allocating twice should fail.
machine2 := s.createMachine(c)
err = ipAddr.AllocateTo(machine2.Id(), "i")
msg := fmt.Sprintf(
`cannot allocate IP address "public:0.1.2.3" to machine %q, interface "i": `+
`already allocated or unavailable`, machine2.Id())
c.Assert(err, gc.ErrorMatches, msg)
}
示例12: TestEnsureDeadRemove
func (s *IPAddressSuite) TestEnsureDeadRemove(c *gc.C) {
addr := network.NewScopedAddress("0.1.2.3", network.ScopePublic)
ipAddr, err := s.State.AddIPAddress(addr, "foobar")
c.Assert(err, jc.ErrorIsNil)
// Should not be able to remove an Alive IP address.
c.Assert(ipAddr.Life(), gc.Equals, state.Alive)
err = ipAddr.Remove()
msg := fmt.Sprintf("cannot remove IP address %q: IP address is not dead", ipAddr.String())
c.Assert(err, gc.ErrorMatches, msg)
err = ipAddr.EnsureDead()
c.Assert(err, jc.ErrorIsNil)
// EnsureDead twice should not be an error
err = ipAddr.EnsureDead()
c.Assert(err, jc.ErrorIsNil)
err = ipAddr.Remove()
c.Assert(err, jc.ErrorIsNil)
// Remove twice is also fine.
err = ipAddr.Remove()
c.Assert(err, jc.ErrorIsNil)
_, err = s.State.IPAddress("0.1.2.3")
c.Assert(err, jc.Satisfies, errors.IsNotFound)
c.Assert(err, gc.ErrorMatches, `IP address "0.1.2.3" not found`)
}
示例13: internalNetworkAddress
// internalNetworkAddress returns the instance's jujunetwork.Address for the
// internal virtual network. This address is used to identify the machine in
// network security rules.
func (inst *azureInstance) internalNetworkAddress() (jujunetwork.Address, error) {
inst.env.mu.Lock()
subscriptionId := inst.env.config.subscriptionId
resourceGroup := inst.env.resourceGroup
controllerResourceGroup := inst.env.controllerResourceGroup
inst.env.mu.Unlock()
internalSubnetId := internalSubnetId(
resourceGroup, controllerResourceGroup, subscriptionId,
)
for _, nic := range inst.networkInterfaces {
if nic.Properties.IPConfigurations == nil {
continue
}
for _, ipConfiguration := range *nic.Properties.IPConfigurations {
if ipConfiguration.Properties.Subnet == nil {
continue
}
if strings.ToLower(to.String(ipConfiguration.Properties.Subnet.ID)) != strings.ToLower(internalSubnetId) {
continue
}
privateIpAddress := ipConfiguration.Properties.PrivateIPAddress
if privateIpAddress == nil {
continue
}
return jujunetwork.NewScopedAddress(
to.String(privateIpAddress),
jujunetwork.ScopeCloudLocal,
), nil
}
}
return jujunetwork.Address{}, errors.NotFoundf("internal network address")
}
示例14: TestUnitCaching
func (s *InterfaceSuite) TestUnitCaching(c *gc.C) {
ctx := s.GetContext(c, -1, "")
pr, err := ctx.PrivateAddress()
c.Assert(err, jc.ErrorIsNil)
c.Assert(pr, gc.Equals, "u-0.testing.invalid")
pa, err := ctx.PublicAddress()
c.Assert(err, jc.ErrorIsNil)
// Initially the public address is the same as the private address since
// the "most public" address is chosen.
c.Assert(pr, gc.Equals, pa)
// Change remote state.
err = s.machine.SetProviderAddresses(
network.NewScopedAddress("blah.testing.invalid", network.ScopePublic),
)
c.Assert(err, jc.ErrorIsNil)
// Local view is unchanged.
pr, err = ctx.PrivateAddress()
c.Assert(err, jc.ErrorIsNil)
c.Assert(pr, gc.Equals, "u-0.testing.invalid")
pa, err = ctx.PublicAddress()
c.Assert(err, jc.ErrorIsNil)
c.Assert(pr, gc.Equals, pa)
}
示例15: AddUnit
func (s *ContextSuite) AddUnit(c *gc.C, svc *state.Service) *state.Unit {
unit, err := svc.AddUnit()
c.Assert(err, jc.ErrorIsNil)
if s.machine != nil {
err = unit.AssignToMachine(s.machine)
c.Assert(err, jc.ErrorIsNil)
return unit
}
err = s.State.AssignUnit(unit, state.AssignCleanEmpty)
c.Assert(err, jc.ErrorIsNil)
machineId, err := unit.AssignedMachineId()
c.Assert(err, jc.ErrorIsNil)
s.machine, err = s.State.Machine(machineId)
c.Assert(err, jc.ErrorIsNil)
zone := "a-zone"
hwc := instance.HardwareCharacteristics{
AvailabilityZone: &zone,
}
err = s.machine.SetProvisioned("i-exist", "fake_nonce", &hwc)
c.Assert(err, jc.ErrorIsNil)
name := strings.Replace(unit.Name(), "/", "-", 1)
privateAddr := network.NewScopedAddress(name+".testing.invalid", network.ScopeCloudLocal)
err = s.machine.SetProviderAddresses(privateAddr)
c.Assert(err, jc.ErrorIsNil)
return unit
}