github.com/terraform-providers/terraform-provider-ignition@v1.2.1/ignition/provider.go (about)

     1  package ignition
     2  
     3  import (
     4  	"crypto/sha256"
     5  	"encoding/hex"
     6  	"encoding/json"
     7  	"fmt"
     8  	"log"
     9  
    10  	"github.com/coreos/ignition/config/validate/report"
    11  	"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
    12  	"github.com/hashicorp/terraform-plugin-sdk/terraform"
    13  )
    14  
    15  func Provider() terraform.ResourceProvider {
    16  	return &schema.Provider{
    17  		DataSourcesMap: map[string]*schema.Resource{
    18  			"ignition_config":        dataSourceConfig(),
    19  			"ignition_disk":          dataSourceDisk(),
    20  			"ignition_raid":          dataSourceRaid(),
    21  			"ignition_filesystem":    dataSourceFilesystem(),
    22  			"ignition_file":          dataSourceFile(),
    23  			"ignition_directory":     dataSourceDirectory(),
    24  			"ignition_link":          dataSourceLink(),
    25  			"ignition_systemd_unit":  dataSourceSystemdUnit(),
    26  			"ignition_networkd_unit": dataSourceNetworkdUnit(),
    27  			"ignition_user":          dataSourceUser(),
    28  			"ignition_group":         dataSourceGroup(),
    29  		},
    30  	}
    31  }
    32  
    33  func id(input interface{}) string {
    34  	b, _ := json.Marshal(input)
    35  	return hash(string(b))
    36  }
    37  
    38  func hash(s string) string {
    39  	sha := sha256.Sum256([]byte(s))
    40  	return hex.EncodeToString(sha[:])
    41  }
    42  
    43  func getInt(d *schema.ResourceData, key string) *int {
    44  	var i *int
    45  	if value, ok := d.GetOk(key); ok {
    46  		n := value.(int)
    47  		i = &n
    48  	}
    49  
    50  	return i
    51  }
    52  
    53  func handleReport(r report.Report) error {
    54  	for _, e := range r.Entries {
    55  		debug(e.String())
    56  	}
    57  
    58  	if r.IsFatal() {
    59  		return fmt.Errorf("invalid configuration:\n%s", r.String())
    60  	}
    61  
    62  	return nil
    63  }
    64  
    65  func debug(format string, a ...interface{}) {
    66  	log.Printf("[DEBUG] %s", fmt.Sprintf(format, a...))
    67  }