auth

package
v0.13.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 1, 2019 License: Apache-2.0 Imports: 14 Imported by: 6

Documentation

Overview

Package auth provides Google oauth2 and Azure credential bindings for mantle.

Index

Constants

View Source
const (
	AzureAuthPath    = ".azure/credentials.json"
	AzureProfilePath = ".azure/azureProfile.json"
)
View Source
const DOConfigPath = ".config/digitalocean.json"
View Source
const ESXConfigPath = ".config/esx.json"
View Source
const OpenStackConfigPath = ".config/openstack.json"
View Source
const PacketConfigPath = ".config/packet.json"

Variables

This section is empty.

Functions

func DecodeBOMFile added in v0.13.0

func DecodeBOMFile(path string) ([]byte, error)

func GoogleClient

func GoogleClient() (*http.Client, error)

GoogleClient provides an http.Client authorized with an oauth2 token that is automatically cached and refreshed from a file named '.mantle-cache-google.json'. This uses interactive oauth2 authorization and requires a user follow to follow a web link and paste in an authorization token.

func GoogleClientFromJSONKey

func GoogleClientFromJSONKey(jsonKey []byte, scope ...string) (*http.Client, error)

GoogleClientFromJSONKey provides an http.Client authorized with an oauth2 token retrieved using a Google Developers service account's private JSON key file.

func GoogleServiceClient

func GoogleServiceClient() *http.Client

GoogleServiceClient fetchs a token from Google Compute Engine's metadata service. This should be used on GCE vms. The Default account is used.

func GoogleServiceTokenSource

func GoogleServiceTokenSource() oauth2.TokenSource

GoogleServiceTokenSource provides an oauth2.TokenSource authorized in the same manner as GoogleServiceClient().

func GoogleTokenSource

func GoogleTokenSource() (oauth2.TokenSource, error)

GoogleTokenSource provides an outh2.TokenSource authorized in the same manner as GoogleClient.

func GoogleTokenSourceFromJSONKey

func GoogleTokenSourceFromJSONKey(jsonKey []byte, scope ...string) (oauth2.TokenSource, error)

GoogleTokenSourceFromJSONKey provides an oauth2.TokenSource authorized in the same manner as GoogleClientFromJSONKey.

func ReadDOConfig added in v0.8.0

func ReadDOConfig(path string) (map[string]DOProfile, error)

ReadDOConfig decodes a DigitalOcean config file, which is a custom format used by Mantle to hold personal access tokens.

If path is empty, $HOME/.config/digitalocean.json is read.

func ReadESXConfig added in v0.7.0

func ReadESXConfig(path string) (map[string]ESXProfile, error)

ReadESXConfig decodes a ESX config file, which is a custom format used by Mantle to hold ESX server information.

If path is empty, $HOME/.config/esx.json is read.

func ReadOpenStackConfig added in v0.12.0

func ReadOpenStackConfig(path string) (map[string]OpenStackProfile, error)

ReadOpenStackConfig decodes an OpenStack config file, which is a custom format used by Mantle to hold OpenStack server information.

If path is empty, $HOME/.config/openstack.json is read.

func ReadPacketConfig added in v0.6.0

func ReadPacketConfig(path string) (map[string]PacketProfile, error)

ReadPacketConfig decodes a Packet config file, which is a custom format used by Mantle to hold API keys.

If path is empty, $HOME/.config/packet.json is read.

Types

type AzureEnvironment added in v0.3.0

type AzureEnvironment struct {
	ActiveDirectoryEndpointURL                        string `json:"activeDirectoryEndpointUrl"`
	ActiveDirectoryGraphAPIVersion                    string `json:"activeDirectoryGraphApiVersion"`
	ActiveDirectoryGraphResourceID                    string `json:"activeDirectoryGraphResourceId"`
	ActiveDirectoryResourceID                         string `json:"activeDirectoryResourceId"`
	AzureDataLakeAnalyticsCatalogAndJobEndpointSuffix string `json:"azureDataLakeAnalyticsCatalogAndJobEndpointSuffix"`
	AzureDataLakeStoreFileSystemEndpointSuffix        string `json:"azureDataLakeStoreFileSystemEndpointSuffix"`
	GalleryEndpointURL                                string `json:"galleryEndpointUrl"`
	KeyVaultDNSSuffix                                 string `json:"keyVaultDnsSuffix"`
	ManagementEndpointURL                             string `json:"managementEndpointUrl"`
	Name                                              string `json:"name"`
	PortalURL                                         string `json:"portalUrl"`
	PublishingProfileURL                              string `json:"publishingProfileUrl"`
	ResourceManagerEndpointURL                        string `json:"resourceManagerEndpointUrl"`
	SqlManagementEndpointURL                          string `json:"sqlManagementEndpointUrl"`
	SqlServerHostnameSuffix                           string `json:"sqlServerHostnameSuffix"`
	StorageEndpointSuffix                             string `json:"storageEndpointSuffix"`
}

type AzureManagementCertificate added in v0.3.0

type AzureManagementCertificate struct {
	Cert string `json:"cert"`
	Key  string `json:"key"`
}

type AzureProfile added in v0.3.0

type AzureProfile struct {
	Environments  []AzureEnvironment  `json:"environments"`
	Subscriptions []AzureSubscription `json:"subscriptions"`
}

AzureProfile represents a parsed Azure Profile Configuration File.

func ReadAzureProfile added in v0.3.0

func ReadAzureProfile(path string) (*AzureProfile, error)

ReadAzureProfile decodes an Azure Profile, as created by the Azure Cross-platform CLI.

If path is empty, $HOME/.azure/azureProfile.json is read.

func (*AzureProfile) AsOptions added in v0.3.0

func (ap *AzureProfile) AsOptions() []Options

AsOptions converts all subscriptions into a slice of Options. If there is an environment with a name matching the subscription, that environment's storage endpoint will be copied to the options.

func (*AzureProfile) SubscriptionOptions added in v0.3.0

func (ap *AzureProfile) SubscriptionOptions(name string) *Options

SubscriptionOptions returns the name subscription in the Azure profile as a Options struct. If the subscription name is "", the first subscription is returned. If there are no subscriptions or the named subscription is not found, SubscriptionOptions returns nil.

type AzureSubscription added in v0.3.0

type AzureSubscription struct {
	EnvironmentName       string                     `json:"environmentName"`
	ID                    string                     `json:"id"`
	IsDefault             bool                       `json:"isDefault"`
	ManagementCertificate AzureManagementCertificate `json:"managementCertificate"`
	ManagementEndpointURL string                     `json:"managementEndpointUrl"`
	Name                  string                     `json:"name"`
	RegisteredProviders   []string                   `json:"registeredProviders"`
	State                 string                     `json:"state"`
}

type DOProfile added in v0.8.0

type DOProfile struct {
	AccessToken string `json:"token"`
}

DOProfile represents a parsed DigitalOcean profile. This is a custom format specific to Mantle.

type ESXProfile added in v0.7.0

type ESXProfile struct {
	Server   string `json:"server"`
	User     string `json:"user"`
	Password string `json:"password"`
}

ESXProfile represents a parsed ESX profile. This is a custom format specific to Mantle.

type OpenStackProfile added in v0.12.0

type OpenStackProfile struct {
	AuthURL    string `json:"auth_url"`
	TenantID   string `json:"tenant_id"`
	TenantName string `json:"tenant_name"`
	Username   string `json:"username"`
	Password   string `json:"password"`

	//Optional
	Domain         string `json:"user_domain"`
	FloatingIPPool string `json:"floating_ip_pool"`
	Region         string `json:"region_name"`
}

type Options added in v0.13.0

type Options struct {
	*platform.Options

	SubscriptionName string
	SubscriptionID   string

	// Azure API endpoint. If unset, the Azure SDK default will be used.
	ManagementURL         string
	ManagementCertificate []byte

	// Azure Storage API endpoint suffix. If unset, the Azure SDK default will be used.
	StorageEndpointSuffix string
}

A version of the Options struct from platform/api/azure that only contains the ASM values. Otherwise there's a cyclical depdendence because platform/api/azure has to import auth to have access to the ReadAzureProfile function.

type PacketProfile added in v0.6.0

type PacketProfile struct {
	ApiKey  string `json:"api_key"`
	Project string `json:"project"`
}

PacketProfile represents a parsed Packet profile. This is a custom format specific to Mantle.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL