github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/oracle/network/environ_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package network_test 5 6 import ( 7 "fmt" 8 9 "github.com/juju/errors" 10 "github.com/juju/go-oracle-cloud/api" 11 "github.com/juju/go-oracle-cloud/common" 12 "github.com/juju/go-oracle-cloud/response" 13 jc "github.com/juju/testing/checkers" 14 gc "gopkg.in/check.v1" 15 names "gopkg.in/juju/names.v2" 16 17 "github.com/juju/juju/core/instance" 18 "github.com/juju/juju/environs" 19 "github.com/juju/juju/environs/context" 20 networkenv "github.com/juju/juju/network" 21 "github.com/juju/juju/provider/oracle" 22 "github.com/juju/juju/provider/oracle/network" 23 oracletesting "github.com/juju/juju/provider/oracle/testing" 24 "github.com/juju/juju/testing" 25 ) 26 27 type environSuite struct { 28 env *oracle.OracleEnviron 29 netEnv *network.Environ 30 31 callCtx context.ProviderCallContext 32 } 33 34 var _ = gc.Suite(&environSuite{}) 35 36 type fakeNetworkingAPI struct{} 37 38 func (f *environSuite) SetUpTest(c *gc.C) { 39 var err error 40 f.env, err = oracle.NewOracleEnviron( 41 &oracle.EnvironProvider{}, 42 environs.OpenParams{ 43 Config: testing.ModelConfig(c), 44 }, 45 oracletesting.DefaultEnvironAPI, 46 &advancingClock, 47 ) 48 49 c.Assert(err, gc.IsNil) 50 c.Assert(f.env, gc.NotNil) 51 52 f.netEnv = network.NewEnviron(&fakeNetworkingAPI{}, f.env) 53 c.Assert(f.netEnv, gc.NotNil) 54 f.callCtx = context.NewCloudCallContext() 55 } 56 57 func (f fakeNetworkingAPI) AllIpNetworks( 58 filter []api.Filter, 59 ) (response.AllIpNetworks, error) { 60 return response.AllIpNetworks{ 61 Result: []response.IpNetwork{{ 62 Name: "/Compute-acme/jack.jones@example.com/ipnet1", 63 Uri: "https://api-z999.compute.us0.oraclecloud.com:443/network/v1/ipnetwork/Compute-acme/jack.jones@example.com/ipnet1", 64 Description: nil, 65 Tags: nil, 66 IpAddressPrefix: "192.168.0.0/24", 67 IpNetworkExchange: nil, 68 PublicNaptEnabledFlag: false, 69 }}, 70 }, nil 71 } 72 73 func (f fakeNetworkingAPI) InstanceDetails( 74 name string, 75 ) (response.Instance, error) { 76 return response.Instance{ 77 Shape: "oc3", 78 Imagelist: "/oracle/public/oel_6.4_2GB_v1", 79 Name: "/Compute-acme/jack.jones@example.com/0/88e5710d-ccce-4da6-97f8-36ab7999b705", 80 Label: "0", 81 SSHKeys: []string{ 82 "/Compute-acme/jack.jones@example.com/dev-key1", 83 }, 84 }, nil 85 } 86 87 func (f fakeNetworkingAPI) AllAcls(filter []api.Filter) (response.AllAcls, error) { 88 return response.AllAcls{}, nil 89 } 90 91 func (f fakeNetworkingAPI) ComposeName(name string) string { 92 return fmt.Sprintf("https://some-url.us6.com/%s", name) 93 } 94 95 func (e *environSuite) TestSupportSpaces(c *gc.C) { 96 ok, err := e.netEnv.SupportsSpaces(e.callCtx) 97 c.Assert(err, gc.IsNil) 98 c.Assert(ok, jc.IsTrue) 99 } 100 101 func (e *environSuite) TestSupportsSpaceDiscovery(c *gc.C) { 102 ok, err := e.netEnv.SupportsSpaceDiscovery(e.callCtx) 103 c.Assert(err, gc.IsNil) 104 c.Assert(ok, jc.IsTrue) 105 } 106 107 func (e *environSuite) TestSupportsContainerAddress(c *gc.C) { 108 ok, err := e.netEnv.SupportsContainerAddresses(e.callCtx) 109 c.Assert(err, gc.NotNil) 110 c.Assert(ok, jc.IsFalse) 111 is := errors.IsNotSupported(err) 112 c.Assert(is, jc.IsTrue) 113 } 114 115 func (e *environSuite) TestAllocateContainerAddress(c *gc.C) { 116 var ( 117 id instance.Id 118 tag names.MachineTag 119 info []networkenv.InterfaceInfo 120 ) 121 122 addr, err := e.netEnv.AllocateContainerAddresses(e.callCtx, id, tag, info) 123 c.Assert(err, gc.NotNil) 124 c.Assert(addr, gc.IsNil) 125 is := errors.IsNotSupported(err) 126 c.Assert(is, jc.IsTrue) 127 } 128 129 func (e *environSuite) TestReleaseContainerAddresses(c *gc.C) { 130 var i []networkenv.ProviderInterfaceInfo 131 err := e.netEnv.ReleaseContainerAddresses(e.callCtx, i) 132 c.Assert(err, gc.NotNil) 133 is := errors.IsNotSupported(err) 134 c.Assert(is, jc.IsTrue) 135 } 136 137 func (e *environSuite) TestSubnetsWithEmptyParams(c *gc.C) { 138 info, err := e.netEnv.Subnets(e.callCtx, "", nil) 139 c.Assert(info, jc.DeepEquals, []networkenv.SubnetInfo{}) 140 c.Assert(err, gc.IsNil) 141 } 142 143 func (e *environSuite) TestSubnets(c *gc.C) { 144 ids := []networkenv.Id{networkenv.Id("0")} 145 info, err := e.netEnv.Subnets(e.callCtx, instance.Id("0"), ids) 146 c.Assert(info, jc.DeepEquals, []networkenv.SubnetInfo{}) 147 c.Assert(err, gc.IsNil) 148 } 149 150 func (e *environSuite) TestNetworkInterfacesWithEmptyParams(c *gc.C) { 151 envAPI := oracletesting.DefaultEnvironAPI 152 envAPI.FakeInstance.All.Result[0].Networking = common.Networking{} 153 envAPI.FakeInstance.All.Result[0].Attributes.Network = map[string]response.Network{} 154 155 env, err := oracle.NewOracleEnviron( 156 &oracle.EnvironProvider{}, 157 environs.OpenParams{ 158 Config: testing.ModelConfig(c), 159 }, 160 envAPI, 161 &advancingClock, 162 ) 163 164 c.Assert(err, gc.IsNil) 165 c.Assert(env, gc.NotNil) 166 167 netEnv := network.NewEnviron(&fakeNetworkingAPI{}, env) 168 c.Assert(netEnv, gc.NotNil) 169 170 info, err := netEnv.NetworkInterfaces(e.callCtx, instance.Id("0")) 171 c.Assert(info, jc.DeepEquals, []networkenv.InterfaceInfo{}) 172 c.Assert(err, gc.IsNil) 173 } 174 175 func (e *environSuite) TestSpaces(c *gc.C) { 176 info, err := e.netEnv.Spaces(e.callCtx) 177 c.Assert(err, gc.IsNil) 178 c.Assert(info, jc.DeepEquals, []networkenv.SpaceInfo{}) 179 }