github.com/erriapo/terraform@v0.6.12-0.20160203182612-0340ea72354f/builtin/providers/google/resource_pubsub_topic.go (about)

     1  package google
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/hashicorp/terraform/helper/schema"
     7  	"google.golang.org/api/pubsub/v1"
     8  )
     9  
    10  func resourcePubsubTopic() *schema.Resource {
    11  	return &schema.Resource{
    12  		Create: resourcePubsubTopicCreate,
    13  		Read:   resourcePubsubTopicRead,
    14  		Delete: resourcePubsubTopicDelete,
    15  
    16  		Schema: map[string]*schema.Schema{
    17  			"name": &schema.Schema{
    18  				Type:     schema.TypeString,
    19  				Required: true,
    20  				ForceNew: true,
    21  			},
    22  		},
    23  	}
    24  }
    25  
    26  func resourcePubsubTopicCreate(d *schema.ResourceData, meta interface{}) error {
    27  	config := meta.(*Config)
    28  
    29  	name := fmt.Sprintf("projects/%s/topics/%s", config.Project, d.Get("name").(string))
    30  	topic := &pubsub.Topic{}
    31  
    32  	call := config.clientPubsub.Projects.Topics.Create(name, topic)
    33  	res, err := call.Do()
    34  	if err != nil {
    35  		return err
    36  	}
    37  
    38  	d.SetId(res.Name)
    39  
    40  	return nil
    41  }
    42  
    43  func resourcePubsubTopicRead(d *schema.ResourceData, meta interface{}) error {
    44  	config := meta.(*Config)
    45  
    46  	name := d.Id()
    47  	call := config.clientPubsub.Projects.Topics.Get(name)
    48  	_, err := call.Do()
    49  	if err != nil {
    50  		return err
    51  	}
    52  
    53  	return nil
    54  }
    55  
    56  func resourcePubsubTopicDelete(d *schema.ResourceData, meta interface{}) error {
    57  	config := meta.(*Config)
    58  
    59  	name := d.Id()
    60  	call := config.clientPubsub.Projects.Topics.Delete(name)
    61  	_, err := call.Do()
    62  	if err != nil {
    63  		return err
    64  	}
    65  
    66  	return nil
    67  }