本文整理汇总了Golang中github.com/juju/juju/network.NewAddresses函数的典型用法代码示例。如果您正苦于以下问题:Golang NewAddresses函数的具体用法?Golang NewAddresses怎么用?Golang NewAddresses使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewAddresses函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestGetAddressesReturnsNames
func (suite *StateSuite) TestGetAddressesReturnsNames(c *gc.C) {
instances := []instance.Instance{
&mockInstance{addresses: network.NewAddresses("foo")},
&mockInstance{addresses: network.NewAddresses("bar")},
}
c.Check(common.GetAddresses(instances), gc.DeepEquals, []string{"foo", "bar"})
}
示例2: TestSortAddresses
func (*AddressSuite) TestSortAddresses(c *gc.C) {
addrs := network.NewAddresses(
"127.0.0.1",
"localhost",
"example.com",
"::1",
"fc00::1",
"fe80::2",
"172.16.0.1",
"8.8.8.8",
)
network.SortAddresses(addrs, false)
c.Assert(addrs, jc.DeepEquals, network.NewAddresses(
"example.com",
"localhost",
"127.0.0.1",
"172.16.0.1",
"8.8.8.8",
"::1",
"fe80::2",
"fc00::1",
))
network.SortAddresses(addrs, true)
c.Assert(addrs, jc.DeepEquals, network.NewAddresses(
"example.com",
"localhost",
"fe80::2",
"::1",
"fc00::1",
"127.0.0.1",
"172.16.0.1",
"8.8.8.8",
))
}
示例3: Addresses
func (mi *maasInstance) Addresses() ([]network.Address, error) {
name, err := mi.hostname()
if err != nil {
return nil, err
}
// MAAS prefers to use the dns name for intra-node communication.
// When Juju looks up the address to use for communicating between
// nodes, it looks up the address by scope. So we add a cloud
// local address for that purpose.
addrs := network.NewAddresses(name, name)
addrs[0].Scope = network.ScopePublic
addrs[1].Scope = network.ScopeCloudLocal
// Append any remaining IP addresses after the preferred ones.
ips, err := mi.ipAddresses()
if err != nil {
return nil, err
}
addrs = append(addrs, network.NewAddresses(ips...)...)
// Although we would prefer a DNS name there's no point
// returning unresolvable names because activities like 'juju
// ssh 0' will instantly fail.
return resolveHostnames(addrs), nil
}
示例4: TestSetAPIHostPorts
func (*suite) TestSetAPIHostPorts(c *gc.C) {
conf, err := agent.NewAgentConfig(attributeParams)
c.Assert(err, jc.ErrorIsNil)
addrs, err := conf.APIAddresses()
c.Assert(err, jc.ErrorIsNil)
c.Assert(addrs, gc.DeepEquals, attributeParams.APIAddresses)
// The first cloud-local address for each server is used,
// else if there are none then the first public- or unknown-
// scope address.
//
// If a server has only machine-local addresses, or none
// at all, then it will be excluded.
server1 := network.NewAddresses("0.1.2.3", "0.1.2.4", "zeroonetwothree")
server1[0].Scope = network.ScopeCloudLocal
server1[1].Scope = network.ScopeCloudLocal
server1[2].Scope = network.ScopePublic
server2 := network.NewAddresses("127.0.0.1")
server2[0].Scope = network.ScopeMachineLocal
server3 := network.NewAddresses("0.1.2.5", "zeroonetwofive")
server3[0].Scope = network.ScopeUnknown
server3[1].Scope = network.ScopeUnknown
conf.SetAPIHostPorts([][]network.HostPort{
network.AddressesWithPort(server1, 123),
network.AddressesWithPort(server2, 124),
network.AddressesWithPort(server3, 125),
})
addrs, err = conf.APIAddresses()
c.Assert(err, jc.ErrorIsNil)
c.Assert(addrs, gc.DeepEquals, []string{"0.1.2.3:123", "0.1.2.5:125"})
}
示例5: TestMultipleInstanceAddresses
func (s *instanceSuite) TestMultipleInstanceAddresses(c *gc.C) {
nic0IPConfiguration := makeIPConfiguration("10.0.0.4")
nic1IPConfiguration := makeIPConfiguration("10.0.0.5")
s.networkInterfaces = []network.Interface{
makeNetworkInterface("nic-0", "machine-0", nic0IPConfiguration),
makeNetworkInterface("nic-1", "machine-1", nic1IPConfiguration),
}
s.publicIPAddresses = []network.PublicIPAddress{
makePublicIPAddress("pip-0", "machine-0", "1.2.3.4"),
makePublicIPAddress("pip-1", "machine-1", "1.2.3.5"),
}
instances := s.getInstances(c, "machine-0", "machine-1")
c.Assert(instances, gc.HasLen, 2)
inst0Addresses, err := instances[0].Addresses()
c.Assert(err, jc.ErrorIsNil)
c.Assert(inst0Addresses, jc.DeepEquals, jujunetwork.NewAddresses(
"10.0.0.4", "1.2.3.4",
))
inst1Addresses, err := instances[1].Addresses()
c.Assert(err, jc.ErrorIsNil)
c.Assert(inst1Addresses, jc.DeepEquals, jujunetwork.NewAddresses(
"10.0.0.5", "1.2.3.5",
))
}
示例6: TestSetMachineAddresses
func (s *machinerSuite) TestSetMachineAddresses(c *gc.C) {
c.Assert(s.machine0.Addresses(), gc.HasLen, 0)
c.Assert(s.machine1.Addresses(), gc.HasLen, 0)
addresses := network.NewAddresses("127.0.0.1", "8.8.8.8")
args := params.SetMachinesAddresses{MachineAddresses: []params.MachineAddresses{
{Tag: "machine-1", Addresses: params.FromNetworkAddresses(addresses)},
{Tag: "machine-0", Addresses: params.FromNetworkAddresses(addresses)},
{Tag: "machine-42", Addresses: params.FromNetworkAddresses(addresses)},
}}
result, err := s.machiner.SetMachineAddresses(args)
c.Assert(err, jc.ErrorIsNil)
c.Assert(result, gc.DeepEquals, params.ErrorResults{
Results: []params.ErrorResult{
{nil},
{apiservertesting.ErrUnauthorized},
{apiservertesting.ErrUnauthorized},
},
})
err = s.machine1.Refresh()
c.Assert(err, jc.ErrorIsNil)
expectedAddresses := network.NewAddresses("8.8.8.8", "127.0.0.1")
c.Assert(s.machine1.MachineAddresses(), gc.DeepEquals, expectedAddresses)
err = s.machine0.Refresh()
c.Assert(err, jc.ErrorIsNil)
c.Assert(s.machine0.MachineAddresses(), gc.HasLen, 0)
}
示例7: TestSetProviderAddressesFailure
func (s *InstancePollerSuite) TestSetProviderAddressesFailure(c *gc.C) {
s.st.SetErrors(
errors.New("pow!"), // m1 := FindEntity("1")
nil, // m2 := FindEntity("2")
errors.New("FAIL"), // m2.SetProviderAddresses()
errors.NotProvisionedf("machine 42"), // FindEntity("3") (ensure wrapping is preserved)
)
oldAddrs := network.NewAddresses("0.1.2.3", "127.0.0.1", "8.8.8.8")
newAddrs := network.NewAddresses("1.2.3.4", "8.4.4.8", "2001:db8::")
s.st.SetMachineInfo(c, machineInfo{id: "1", providerAddresses: oldAddrs})
s.st.SetMachineInfo(c, machineInfo{id: "2", providerAddresses: nil})
result, err := s.api.SetProviderAddresses(params.SetMachinesAddresses{
MachineAddresses: []params.MachineAddresses{
{Tag: "machine-1"},
{Tag: "machine-2", Addresses: params.FromNetworkAddresses(newAddrs...)},
{Tag: "machine-3"},
}},
)
c.Assert(err, jc.ErrorIsNil)
c.Assert(result, jc.DeepEquals, s.machineErrorResults)
s.st.CheckFindEntityCall(c, 0, "1")
s.st.CheckFindEntityCall(c, 1, "2")
s.st.CheckSetProviderAddressesCall(c, 2, newAddrs)
s.st.CheckFindEntityCall(c, 3, "3")
// Ensure machine 2 wasn't updated.
machine, err := s.st.Machine("2")
c.Assert(err, jc.ErrorIsNil)
c.Assert(machine.ProviderAddresses(), gc.HasLen, 0)
}
示例8: TestPublisherSetsAPIHostPortsOnce
func (s *publishSuite) TestPublisherSetsAPIHostPortsOnce(c *gc.C) {
var mock mockAPIHostPortsSetter
statePublish := newPublisher(&mock)
hostPorts1 := network.AddressesWithPort(network.NewAddresses("testing1.invalid", "127.0.0.1"), 1234)
hostPorts2 := network.AddressesWithPort(network.NewAddresses("testing2.invalid", "127.0.0.2"), 1234)
// statePublish.publishAPIServers should not update state a second time.
apiServers := [][]network.HostPort{hostPorts1}
for i := 0; i < 2; i++ {
err := statePublish.publishAPIServers(apiServers, nil)
c.Assert(err, gc.IsNil)
}
c.Assert(mock.calls, gc.Equals, 1)
c.Assert(mock.apiHostPorts, gc.DeepEquals, apiServers)
apiServers = append(apiServers, hostPorts2)
for i := 0; i < 2; i++ {
err := statePublish.publishAPIServers(apiServers, nil)
c.Assert(err, gc.IsNil)
}
c.Assert(mock.calls, gc.Equals, 2)
c.Assert(mock.apiHostPorts, gc.DeepEquals, apiServers)
}
示例9: TestSetMachineAddresses
func (s *machinerSuite) TestSetMachineAddresses(c *gc.C) {
machine, err := s.machiner.Machine(names.NewMachineTag("1"))
c.Assert(err, jc.ErrorIsNil)
addr := s.machine.Addresses()
c.Assert(addr, gc.HasLen, 0)
setAddresses := network.NewAddresses(
"8.8.8.8",
"127.0.0.1",
"10.0.0.1",
)
// Before setting, the addresses are sorted to put public on top,
// cloud-local next, machine-local last.
expectAddresses := network.NewAddresses(
"8.8.8.8",
"10.0.0.1",
"127.0.0.1",
)
err = machine.SetMachineAddresses(setAddresses)
c.Assert(err, jc.ErrorIsNil)
err = s.machine.Refresh()
c.Assert(err, jc.ErrorIsNil)
c.Assert(s.machine.MachineAddresses(), jc.DeepEquals, expectAddresses)
}
示例10: TestFilterBridgeAddresses
func (s *NetworkSuite) TestFilterBridgeAddresses(c *gc.C) {
lxcFakeNetConfig := filepath.Join(c.MkDir(), "lxc-net")
// We create an LXC bridge named "foobar", and then put 10.0.3.1,
// 10.0.3.4 and 10.0.3.5/24 on that bridge.
// We also put 10.0.4.1 and 10.0.5.1/24 onto whatever bridge LXD is
// configured to use.
netConf := []byte(`
# comments ignored
LXC_BR= ignored
LXC_ADDR = "fooo"
LXC_BRIDGE = " foobar " # detected, spaces stripped
anything else ignored
LXC_BRIDGE="ignored"`[1:])
err := ioutil.WriteFile(lxcFakeNetConfig, netConf, 0644)
c.Assert(err, jc.ErrorIsNil)
s.PatchValue(&network.InterfaceByNameAddrs, func(name string) ([]net.Addr, error) {
if name == "foobar" {
return []net.Addr{
&net.IPAddr{IP: net.IPv4(10, 0, 3, 1)},
&net.IPAddr{IP: net.IPv4(10, 0, 3, 4)},
// Try a CIDR 10.0.3.5/24 as well.
&net.IPNet{IP: net.IPv4(10, 0, 3, 5), Mask: net.IPv4Mask(255, 255, 255, 0)},
}, nil
} else if name == network.DefaultLXDBridge {
return []net.Addr{
&net.IPAddr{IP: net.IPv4(10, 0, 4, 1)},
// Try a CIDR 10.0.5.1/24 as well.
&net.IPNet{IP: net.IPv4(10, 0, 5, 1), Mask: net.IPv4Mask(255, 255, 255, 0)},
}, nil
}
c.Fatalf("unknown bridge name: %q", name)
return nil, nil
})
s.PatchValue(&network.LXCNetDefaultConfig, lxcFakeNetConfig)
inputAddresses := network.NewAddresses(
"127.0.0.1",
"2001:db8::1",
"10.0.0.1",
"10.0.3.1", // filtered (directly as IP)
"10.0.3.3", // filtered (by the 10.0.3.5/24 CIDR)
"10.0.3.5", // filtered (directly)
"10.0.3.4", // filtered (directly)
"10.0.4.1", // filtered (directly from LXD bridge)
"10.0.5.10", // filtered (from LXD bridge, 10.0.5.1/24)
"10.0.6.10", // unfiltered
"192.168.123.42",
)
filteredAddresses := network.NewAddresses(
"127.0.0.1",
"2001:db8::1",
"10.0.0.1",
"10.0.6.10",
"192.168.123.42",
)
c.Assert(network.FilterBridgeAddresses(inputAddresses), jc.DeepEquals, filteredAddresses)
}
示例11: TestGetAddressesIgnoresAddressesErrors
func (suite *StateSuite) TestGetAddressesIgnoresAddressesErrors(c *gc.C) {
instances := []instance.Instance{
&mockInstance{
addresses: network.NewAddresses("one"),
addressesErr: errors.New("ignored"),
},
&mockInstance{addresses: network.NewAddresses("two", "three")},
}
c.Check(common.GetAddresses(instances), gc.DeepEquals, []string{"two", "three"})
}
示例12: TestGetAddressesIgnoresNils
func (suite *StateSuite) TestGetAddressesIgnoresNils(c *gc.C) {
instances := []instance.Instance{
nil,
&mockInstance{addresses: network.NewAddresses("foo")},
nil,
&mockInstance{addresses: network.NewAddresses("bar")},
nil,
}
c.Check(common.GetAddresses(instances), gc.DeepEquals, []string{"foo", "bar"})
c.Check(common.GetAddresses(nil), gc.DeepEquals, []string{})
}
示例13: TestSetAPIHostPorts
func (*suite) TestSetAPIHostPorts(c *gc.C) {
conf, err := agent.NewAgentConfig(attributeParams)
c.Assert(err, jc.ErrorIsNil)
addrs, err := conf.APIAddresses()
c.Assert(err, jc.ErrorIsNil)
c.Assert(addrs, gc.DeepEquals, attributeParams.APIAddresses)
// All the best candidate addresses for each server are
// used. Cloud-local addresses are preferred. Otherwise, public
// or unknown scope addresses are used.
//
// If a server has only machine-local addresses, or none
// at all, then it will be excluded.
server1 := network.NewAddresses("0.1.0.1", "0.1.0.2", "host.com")
server1[0].Scope = network.ScopeCloudLocal
server1[1].Scope = network.ScopeCloudLocal
server1[2].Scope = network.ScopePublic
server2 := network.NewAddresses("0.2.0.1", "0.2.0.2")
server2[0].Scope = network.ScopePublic
server2[1].Scope = network.ScopePublic
server3 := network.NewAddresses("127.0.0.1")
server3[0].Scope = network.ScopeMachineLocal
server4 := network.NewAddresses("0.4.0.1", "elsewhere.net")
server4[0].Scope = network.ScopeUnknown
server4[1].Scope = network.ScopeUnknown
conf.SetAPIHostPorts([][]network.HostPort{
network.AddressesWithPort(server1, 1111),
network.AddressesWithPort(server2, 2222),
network.AddressesWithPort(server3, 3333),
network.AddressesWithPort(server4, 4444),
})
addrs, err = conf.APIAddresses()
c.Assert(err, jc.ErrorIsNil)
c.Assert(addrs, gc.DeepEquals, []string{
"0.1.0.1:1111",
"0.1.0.2:1111",
"host.com:1111",
"0.2.0.1:2222",
"0.2.0.2:2222",
"0.4.0.1:4444",
"elsewhere.net:4444",
})
}
示例14: TestMachineConfig
func (s *machineConfigSuite) TestMachineConfig(c *gc.C) {
addrs := network.NewAddresses("1.2.3.4")
hc := instance.MustParseHardware("mem=4G arch=amd64")
apiParams := params.AddMachineParams{
Jobs: []multiwatcher.MachineJob{multiwatcher.JobHostUnits},
InstanceId: instance.Id("1234"),
Nonce: "foo",
HardwareCharacteristics: hc,
Addrs: params.FromNetworkAddresses(addrs...),
}
machines, err := s.APIState.Client().AddMachines([]params.AddMachineParams{apiParams})
c.Assert(err, jc.ErrorIsNil)
c.Assert(len(machines), gc.Equals, 1)
machineId := machines[0].Machine
instanceConfig, err := client.InstanceConfig(s.State, machineId, apiParams.Nonce, "")
c.Assert(err, jc.ErrorIsNil)
cfg, err := s.State.ControllerConfig()
c.Assert(err, jc.ErrorIsNil)
apiAddrs := []string{net.JoinHostPort("localhost", strconv.Itoa(cfg.APIPort()))}
c.Check(instanceConfig.APIInfo.Addrs, gc.DeepEquals, apiAddrs)
toolsURL := fmt.Sprintf("https://%s/model/%s/tools/%s",
apiAddrs[0], jujutesting.ModelTag.Id(), instanceConfig.AgentVersion())
c.Assert(instanceConfig.ToolsList().URLs(), jc.DeepEquals, map[version.Binary][]string{
instanceConfig.AgentVersion(): []string{toolsURL},
})
}
示例15: TestSetEmptyMachineAddresses
func (s *machinerSuite) TestSetEmptyMachineAddresses(c *gc.C) {
// Set some addresses so we can ensure they are removed.
addresses := network.NewAddresses("127.0.0.1", "8.8.8.8")
args := params.SetMachinesAddresses{MachineAddresses: []params.MachineAddresses{
{Tag: "machine-1", Addresses: params.FromNetworkAddresses(addresses)},
}}
result, err := s.machiner.SetMachineAddresses(args)
c.Assert(err, jc.ErrorIsNil)
c.Assert(result, gc.DeepEquals, params.ErrorResults{
Results: []params.ErrorResult{
{nil},
},
})
err = s.machine1.Refresh()
c.Assert(err, jc.ErrorIsNil)
c.Assert(s.machine1.MachineAddresses(), gc.HasLen, 2)
args.MachineAddresses[0].Addresses = nil
result, err = s.machiner.SetMachineAddresses(args)
c.Assert(err, jc.ErrorIsNil)
c.Assert(result, gc.DeepEquals, params.ErrorResults{
Results: []params.ErrorResult{
{nil},
},
})
err = s.machine1.Refresh()
c.Assert(err, jc.ErrorIsNil)
c.Assert(s.machine1.MachineAddresses(), gc.HasLen, 0)
}