Documentation ¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type UserInfo ¶
UserInfo struct contains info provided by the user
func (*UserInfo) ContainsValidTags ¶
ContainsValidTags whether sufficient input has been provided to be able to tag instance
Example ¶
package main import ( "log" "github.com/bishy999/go-tag-ec2/pkg/tag" ) func main() { input := tag.UserInfo{ Tags: map[string]string{"Name": "test01", "Region": "eu-west-1", "Environment": "EDDIE_DEV", "Team": "System_Team", "Owner": "jimmy"}, } err := input.ContainsValidTags() if err != nil { log.Fatal(err) } }
Output:
func (*UserInfo) CreateTags ¶
CreateTags Reports whether tags have been successfully added to the instance
Example ¶
package main import ( "fmt" "log" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ec2/ec2iface" "github.com/bishy999/go-tag-ec2/pkg/tag" ) const instanceId = "i-abcdefghx" type mockEC2Client struct { ec2iface.EC2API Reservations []*ec2.Reservation InstanceId string } func (c *mockEC2Client) DescribeInstances(in *ec2.DescribeInstancesInput) (*ec2.DescribeInstancesOutput, error) { reservations := []*ec2.Reservation{} instances := []*ec2.Instance{} instances = append(instances, &ec2.Instance{ InstanceId: aws.String(instanceId), }) reservations = append(reservations, &ec2.Reservation{Instances: instances}) return &ec2.DescribeInstancesOutput{ Reservations: reservations, }, nil } func (c *mockEC2Client) CreateTags(in *ec2.CreateTagsInput) (*ec2.CreateTagsOutput, error) { if aws.StringValue(in.Resources[0]) == instanceId { match := mockEC2Client{InstanceId: aws.StringValue(in.Resources[0])} fmt.Printf("%T", match) } return &ec2.CreateTagsOutput{}, nil } func main() { mockSvc := &mockEC2Client{} input := tag.UserInfo{ Client: tag.Client{mockSvc}, Tags: map[string]string{"Name": "dummyvalue", "Region": "eu-west-1", "Environment": "Denvironment", "Team": "Ateam", "Owner": "timmy", "Cost-Centre": "0000"}, } res, err := input.CreateTags(input.Tags["Name"]) if err != nil { log.Printf("error getting instance: %s", err.Error()) return } fmt.Printf("\n%v", res) }
Output: true
func (*UserInfo) GetInstance ¶
GetInstance Get instance id matching name provided
Example ¶
package main import ( "fmt" "log" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" "github.com/aws/aws-sdk-go/service/ec2/ec2iface" "github.com/bishy999/go-tag-ec2/pkg/tag" ) const instanceId = "i-abcdefghx" type mockEC2Client struct { ec2iface.EC2API Reservations []*ec2.Reservation InstanceId string } func (c *mockEC2Client) DescribeInstances(in *ec2.DescribeInstancesInput) (*ec2.DescribeInstancesOutput, error) { reservations := []*ec2.Reservation{} instances := []*ec2.Instance{} instances = append(instances, &ec2.Instance{ InstanceId: aws.String(instanceId), }) reservations = append(reservations, &ec2.Reservation{Instances: instances}) return &ec2.DescribeInstancesOutput{ Reservations: reservations, }, nil } func (c *mockEC2Client) CreateTags(in *ec2.CreateTagsInput) (*ec2.CreateTagsOutput, error) { if aws.StringValue(in.Resources[0]) == instanceId { match := mockEC2Client{InstanceId: aws.StringValue(in.Resources[0])} fmt.Printf("%T", match) } return &ec2.CreateTagsOutput{}, nil } func main() { mockSvc := &mockEC2Client{} input := tag.UserInfo{ Client: tag.Client{mockSvc}, Tags: map[string]string{"Name": "dummyvalue", "Region": "eu-west-1", "Environment": "Denvironment", "Team": "Ateam", "Owner": "timmy", "Cost-Centre": "0000"}, } res, err := input.GetInstance() if err != nil { log.Printf("error getting instance: %s", err.Error()) return } fmt.Printf("\n%v", res) }
Output: i-abcdefghx
Click to show internal directories.
Click to hide internal directories.