github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/common/cloud.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package common 5 6 import ( 7 "github.com/juju/juju/apiserver/params" 8 jujucloud "github.com/juju/juju/cloud" 9 ) 10 11 func CloudToParams(cloud jujucloud.Cloud) params.Cloud { 12 authTypes := make([]string, len(cloud.AuthTypes)) 13 for i, authType := range cloud.AuthTypes { 14 authTypes[i] = string(authType) 15 } 16 regions := make([]params.CloudRegion, len(cloud.Regions)) 17 for i, region := range cloud.Regions { 18 regions[i] = params.CloudRegion{ 19 Name: region.Name, 20 Endpoint: region.Endpoint, 21 IdentityEndpoint: region.IdentityEndpoint, 22 StorageEndpoint: region.StorageEndpoint, 23 } 24 } 25 return params.Cloud{ 26 Type: cloud.Type, 27 HostCloudRegion: cloud.HostCloudRegion, 28 AuthTypes: authTypes, 29 Endpoint: cloud.Endpoint, 30 IdentityEndpoint: cloud.IdentityEndpoint, 31 StorageEndpoint: cloud.StorageEndpoint, 32 Regions: regions, 33 CACertificates: cloud.CACertificates, 34 } 35 } 36 37 func CloudFromParams(cloudName string, p params.Cloud) jujucloud.Cloud { 38 authTypes := make([]jujucloud.AuthType, len(p.AuthTypes)) 39 for i, authType := range p.AuthTypes { 40 authTypes[i] = jujucloud.AuthType(authType) 41 } 42 regions := make([]jujucloud.Region, len(p.Regions)) 43 for i, region := range p.Regions { 44 regions[i] = jujucloud.Region{ 45 Name: region.Name, 46 Endpoint: region.Endpoint, 47 IdentityEndpoint: region.IdentityEndpoint, 48 StorageEndpoint: region.StorageEndpoint, 49 } 50 } 51 return jujucloud.Cloud{ 52 Name: cloudName, 53 Type: p.Type, 54 AuthTypes: authTypes, 55 Endpoint: p.Endpoint, 56 IdentityEndpoint: p.IdentityEndpoint, 57 StorageEndpoint: p.StorageEndpoint, 58 Regions: regions, 59 CACertificates: p.CACertificates, 60 } 61 }