Documentation ¶
Index ¶
- Constants
- Variables
- func DeleteVolume(ec2Client IEC2, volumeID *string) error
- type AWSProvider
- func (a *AWSProvider) Attr(name string) (string, error)
- func (client *AWSProvider) BucketExists(name string) (bool, error)
- func (a *AWSProvider) CheckForWhitelistedIP(ip, securityGroup string) (bool, error)
- func (a *AWSProvider) Choose(c Choice) interface{}
- func (client *AWSProvider) CreateBucket(name string) error
- func (a *AWSProvider) CreateDatabases(name, username, password string) error
- func (a *AWSProvider) DBType(name string) string
- func (client *AWSProvider) DeleteFile(bucket, path string) error
- func (a *AWSProvider) DeleteVMsInDeployment(zone, project, deployment string) error
- func (a *AWSProvider) DeleteVMsInVPC(vpcID string) ([]string, error)
- func (client *AWSProvider) DeleteVersionedBucket(name string) error
- func (a *AWSProvider) DeleteVolumes(volumes []string, deleteVolume func(ec2Client IEC2, volumeID *string) error) error
- func (client *AWSProvider) EnsureFileExists(bucket, path string, defaultContents []byte) ([]byte, bool, error)
- func (a *AWSProvider) FindLongestMatchingHostedZone(subdomain string) (string, string, error)
- func (client *AWSProvider) HasFile(bucket, path string) (bool, error)
- func (a *AWSProvider) IAAS() Name
- func (a *AWSProvider) ListHostedZones() ([]*route53.HostedZone, error)
- func (client *AWSProvider) LoadFile(bucket, path string) ([]byte, error)
- func (a *AWSProvider) Region() string
- func (client *AWSProvider) WriteFile(bucket, path string, contents []byte) error
- func (a *AWSProvider) Zone(requestedZone, workerSize string) string
- type Choice
- type GCPOption
- type GCPProvider
- func (g *GCPProvider) Attr(key string) (string, error)
- func (g *GCPProvider) BucketExists(name string) (bool, error)
- func (g *GCPProvider) CheckForWhitelistedIP(ip, firewallName string) (bool, error)
- func (g *GCPProvider) Choose(c Choice) interface{}
- func (g *GCPProvider) CreateBucket(name string) error
- func (g *GCPProvider) CreateDatabases(name, username, password string) error
- func (g *GCPProvider) DBType(name string) string
- func (g *GCPProvider) DeleteVMsInDeployment(zone, project, deployment string) error
- func (g *GCPProvider) DeleteVMsInVPC(vpcID string) ([]string, error)
- func (g *GCPProvider) DeleteVersionedBucket(name string) error
- func (g *GCPProvider) DeleteVolumes(volumesToDelete []string, ...) error
- func (g *GCPProvider) EnsureFileExists(bucket, path string, defaultContents []byte) ([]byte, bool, error)
- func (g *GCPProvider) FindLongestMatchingHostedZone(domain string) (string, string, error)
- func (g *GCPProvider) HasFile(bucket, path string) (bool, error)
- func (g *GCPProvider) IAAS() Name
- func (g *GCPProvider) LoadFile(bucket, path string) ([]byte, error)
- func (g *GCPProvider) Region() string
- func (g *GCPProvider) WriteFile(bucket, path string, contents []byte) error
- func (g *GCPProvider) Zone(requestedZone, workerSizeNotUsedInGCP string) string
- type GCPStorageClient
- type IEC2
- type Name
- type Provider
Constants ¶
const ( Unknown = iota AWS GCP )
Variables ¶
var AWSDBSizes = map[string]string{
"small": "db.t3.small",
"medium": "db.t3.medium",
"large": "db.m4.large",
"xlarge": "db.m4.xlarge",
"2xlarge": "db.m4.2xlarge",
"4xlarge": "db.m4.4xlarge",
}
AWSDBSizes maps user set size to RDS instance classes
var GCPDBSizes = map[string]string{
"small": "db-g1-small",
"medium": "db-custom-2-4096",
"large": "db-custom-2-8192",
"xlarge": "db-custom-4-16384",
"2xlarge": "db-custom-8-32768",
"4xlarge": "db-custom-16-65536",
}
GCPDBSizes maps user set size to GCP specific machine type
Functions ¶
func DeleteVolume ¶
DeleteVolume deletes an EBS volume with the given ID
Types ¶
type AWSProvider ¶
type AWSProvider struct {
// contains filtered or unexported fields
}
AWSProvider is the concrete implementation of AWS Provider
func (*AWSProvider) Attr ¶
func (a *AWSProvider) Attr(name string) (string, error)
Attr returns an attribute of the provider
func (*AWSProvider) BucketExists ¶
func (client *AWSProvider) BucketExists(name string) (bool, error)
BucketExists checks if the named bucket exists
func (*AWSProvider) CheckForWhitelistedIP ¶
func (a *AWSProvider) CheckForWhitelistedIP(ip, securityGroup string) (bool, error)
CheckForWhitelistedIP checks if the specified IP is whitelisted in the security group
func (*AWSProvider) Choose ¶
func (a *AWSProvider) Choose(c Choice) interface{}
Choose for the consumer the appropriate output based on the provider
func (*AWSProvider) CreateBucket ¶
func (client *AWSProvider) CreateBucket(name string) error
CreateBucket checks if the named bucket exists and creates it if it doesn't
func (*AWSProvider) CreateDatabases ¶
func (a *AWSProvider) CreateDatabases(name, username, password string) error
CreateDatabases creates databases on the server
func (*AWSProvider) DBType ¶
func (a *AWSProvider) DBType(name string) string
DBType gets the correct RDSInstance class
func (*AWSProvider) DeleteFile ¶
func (client *AWSProvider) DeleteFile(bucket, path string) error
DeleteFile deletes a file from S3
func (*AWSProvider) DeleteVMsInDeployment ¶
func (a *AWSProvider) DeleteVMsInDeployment(zone, project, deployment string) error
DeleteVMsInDeployment is a placeholder for a function used with GCP deployments
func (*AWSProvider) DeleteVMsInVPC ¶
func (a *AWSProvider) DeleteVMsInVPC(vpcID string) ([]string, error)
DeleteVMsInVPC deletes all the VMs in the given VPC
func (*AWSProvider) DeleteVersionedBucket ¶
func (client *AWSProvider) DeleteVersionedBucket(name string) error
DeleteVersionedBucket deletes and empties a versioned bucket
func (*AWSProvider) DeleteVolumes ¶
func (a *AWSProvider) DeleteVolumes(volumes []string, deleteVolume func(ec2Client IEC2, volumeID *string) error) error
DeleteVolumes deletes the specified EBS volumes
func (*AWSProvider) EnsureFileExists ¶
func (client *AWSProvider) EnsureFileExists(bucket, path string, defaultContents []byte) ([]byte, bool, error)
EnsureFileExists checks for the named file in S3 and creates it if it doesn't exist Second argument is true if new file was created
func (*AWSProvider) FindLongestMatchingHostedZone ¶
func (a *AWSProvider) FindLongestMatchingHostedZone(subdomain string) (string, string, error)
FindLongestMatchingHostedZone finds the longest hosted zone that matches the given subdomain
func (*AWSProvider) HasFile ¶
func (client *AWSProvider) HasFile(bucket, path string) (bool, error)
HasFile returns true if the specified S3 object exists
func (*AWSProvider) IAAS ¶
func (a *AWSProvider) IAAS() Name
IAAS returns the iaas to operate against
func (*AWSProvider) ListHostedZones ¶
func (a *AWSProvider) ListHostedZones() ([]*route53.HostedZone, error)
ListHostedZones returns a list of hosted zones
func (*AWSProvider) LoadFile ¶
func (client *AWSProvider) LoadFile(bucket, path string) ([]byte, error)
LoadFile loads a file from S3
func (*AWSProvider) Region ¶
func (a *AWSProvider) Region() string
Region returns the region to operate against
func (*AWSProvider) WriteFile ¶
func (client *AWSProvider) WriteFile(bucket, path string, contents []byte) error
WriteFile writes the specified S3 object
func (*AWSProvider) Zone ¶
func (a *AWSProvider) Zone(requestedZone, workerSize string) string
type Choice ¶
type Choice struct { AWS interface{} GCP interface{} }
Choice is an interface which can help on the abstraction of provider data by defining any kind of data mapped against the available providers
type GCPOption ¶
type GCPOption func(*GCPProvider) error
func GCPStorage ¶
func GCPStorage() GCPOption
GCPStorage returns an option function with storage initialised
type GCPProvider ¶
type GCPProvider struct {
// contains filtered or unexported fields
}
func (*GCPProvider) Attr ¶
func (g *GCPProvider) Attr(key string) (string, error)
Attr returns GCP specific attribute
func (*GCPProvider) BucketExists ¶
func (g *GCPProvider) BucketExists(name string) (bool, error)
func (*GCPProvider) CheckForWhitelistedIP ¶
func (g *GCPProvider) CheckForWhitelistedIP(ip, firewallName string) (bool, error)
CheckForWhitelistedIP checks if the specified IP is whitelisted in the security group
func (*GCPProvider) Choose ¶
func (g *GCPProvider) Choose(c Choice) interface{}
Choose for the consumer the appropriate output based on the provider
func (*GCPProvider) CreateBucket ¶
func (g *GCPProvider) CreateBucket(name string) error
func (*GCPProvider) CreateDatabases ¶
func (g *GCPProvider) CreateDatabases(name, username, password string) error
func (*GCPProvider) DBType ¶
func (g *GCPProvider) DBType(name string) string
DBType gets the correct CloudSQL db tier
func (*GCPProvider) DeleteVMsInDeployment ¶
func (g *GCPProvider) DeleteVMsInDeployment(zone, project, deployment string) error
DeleteVMsInDeployment will delete all vms in a deployment apart from nat instance
func (*GCPProvider) DeleteVMsInVPC ¶
func (g *GCPProvider) DeleteVMsInVPC(vpcID string) ([]string, error)
DeleteVMsInVPC is a placeholder function used with AWS deployments
func (*GCPProvider) DeleteVersionedBucket ¶
func (g *GCPProvider) DeleteVersionedBucket(name string) error
func (*GCPProvider) DeleteVolumes ¶
func (*GCPProvider) EnsureFileExists ¶
func (g *GCPProvider) EnsureFileExists(bucket, path string, defaultContents []byte) ([]byte, bool, error)
EnsureFileExists checks for the named file in GCP storage and creates it if it doesn't exist Second argument is true if new file was created
func (*GCPProvider) FindLongestMatchingHostedZone ¶
func (g *GCPProvider) FindLongestMatchingHostedZone(domain string) (string, string, error)
func (*GCPProvider) IAAS ¶
func (g *GCPProvider) IAAS() Name
func (*GCPProvider) Region ¶
func (g *GCPProvider) Region() string
func (*GCPProvider) WriteFile ¶
func (g *GCPProvider) WriteFile(bucket, path string, contents []byte) error
func (*GCPProvider) Zone ¶
func (g *GCPProvider) Zone(requestedZone, workerSizeNotUsedInGCP string) string
type GCPStorageClient ¶
type GCPStorageClient interface { Bucket(name string) *storage.BucketHandle Buckets(ctx context.Context, projectID string) *storage.BucketIterator }
type IEC2 ¶
type IEC2 interface { DescribeSecurityGroups(input *ec2.DescribeSecurityGroupsInput) (*ec2.DescribeSecurityGroupsOutput, error) DescribeVolumes(input *ec2.DescribeVolumesInput) (*ec2.DescribeVolumesOutput, error) DeleteVolume(input *ec2.DeleteVolumeInput) (*ec2.DeleteVolumeOutput, error) }
IEC2 only implements functions used in the iaas package
type Provider ¶
type Provider interface { Attr(string) (string, error) BucketExists(name string) (bool, error) CheckForWhitelistedIP(ip, securityGroup string) (bool, error) CreateBucket(name string) error CreateDatabases(name, username, password string) error DeleteVersionedBucket(name string) error DeleteVMsInDeployment(zone, project, deployment string) error DeleteVMsInVPC(vpcID string) ([]string, error) DeleteVolumes(volumesToDelete []string, deleteVolume func(ec2Client IEC2, volumeID *string) error) error EnsureFileExists(bucket, path string, defaultContents []byte) ([]byte, bool, error) FindLongestMatchingHostedZone(subdomain string) (string, string, error) HasFile(bucket, path string) (bool, error) DBType(name string) string IAAS() Name LoadFile(bucket, path string) ([]byte, error) Region() string WriteFile(bucket, path string, contents []byte) error Zone(string, string) string Choose(Choice) interface{} }
Provider represents actions taken against AWS