github.com/leeprovoost/terraform@v0.6.10-0.20160119085442-96f3f76118e7/builtin/providers/aws/resource_aws_ecr_repository.go (about) 1 package aws 2 3 import ( 4 "log" 5 6 "github.com/aws/aws-sdk-go/aws" 7 "github.com/aws/aws-sdk-go/aws/awserr" 8 "github.com/aws/aws-sdk-go/service/ecr" 9 "github.com/hashicorp/terraform/helper/schema" 10 ) 11 12 func resourceAwsEcrRepository() *schema.Resource { 13 return &schema.Resource{ 14 Create: resourceAwsEcrRepositoryCreate, 15 Read: resourceAwsEcrRepositoryRead, 16 Delete: resourceAwsEcrRepositoryDelete, 17 18 Schema: map[string]*schema.Schema{ 19 "name": &schema.Schema{ 20 Type: schema.TypeString, 21 Required: true, 22 ForceNew: true, 23 }, 24 "arn": &schema.Schema{ 25 Type: schema.TypeString, 26 Computed: true, 27 }, 28 "registry_id": &schema.Schema{ 29 Type: schema.TypeString, 30 Computed: true, 31 }, 32 }, 33 } 34 } 35 36 func resourceAwsEcrRepositoryCreate(d *schema.ResourceData, meta interface{}) error { 37 conn := meta.(*AWSClient).ecrconn 38 39 input := ecr.CreateRepositoryInput{ 40 RepositoryName: aws.String(d.Get("name").(string)), 41 } 42 43 log.Printf("[DEBUG] Creating ECR resository: %s", input) 44 out, err := conn.CreateRepository(&input) 45 if err != nil { 46 return err 47 } 48 49 repository := *out.Repository 50 51 log.Printf("[DEBUG] ECR repository created: %q", *repository.RepositoryArn) 52 53 d.SetId(*repository.RepositoryName) 54 d.Set("arn", *repository.RepositoryArn) 55 d.Set("registry_id", *repository.RegistryId) 56 57 return resourceAwsEcrRepositoryRead(d, meta) 58 } 59 60 func resourceAwsEcrRepositoryRead(d *schema.ResourceData, meta interface{}) error { 61 conn := meta.(*AWSClient).ecrconn 62 63 log.Printf("[DEBUG] Reading repository %s", d.Id()) 64 out, err := conn.DescribeRepositories(&ecr.DescribeRepositoriesInput{ 65 RegistryId: aws.String(d.Get("registry_id").(string)), 66 RepositoryNames: []*string{aws.String(d.Id())}, 67 }) 68 if err != nil { 69 if ecrerr, ok := err.(awserr.Error); ok && ecrerr.Code() == "RepositoryNotFoundException" { 70 d.SetId("") 71 return nil 72 } 73 return err 74 } 75 76 repository := out.Repositories[0] 77 78 log.Printf("[DEBUG] Received repository %s", out) 79 80 d.SetId(*repository.RepositoryName) 81 d.Set("arn", *repository.RepositoryArn) 82 d.Set("registry_id", *repository.RegistryId) 83 84 return nil 85 } 86 87 func resourceAwsEcrRepositoryDelete(d *schema.ResourceData, meta interface{}) error { 88 conn := meta.(*AWSClient).ecrconn 89 90 _, err := conn.DeleteRepository(&ecr.DeleteRepositoryInput{ 91 RepositoryName: aws.String(d.Id()), 92 RegistryId: aws.String(d.Get("registry_id").(string)), 93 Force: aws.Bool(true), 94 }) 95 if err != nil { 96 if ecrerr, ok := err.(awserr.Error); ok && ecrerr.Code() == "RepositoryNotFoundException" { 97 d.SetId("") 98 return nil 99 } 100 return err 101 } 102 103 log.Printf("[DEBUG] repository %q deleted.", d.Get("arn").(string)) 104 105 return nil 106 }