From 7973e5b4592703ea9333250821e6523312810ea3 Mon Sep 17 00:00:00 2001 From: Thomas Vachon Date: Fri, 2 Mar 2018 13:49:07 -0500 Subject: [PATCH] Add Cloud9 Environment --- resources/cloud9-environments.go | 60 ++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 resources/cloud9-environments.go diff --git a/resources/cloud9-environments.go b/resources/cloud9-environments.go new file mode 100644 index 000000000..e92fdfb3f --- /dev/null +++ b/resources/cloud9-environments.go @@ -0,0 +1,60 @@ +package resources + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/cloud9" +) + +type Cloud9Environment struct { + svc *cloud9.Cloud9 + environmentID *string +} + +func init() { + register("Cloud9Environment", ListCloud9Environments) +} + +func ListCloud9Environments(sess *session.Session) ([]Resource, error) { + svc := cloud9.New(sess) + resources := []Resource{} + + params := &cloud9.ListEnvironmentsInput{ + MaxResults: aws.Int64(25), + } + + for { + resp, err := svc.ListEnvironments(params) + if err != nil { + return nil, err + } + + for _, environmentID := range resp.EnvironmentIds { + resources = append(resources, &Cloud9Environment{ + svc: svc, + environmentID: environmentID, + }) + } + + if resp.NextToken == nil { + break + } + + params.NextToken = resp.NextToken + } + + return resources, nil +} + +func (f *Cloud9Environment) Remove() error { + + _, err := f.svc.DeleteEnvironment(&cloud9.DeleteEnvironmentInput{ + EnvironmentId: f.environmentID, + }) + + return err +} + +func (f *Cloud9Environment) String() string { + return *f.environmentID +}