tag

package
v1.0.4 Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2020 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	Svc ec2iface.EC2API
}

Client for accessing ec2 api

func NewClient

func NewClient(region *string) (*Client, error)

NewClient Creates a new client for ec2 interaction

type UserInfo

type UserInfo struct {
	Client Client
	Tags   map[string]string
}

UserInfo struct contains info provided by the user

func (*UserInfo) ContainsValidTags

func (t *UserInfo) ContainsValidTags() error

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

func (t *UserInfo) CreateTags(name string) (bool, error)

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

func (t *UserInfo) GetInstance() (string, error)

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

Jump to

Keyboard shortcuts

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