Documentation ¶
Index ¶
- Constants
- Variables
- func GetCloudServicesForAPIs(apis ...string) (services []cloud.Service)
- func GetCloudServicesForTypes(types ...string) (services []cloud.Service)
- func Init(conf map[string]interface{}, log *logger.Logger, ...) error
- func IsGlobalService(name string) bool
- func NewAccess(sess *session.Session, awsconf config, log *logger.Logger) cloud.Service
- func NewCdn(sess *session.Session, awsconf config, log *logger.Logger) cloud.Service
- func NewCloudformation(sess *session.Session, awsconf config, log *logger.Logger) cloud.Service
- func NewDns(sess *session.Session, awsconf config, log *logger.Logger) cloud.Service
- func NewInfra(sess *session.Session, awsconf config, log *logger.Logger) cloud.Service
- func NewLambda(sess *session.Session, awsconf config, log *logger.Logger) cloud.Service
- func NewMessaging(sess *session.Session, awsconf config, log *logger.Logger) cloud.Service
- func NewMonitoring(sess *session.Session, awsconf config, log *logger.Logger) cloud.Service
- func NewStorage(sess *session.Session, awsconf config, log *logger.Logger) cloud.Service
- func ResolveRegionAndAmiFromEnv() (region string, ami string)
- func ResourceTypesPerServiceName() map[string][]string
- type Access
- func (s *Access) Fetch(ctx context.Context) (*graph.Graph, error)
- func (s *Access) FetchByType(ctx context.Context, t string) (*graph.Graph, error)
- func (s *Access) GetIdentity() (*Identity, error)
- func (s *Access) GetUserPolicies(username string) (*UserPolicies, error)
- func (s *Access) IsSyncDisabled() bool
- func (s *Access) Name() string
- func (s *Access) Region() string
- func (s *Access) ResourceTypes() []string
- type AwsImage
- type Cdn
- type Cloudformation
- func (s *Cloudformation) Fetch(ctx context.Context) (*graph.Graph, error)
- func (s *Cloudformation) FetchByType(ctx context.Context, t string) (*graph.Graph, error)
- func (s *Cloudformation) IsSyncDisabled() bool
- func (s *Cloudformation) Name() string
- func (s *Cloudformation) Region() string
- func (s *Cloudformation) ResourceTypes() []string
- type Distro
- type Dns
- type Identity
- type ImageQuery
- type ImageResolver
- type Infra
- type Lambda
- type Messaging
- func (s *Messaging) Fetch(ctx context.Context) (*graph.Graph, error)
- func (s *Messaging) FetchByType(ctx context.Context, t string) (*graph.Graph, error)
- func (s *Messaging) IsSyncDisabled() bool
- func (s *Messaging) Name() string
- func (s *Messaging) Region() string
- func (s *Messaging) ResourceTypes() []string
- type Monitoring
- func (s *Monitoring) Fetch(ctx context.Context) (*graph.Graph, error)
- func (s *Monitoring) FetchByType(ctx context.Context, t string) (*graph.Graph, error)
- func (s *Monitoring) IsSyncDisabled() bool
- func (s *Monitoring) Name() string
- func (s *Monitoring) Region() string
- func (s *Monitoring) ResourceTypes() []string
- type NetworkMonitor
- type Platform
- type Storage
- type UserPolicies
Constants ¶
View Source
const ( PARENT_OF = iota // default APPLIES_ON DEPENDING_ON )
View Source
const ImageQuerySpec = "owner:distro:variant:arch:virtualization:store"
Variables ¶
View Source
var ( Platforms = map[string]Platform{ "canonical": Canonical, "redhat": RedHat, "debian": Debian, "amazonlinux": AmazonLinux, "suselinux": SuseLinux, "microsoftserver": MicrosoftServer, } Canonical = Platform{ Name: "canonical", Id: "099720109477", DistroName: "ubuntu", LatestVariant: "xenial", MatchFunc: func(s string, d Distro) bool { return strings.HasPrefix(s, fmt.Sprintf("%s/images/%s-ssd/%s-%s", d.Name, d.Virt, d.Name, d.Variant)) }, } RedHat = Platform{ Name: "redhat", Id: "309956199498", DistroName: "rhel", LatestVariant: "7.3", MatchFunc: func(s string, d Distro) bool { return strings.Contains(s, fmt.Sprintf("%s-%s", d.Name, d.Variant)) }, } Debian = Platform{ Name: "debian", Id: "379101102735", DistroName: "debian", LatestVariant: "jessie", MatchFunc: func(s string, d Distro) bool { return strings.HasPrefix(s, fmt.Sprintf("%s-%s", d.Name, d.Variant)) }, } AmazonLinux = Platform{ Name: "amazonlinux", Id: "137112412989", LatestVariant: "hvm", MatchFunc: func(s string, d Distro) bool { return strings.HasPrefix(s, fmt.Sprintf("amzn-ami-%s", d.Variant)) }, } SuseLinux = Platform{ Name: "suselinux", Id: "013907871322", LatestVariant: "sles-12", MatchFunc: func(s string, d Distro) bool { return strings.HasPrefix(s, fmt.Sprintf("suse-%s", d.Variant)) }, } MicrosoftServer = Platform{ Name: "microsoftserver", Id: "801119661308", LatestVariant: "Windows_Server-2016", MatchFunc: func(s string, d Distro) bool { return strings.HasPrefix(s, fmt.Sprintf("%s", d.Variant)) }, } SupportedAMIOwners []string )
View Source
var APIPerResourceType = map[string]string{
"instance": "ec2",
"subnet": "ec2",
"vpc": "ec2",
"keypair": "ec2",
"securitygroup": "ec2",
"volume": "ec2",
"internetgateway": "ec2",
"natgateway": "ec2",
"routetable": "ec2",
"availabilityzone": "ec2",
"image": "ec2",
"importimagetask": "ec2",
"elasticip": "ec2",
"snapshot": "ec2",
"networkinterface": "ec2",
"loadbalancer": "elbv2",
"targetgroup": "elbv2",
"listener": "elbv2",
"database": "rds",
"dbsubnetgroup": "rds",
"launchconfiguration": "autoscaling",
"scalinggroup": "autoscaling",
"scalingpolicy": "autoscaling",
"repository": "ecr",
"containercluster": "ecs",
"containertask": "ecs",
"container": "ecs",
"containerinstance": "ecs",
"certificate": "acm",
"user": "iam",
"group": "iam",
"role": "iam",
"policy": "iam",
"accesskey": "iam",
"instanceprofile": "iam",
"mfadevice": "iam",
"bucket": "s3",
"s3object": "s3",
"subscription": "sns",
"topic": "sns",
"queue": "sqs",
"zone": "route53",
"record": "route53",
"function": "lambda",
"metric": "cloudwatch",
"alarm": "cloudwatch",
"distribution": "cloudfront",
"stack": "cloudformation",
}
View Source
var (
AccessService, InfraService, StorageService, MessagingService, DnsService, LambdaService, MonitoringService, CdnService, CloudformationService cloud.Service
)
View Source
var DefaultNetworkMonitor = &NetworkMonitor{requests: make(map[*request.Request]*req)}
View Source
var GlobalServices = []string{
"access",
"dns",
"cdn",
}
View Source
var ResourceTypes = []string{
"instance",
"subnet",
"vpc",
"keypair",
"securitygroup",
"volume",
"internetgateway",
"natgateway",
"routetable",
"availabilityzone",
"image",
"importimagetask",
"elasticip",
"snapshot",
"networkinterface",
"loadbalancer",
"targetgroup",
"listener",
"database",
"dbsubnetgroup",
"launchconfiguration",
"scalinggroup",
"scalingpolicy",
"repository",
"containercluster",
"containertask",
"container",
"containerinstance",
"certificate",
"user",
"group",
"role",
"policy",
"accesskey",
"instanceprofile",
"mfadevice",
"bucket",
"s3object",
"subscription",
"topic",
"queue",
"zone",
"record",
"function",
"metric",
"alarm",
"distribution",
"stack",
}
View Source
var ServiceNames = []string{
"infra",
"access",
"storage",
"messaging",
"dns",
"lambda",
"monitoring",
"cdn",
"cloudformation",
}
View Source
var ServicePerAPI = map[string]string{
"ec2": "infra",
"elbv2": "infra",
"rds": "infra",
"autoscaling": "infra",
"ecr": "infra",
"ecs": "infra",
"applicationautoscaling": "infra",
"acm": "infra",
"iam": "access",
"sts": "access",
"s3": "storage",
"sns": "messaging",
"sqs": "messaging",
"route53": "dns",
"lambda": "lambda",
"cloudwatch": "monitoring",
"cloudfront": "cdn",
"cloudformation": "cloudformation",
}
View Source
var ServicePerResourceType = map[string]string{
"instance": "infra",
"subnet": "infra",
"vpc": "infra",
"keypair": "infra",
"securitygroup": "infra",
"volume": "infra",
"internetgateway": "infra",
"natgateway": "infra",
"routetable": "infra",
"availabilityzone": "infra",
"image": "infra",
"importimagetask": "infra",
"elasticip": "infra",
"snapshot": "infra",
"networkinterface": "infra",
"loadbalancer": "infra",
"targetgroup": "infra",
"listener": "infra",
"database": "infra",
"dbsubnetgroup": "infra",
"launchconfiguration": "infra",
"scalinggroup": "infra",
"scalingpolicy": "infra",
"repository": "infra",
"containercluster": "infra",
"containertask": "infra",
"container": "infra",
"containerinstance": "infra",
"certificate": "infra",
"user": "access",
"group": "access",
"role": "access",
"policy": "access",
"accesskey": "access",
"instanceprofile": "access",
"mfadevice": "access",
"bucket": "storage",
"s3object": "storage",
"subscription": "messaging",
"topic": "messaging",
"queue": "messaging",
"zone": "dns",
"record": "dns",
"function": "lambda",
"metric": "monitoring",
"alarm": "monitoring",
"distribution": "cdn",
"stack": "cloudformation",
}
Functions ¶
func GetCloudServicesForAPIs ¶
func IsGlobalService ¶
func NewCloudformation ¶
func NewMessaging ¶
func NewMonitoring ¶
func NewStorage ¶
Types ¶
type Access ¶
func (*Access) FetchByType ¶
func (*Access) GetIdentity ¶
func (*Access) GetUserPolicies ¶
func (s *Access) GetUserPolicies(username string) (*UserPolicies, error)
func (*Access) IsSyncDisabled ¶
func (*Access) ResourceTypes ¶
type Cdn ¶
type Cdn struct { cloudfrontiface.CloudFrontAPI // contains filtered or unexported fields }
func (*Cdn) FetchByType ¶
func (*Cdn) IsSyncDisabled ¶
func (*Cdn) ResourceTypes ¶
type Cloudformation ¶
type Cloudformation struct { cloudformationiface.CloudFormationAPI // contains filtered or unexported fields }
func (*Cloudformation) FetchByType ¶
func (*Cloudformation) IsSyncDisabled ¶
func (s *Cloudformation) IsSyncDisabled() bool
func (*Cloudformation) Name ¶
func (s *Cloudformation) Name() string
func (*Cloudformation) Region ¶
func (s *Cloudformation) Region() string
func (*Cloudformation) ResourceTypes ¶
func (s *Cloudformation) ResourceTypes() []string
type Dns ¶
type Dns struct { route53iface.Route53API // contains filtered or unexported fields }
func (*Dns) FetchByType ¶
func (*Dns) IsSyncDisabled ¶
func (*Dns) ResourceTypes ¶
type Identity ¶
type Identity struct {
Account, Arn, UserId, ResourceType, ResourcePath, Resource string
}
func (*Identity) IsUserType ¶
type ImageQuery ¶
func ParseImageQuery ¶
func ParseImageQuery(s string) (ImageQuery, error)
func (ImageQuery) String ¶
func (q ImageQuery) String() string
type ImageResolver ¶
type ImageResolver struct {
InfraService *Infra
}
Image resolving allows to find AWS AMIs identifiers specifying what you want instead of an id that is specific to a region. The ami query string specification is as follows:
owner:distro:variant:arch:virtualization:store
Everything optional expect for the owner.
As for now only the main specific owner are taken into account and we deal with bares machines only distribution. Here are some examples:
- canonical:ubuntu:trusty
- redhat:rhel:6.8
- redhat::6.8
- amazonlinux
- suselinux:sles-12
- canonical:::i386
- redhat::::instance-store
The default values are: Arch="x86_64", Virt="hvm", Store="ebs"
func (*ImageResolver) Resolve ¶
func (r *ImageResolver) Resolve(q ImageQuery) ([]*AwsImage, error)
type Infra ¶
type Infra struct { ec2iface.EC2API elbv2iface.ELBV2API rdsiface.RDSAPI autoscalingiface.AutoScalingAPI ecriface.ECRAPI ecsiface.ECSAPI applicationautoscalingiface.ApplicationAutoScalingAPI acmiface.ACMAPI // contains filtered or unexported fields }
func (*Infra) FetchByType ¶
func (*Infra) IsSyncDisabled ¶
func (*Infra) ResourceTypes ¶
type Lambda ¶
type Lambda struct { lambdaiface.LambdaAPI // contains filtered or unexported fields }
func (*Lambda) FetchByType ¶
func (*Lambda) IsSyncDisabled ¶
func (*Lambda) ResourceTypes ¶
type Messaging ¶
func (*Messaging) FetchByType ¶
func (*Messaging) IsSyncDisabled ¶
func (*Messaging) ResourceTypes ¶
type Monitoring ¶
type Monitoring struct { cloudwatchiface.CloudWatchAPI // contains filtered or unexported fields }
func (*Monitoring) FetchByType ¶
func (*Monitoring) IsSyncDisabled ¶
func (s *Monitoring) IsSyncDisabled() bool
func (*Monitoring) Name ¶
func (s *Monitoring) Name() string
func (*Monitoring) Region ¶
func (s *Monitoring) Region() string
func (*Monitoring) ResourceTypes ¶
func (s *Monitoring) ResourceTypes() []string
type NetworkMonitor ¶
type NetworkMonitor struct {
// contains filtered or unexported fields
}
func (*NetworkMonitor) DisplayStats ¶
func (n *NetworkMonitor) DisplayStats(w io.Writer)
type Storage ¶
func (*Storage) FetchByType ¶
func (*Storage) IsSyncDisabled ¶
func (*Storage) ResourceTypes ¶
Click to show internal directories.
Click to hide internal directories.