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  }