github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/facades/client/applicationoffers/conversions.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package applicationoffers 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/apiserver/params" 10 "github.com/juju/juju/environs" 11 "github.com/juju/juju/network" 12 ) 13 14 // paramsFromProviderSpaceInfo converts a ProviderSpaceInfo into the 15 // equivalent params.RemoteSpace. 16 func paramsFromProviderSpaceInfo(info *environs.ProviderSpaceInfo) params.RemoteSpace { 17 result := params.RemoteSpace{ 18 CloudType: info.CloudType, 19 Name: info.Name, 20 ProviderId: string(info.ProviderId), 21 ProviderAttributes: info.ProviderAttributes, 22 } 23 for _, subnet := range info.Subnets { 24 resultSubnet := params.Subnet{ 25 CIDR: subnet.CIDR, 26 ProviderId: string(subnet.ProviderId), 27 ProviderNetworkId: string(subnet.ProviderNetworkId), 28 ProviderSpaceId: string(subnet.SpaceProviderId), 29 VLANTag: subnet.VLANTag, 30 Zones: subnet.AvailabilityZones, 31 } 32 result.Subnets = append(result.Subnets, resultSubnet) 33 } 34 return result 35 } 36 37 // providerSpaceInfoFromParams converts a params.RemoteSpace to the 38 // equivalent ProviderSpaceInfo. 39 func providerSpaceInfoFromParams(space params.RemoteSpace) *environs.ProviderSpaceInfo { 40 result := &environs.ProviderSpaceInfo{ 41 CloudType: space.CloudType, 42 ProviderAttributes: space.ProviderAttributes, 43 SpaceInfo: network.SpaceInfo{ 44 Name: space.Name, 45 ProviderId: network.Id(space.ProviderId), 46 }, 47 } 48 for _, subnet := range space.Subnets { 49 resultSubnet := network.SubnetInfo{ 50 CIDR: subnet.CIDR, 51 ProviderId: network.Id(subnet.ProviderId), 52 ProviderNetworkId: network.Id(subnet.ProviderNetworkId), 53 SpaceProviderId: network.Id(subnet.ProviderSpaceId), 54 VLANTag: subnet.VLANTag, 55 AvailabilityZones: subnet.Zones, 56 } 57 result.Subnets = append(result.Subnets, resultSubnet) 58 } 59 return result 60 } 61 62 // spaceInfoFromState converts a state.Space into the equivalent 63 // network.SpaceInfo. 64 func spaceInfoFromState(space Space) (*network.SpaceInfo, error) { 65 result := &network.SpaceInfo{ 66 Name: space.Name(), 67 ProviderId: space.ProviderId(), 68 } 69 subnets, err := space.Subnets() 70 if err != nil { 71 return nil, errors.Trace(err) 72 } 73 for _, subnet := range subnets { 74 resultSubnet := network.SubnetInfo{ 75 CIDR: subnet.CIDR(), 76 ProviderId: subnet.ProviderId(), 77 ProviderNetworkId: subnet.ProviderNetworkId(), 78 VLANTag: subnet.VLANTag(), 79 AvailabilityZones: subnet.AvailabilityZones(), 80 } 81 result.Subnets = append(result.Subnets, resultSubnet) 82 } 83 return result, nil 84 }