mirror of https://github.com/docker/docs.git
103 lines
2.5 KiB
Go
103 lines
2.5 KiB
Go
package amazonec2
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/aws/aws-sdk-go/aws/credentials"
|
|
"github.com/aws/aws-sdk-go/service/ec2"
|
|
)
|
|
|
|
type fakeEC2 struct {
|
|
*ec2.EC2
|
|
}
|
|
|
|
type errorProvider struct{}
|
|
|
|
func (p *errorProvider) Retrieve() (credentials.Value, error) {
|
|
return credentials.Value{}, errors.New("bad credentials")
|
|
}
|
|
|
|
func (p *errorProvider) IsExpired() bool {
|
|
return true
|
|
}
|
|
|
|
type okProvider struct {
|
|
accessKeyID string
|
|
secretAccessKey string
|
|
sessionToken string
|
|
}
|
|
|
|
func (p *okProvider) Retrieve() (credentials.Value, error) {
|
|
return credentials.Value{
|
|
AccessKeyID: p.accessKeyID,
|
|
SecretAccessKey: p.secretAccessKey,
|
|
SessionToken: p.sessionToken,
|
|
}, nil
|
|
}
|
|
|
|
func (p *okProvider) IsExpired() bool {
|
|
return true
|
|
}
|
|
|
|
type cliCredentials struct{}
|
|
|
|
func (c *cliCredentials) NewStaticCredentials(id, secret, token string) *credentials.Credentials {
|
|
return credentials.NewCredentials(&okProvider{id, secret, token})
|
|
}
|
|
|
|
func (c *cliCredentials) NewSharedCredentials(filename, profile string) *credentials.Credentials {
|
|
return credentials.NewCredentials(&errorProvider{})
|
|
}
|
|
|
|
type fileCredentials struct{}
|
|
|
|
func (c *fileCredentials) NewStaticCredentials(id, secret, token string) *credentials.Credentials {
|
|
return nil
|
|
}
|
|
|
|
func (c *fileCredentials) NewSharedCredentials(filename, profile string) *credentials.Credentials {
|
|
return credentials.NewCredentials(&okProvider{"access", "secret", "token"})
|
|
}
|
|
|
|
type fakeEC2WithDescribe struct {
|
|
*fakeEC2
|
|
output *ec2.DescribeAccountAttributesOutput
|
|
err error
|
|
}
|
|
|
|
func (f *fakeEC2WithDescribe) DescribeAccountAttributes(input *ec2.DescribeAccountAttributesInput) (*ec2.DescribeAccountAttributesOutput, error) {
|
|
return f.output, f.err
|
|
}
|
|
|
|
type fakeEC2WithLogin struct {
|
|
*fakeEC2
|
|
}
|
|
|
|
func (f *fakeEC2WithLogin) DescribeAccountAttributes(input *ec2.DescribeAccountAttributesInput) (*ec2.DescribeAccountAttributesOutput, error) {
|
|
defaultVpc := "default-vpc"
|
|
vpcName := "vpc-9999"
|
|
|
|
return &ec2.DescribeAccountAttributesOutput{
|
|
AccountAttributes: []*ec2.AccountAttribute{
|
|
{
|
|
AttributeName: &defaultVpc,
|
|
AttributeValues: []*ec2.AccountAttributeValue{
|
|
{AttributeValue: &vpcName},
|
|
},
|
|
},
|
|
},
|
|
}, nil
|
|
}
|
|
|
|
func NewTestDriver() *Driver {
|
|
driver := NewDriver("machineFoo", "path")
|
|
driver.clientFactory = func() Ec2Client { return &fakeEC2{} }
|
|
return driver
|
|
}
|
|
|
|
func NewCustomTestDriver(ec2Client Ec2Client) *Driver {
|
|
driver := NewDriver("machineFoo", "path")
|
|
driver.clientFactory = func() Ec2Client { return ec2Client }
|
|
return driver
|
|
}
|