func resource_dnsimple_record_create( s *terraform.ResourceState, d *terraform.ResourceDiff, meta interface{}) (*terraform.ResourceState, error) { p := meta.(*ResourceProvider) client := p.client // Merge the diff into the state so that we have all the attributes // properly. rs := s.MergeDiff(d) var err error newRecord := dnsimple.ChangeRecord{ Name: rs.Attributes["name"], Value: rs.Attributes["value"], Type: rs.Attributes["type"], } if attr, ok := rs.Attributes["ttl"]; ok { newRecord.Ttl = attr } log.Printf("[DEBUG] record create configuration: %#v", newRecord) recId, err := client.CreateRecord(rs.Attributes["domain"], &newRecord) if err != nil { return nil, fmt.Errorf("Failed to create record: %s", err) } rs.ID = recId log.Printf("[INFO] record ID: %s", rs.ID) record, err := resource_dnsimple_record_retrieve(rs.Attributes["domain"], rs.ID, client) if err != nil { return nil, fmt.Errorf("Couldn't find record: %s", err) } return resource_dnsimple_record_update_state(rs, record) }
func resource_dnsimple_record_update( s *terraform.ResourceState, d *terraform.ResourceDiff, meta interface{}) (*terraform.ResourceState, error) { p := meta.(*ResourceProvider) client := p.client rs := s.MergeDiff(d) updateRecord := dnsimple.ChangeRecord{} if attr, ok := d.Attributes["name"]; ok { updateRecord.Name = attr.New } if attr, ok := d.Attributes["value"]; ok { updateRecord.Value = attr.New } if attr, ok := d.Attributes["type"]; ok { updateRecord.Type = attr.New } if attr, ok := d.Attributes["ttl"]; ok { updateRecord.Ttl = attr.New } log.Printf("[DEBUG] record update configuration: %#v", updateRecord) _, err := client.UpdateRecord(rs.Attributes["domain"], rs.ID, &updateRecord) if err != nil { return rs, fmt.Errorf("Failed to update record: %s", err) } record, err := resource_dnsimple_record_retrieve(rs.Attributes["domain"], rs.ID, client) if err != nil { return rs, fmt.Errorf("Couldn't find record: %s", err) } return resource_dnsimple_record_update_state(rs, record) }