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 }