ecs.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package amazon
  2. import (
  3. "errors"
  4. "github.com/aws/aws-sdk-go/aws"
  5. "github.com/aws/aws-sdk-go/service/ecs"
  6. "github.com/sirupsen/logrus"
  7. )
  8. func (c client) RegisterTaskDefinition(task *ecs.RegisterTaskDefinitionInput) (*string, error) {
  9. logrus.Debug("Register Task Definition")
  10. def, err := c.ECS.RegisterTaskDefinition(task)
  11. if err != nil {
  12. return nil, err
  13. }
  14. return def.TaskDefinition.TaskDefinitionArn, err
  15. }
  16. func (c client) CreateCluster() (*string, error) {
  17. logrus.Debug("Create cluster ", c.Cluster)
  18. response, err := c.ECS.CreateCluster(&ecs.CreateClusterInput{ClusterName: &c.Cluster})
  19. if err != nil {
  20. return nil, err
  21. }
  22. return response.Cluster.Status, nil
  23. }
  24. func (c client) DeleteCluster() error {
  25. logrus.Debug("Delete cluster ", c.Cluster)
  26. response, err := c.ECS.DeleteCluster(&ecs.DeleteClusterInput{Cluster: &c.Cluster})
  27. if err != nil {
  28. return err
  29. }
  30. if *response.Cluster.Status == "INACTIVE" {
  31. return nil
  32. }
  33. return errors.New("Failed to delete cluster, status: " + *response.Cluster.Status)
  34. }
  35. func (c client) ClusterExists() (bool, error) {
  36. logrus.Debug("Check if cluster was already created: ", c.Cluster)
  37. clusters, err := c.ECS.DescribeClusters(&ecs.DescribeClustersInput{
  38. Clusters: []*string{aws.String(c.Cluster)},
  39. })
  40. if err != nil {
  41. return false, err
  42. }
  43. return len(clusters.Clusters) > 0, nil
  44. }