diff --git a/builtin/providers/ignition/provider.go b/builtin/providers/ignition/provider.go index 71bfc8fa41..6ad832d03a 100644 --- a/builtin/providers/ignition/provider.go +++ b/builtin/providers/ignition/provider.go @@ -17,7 +17,7 @@ import ( func Provider() terraform.ResourceProvider { return &schema.Provider{ - ResourcesMap: map[string]*schema.Resource{ + DataSourcesMap: map[string]*schema.Resource{ "ignition_config": resourceConfig(), "ignition_disk": resourceDisk(), "ignition_raid": resourceRaid(), @@ -28,6 +28,44 @@ func Provider() terraform.ResourceProvider { "ignition_user": resourceUser(), "ignition_group": resourceGroup(), }, + ResourcesMap: map[string]*schema.Resource{ + "ignition_config": schema.DataSourceResourceShim( + "ignition_config", + resourceConfig(), + ), + "ignition_disk": schema.DataSourceResourceShim( + "ignition_disk", + resourceDisk(), + ), + "ignition_raid": schema.DataSourceResourceShim( + "ignition_raid", + resourceRaid(), + ), + "ignition_filesystem": schema.DataSourceResourceShim( + "ignition_filesystem", + resourceFilesystem(), + ), + "ignition_file": schema.DataSourceResourceShim( + "ignition_file", + resourceFile(), + ), + "ignition_systemd_unit": schema.DataSourceResourceShim( + "ignition_systemd_unit", + resourceSystemdUnit(), + ), + "ignition_networkd_unit": schema.DataSourceResourceShim( + "ignition_networkd_unit", + resourceNetworkdUnit(), + ), + "ignition_user": schema.DataSourceResourceShim( + "ignition_user", + resourceUser(), + ), + "ignition_group": schema.DataSourceResourceShim( + "ignition_group", + resourceGroup(), + ), + }, ConfigureFunc: func(*schema.ResourceData) (interface{}, error) { return &cache{ disks: make(map[string]*types.Disk, 0), diff --git a/builtin/providers/ignition/resource_ignition_config.go b/builtin/providers/ignition/resource_ignition_config.go index acecc07785..4df56f79cb 100644 --- a/builtin/providers/ignition/resource_ignition_config.go +++ b/builtin/providers/ignition/resource_ignition_config.go @@ -26,9 +26,6 @@ var configReferenceResource = &schema.Resource{ func resourceConfig() *schema.Resource { return &schema.Resource{ - Create: resourceIgnitionFileCreate, - Update: resourceIgnitionFileCreate, - Delete: resourceIgnitionFileDelete, Exists: resourceIgnitionFileExists, Read: resourceIgnitionFileRead, Schema: map[string]*schema.Schema{ @@ -93,7 +90,7 @@ func resourceConfig() *schema.Resource { } } -func resourceIgnitionFileCreate(d *schema.ResourceData, meta interface{}) error { +func resourceIgnitionFileRead(d *schema.ResourceData, meta interface{}) error { rendered, err := renderConfig(d, meta.(*cache)) if err != nil { return err @@ -107,11 +104,6 @@ func resourceIgnitionFileCreate(d *schema.ResourceData, meta interface{}) error return nil } -func resourceIgnitionFileDelete(d *schema.ResourceData, meta interface{}) error { - d.SetId("") - return nil -} - func resourceIgnitionFileExists(d *schema.ResourceData, meta interface{}) (bool, error) { rendered, err := renderConfig(d, meta.(*cache)) if err != nil { @@ -121,10 +113,6 @@ func resourceIgnitionFileExists(d *schema.ResourceData, meta interface{}) (bool, return hash(rendered) == d.Id(), nil } -func resourceIgnitionFileRead(d *schema.ResourceData, meta interface{}) error { - return nil -} - func renderConfig(d *schema.ResourceData, c *cache) (string, error) { i, err := buildConfig(d, c) if err != nil { diff --git a/builtin/providers/ignition/resource_ignition_config_test.go b/builtin/providers/ignition/resource_ignition_config_test.go index cd56e11096..094ca31bc6 100644 --- a/builtin/providers/ignition/resource_ignition_config_test.go +++ b/builtin/providers/ignition/resource_ignition_config_test.go @@ -12,7 +12,7 @@ import ( func TestIngnitionFileReplace(t *testing.T) { testIgnition(t, ` - resource "ignition_config" "test" { + data "ignition_config" "test" { replace { source = "foo" verification = "sha512-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" @@ -38,7 +38,7 @@ func TestIngnitionFileReplace(t *testing.T) { func TestIngnitionFileAppend(t *testing.T) { testIgnition(t, ` - resource "ignition_config" "test" { + data "ignition_config" "test" { append { source = "foo" verification = "sha512-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" @@ -95,7 +95,7 @@ var testTemplate = ` %s output "rendered" { - value = "${ignition_config.test.rendered}" + value = "${data.ignition_config.test.rendered}" } ` diff --git a/builtin/providers/ignition/resource_ignition_disk.go b/builtin/providers/ignition/resource_ignition_disk.go index 78d5de7e9b..3fa9b947a2 100644 --- a/builtin/providers/ignition/resource_ignition_disk.go +++ b/builtin/providers/ignition/resource_ignition_disk.go @@ -7,8 +7,6 @@ import ( func resourceDisk() *schema.Resource { return &schema.Resource{ - Create: resourceDiskCreate, - Delete: resourceDiskDelete, Exists: resourceDiskExists, Read: resourceDiskRead, Schema: map[string]*schema.Schema{ @@ -60,7 +58,7 @@ func resourceDisk() *schema.Resource { } } -func resourceDiskCreate(d *schema.ResourceData, meta interface{}) error { +func resourceDiskRead(d *schema.ResourceData, meta interface{}) error { id, err := buildDisk(d, meta.(*cache)) if err != nil { return err @@ -70,11 +68,6 @@ func resourceDiskCreate(d *schema.ResourceData, meta interface{}) error { return nil } -func resourceDiskDelete(d *schema.ResourceData, meta interface{}) error { - d.SetId("") - return nil -} - func resourceDiskExists(d *schema.ResourceData, meta interface{}) (bool, error) { id, err := buildDisk(d, meta.(*cache)) if err != nil { @@ -84,10 +77,6 @@ func resourceDiskExists(d *schema.ResourceData, meta interface{}) (bool, error) return id == d.Id(), nil } -func resourceDiskRead(d *schema.ResourceData, meta interface{}) error { - return nil -} - func buildDisk(d *schema.ResourceData, c *cache) (string, error) { var partitions []types.Partition for _, raw := range d.Get("partition").([]interface{}) { diff --git a/builtin/providers/ignition/resource_ignition_disk_test.go b/builtin/providers/ignition/resource_ignition_disk_test.go index c6df2227e3..847fca2252 100644 --- a/builtin/providers/ignition/resource_ignition_disk_test.go +++ b/builtin/providers/ignition/resource_ignition_disk_test.go @@ -9,7 +9,7 @@ import ( func TestIngnitionDisk(t *testing.T) { testIgnition(t, ` - resource "ignition_disk" "foo" { + data "ignition_disk" "foo" { device = "/foo" partition { label = "qux" @@ -18,10 +18,10 @@ func TestIngnitionDisk(t *testing.T) { type_guid = "01234567-89AB-CDEF-EDCB-A98765432101" } } - - resource "ignition_config" "test" { + + data "ignition_config" "test" { disks = [ - "${ignition_disk.foo.id}", + "${data.ignition_disk.foo.id}", ] } `, func(c *types.Config) error { @@ -58,3 +58,26 @@ func TestIngnitionDisk(t *testing.T) { return nil }) } + +func TestIngnitionDiskResource(t *testing.T) { + testIgnition(t, ` + resource "ignition_disk" "foo" { + device = "/foo" + partition { + label = "qux" + } + } + + data "ignition_config" "test" { + disks = [ + "${ignition_disk.foo.id}", + ] + } + `, func(c *types.Config) error { + if len(c.Storage.Disks) != 1 { + return fmt.Errorf("disks, found %d", len(c.Storage.Disks)) + } + + return nil + }) +} diff --git a/builtin/providers/ignition/resource_ignition_file.go b/builtin/providers/ignition/resource_ignition_file.go index ee70745620..a6f34f2faa 100644 --- a/builtin/providers/ignition/resource_ignition_file.go +++ b/builtin/providers/ignition/resource_ignition_file.go @@ -10,8 +10,6 @@ import ( func resourceFile() *schema.Resource { return &schema.Resource{ - Create: resourceFileCreate, - Delete: resourceFileDelete, Exists: resourceFileExists, Read: resourceFileRead, Schema: map[string]*schema.Schema{ @@ -91,7 +89,7 @@ func resourceFile() *schema.Resource { } } -func resourceFileCreate(d *schema.ResourceData, meta interface{}) error { +func resourceFileRead(d *schema.ResourceData, meta interface{}) error { id, err := buildFile(d, meta.(*cache)) if err != nil { return err @@ -101,11 +99,6 @@ func resourceFileCreate(d *schema.ResourceData, meta interface{}) error { return nil } -func resourceFileDelete(d *schema.ResourceData, meta interface{}) error { - d.SetId("") - return nil -} - func resourceFileExists(d *schema.ResourceData, meta interface{}) (bool, error) { id, err := buildFile(d, meta.(*cache)) if err != nil { @@ -115,10 +108,6 @@ func resourceFileExists(d *schema.ResourceData, meta interface{}) (bool, error) return id == d.Id(), nil } -func resourceFileRead(d *schema.ResourceData, metacontent interface{}) error { - return nil -} - func buildFile(d *schema.ResourceData, c *cache) (string, error) { _, hasContent := d.GetOk("content") _, hasSource := d.GetOk("source") diff --git a/builtin/providers/ignition/resource_ignition_file_test.go b/builtin/providers/ignition/resource_ignition_file_test.go index a3d029fdc0..811c99e658 100644 --- a/builtin/providers/ignition/resource_ignition_file_test.go +++ b/builtin/providers/ignition/resource_ignition_file_test.go @@ -9,7 +9,7 @@ import ( func TestIngnitionFile(t *testing.T) { testIgnition(t, ` - resource "ignition_file" "foo" { + data "ignition_file" "foo" { filesystem = "foo" path = "/foo" content { @@ -19,8 +19,8 @@ func TestIngnitionFile(t *testing.T) { uid = 42 gid = 84 } - - resource "ignition_file" "qux" { + + data "ignition_file" "qux" { filesystem = "qux" path = "/qux" source { @@ -30,10 +30,10 @@ func TestIngnitionFile(t *testing.T) { } } - resource "ignition_config" "test" { + data "ignition_config" "test" { files = [ - "${ignition_file.foo.id}", - "${ignition_file.qux.id}", + "${data.ignition_file.foo.id}", + "${data.ignition_file.qux.id}", ] } `, func(c *types.Config) error { diff --git a/builtin/providers/ignition/resource_ignition_filesystem.go b/builtin/providers/ignition/resource_ignition_filesystem.go index 0154d16803..4f19b15e79 100644 --- a/builtin/providers/ignition/resource_ignition_filesystem.go +++ b/builtin/providers/ignition/resource_ignition_filesystem.go @@ -9,8 +9,6 @@ import ( func resourceFilesystem() *schema.Resource { return &schema.Resource{ - Create: resourceFilesystemCreate, - Delete: resourceFilesystemDelete, Exists: resourceFilesystemExists, Read: resourceFilesystemRead, Schema: map[string]*schema.Schema{ @@ -59,7 +57,7 @@ func resourceFilesystem() *schema.Resource { } } -func resourceFilesystemCreate(d *schema.ResourceData, meta interface{}) error { +func resourceFilesystemRead(d *schema.ResourceData, meta interface{}) error { id, err := buildFilesystem(d, meta.(*cache)) if err != nil { return err @@ -69,11 +67,6 @@ func resourceFilesystemCreate(d *schema.ResourceData, meta interface{}) error { return nil } -func resourceFilesystemDelete(d *schema.ResourceData, meta interface{}) error { - d.SetId("") - return nil -} - func resourceFilesystemExists(d *schema.ResourceData, meta interface{}) (bool, error) { id, err := buildFilesystem(d, meta.(*cache)) if err != nil { @@ -83,10 +76,6 @@ func resourceFilesystemExists(d *schema.ResourceData, meta interface{}) (bool, e return id == d.Id(), nil } -func resourceFilesystemRead(d *schema.ResourceData, meta interface{}) error { - return nil -} - func buildFilesystem(d *schema.ResourceData, c *cache) (string, error) { var mount *types.FilesystemMount if _, ok := d.GetOk("mount"); ok { diff --git a/builtin/providers/ignition/resource_ignition_filesystem_test.go b/builtin/providers/ignition/resource_ignition_filesystem_test.go index d8e7aca049..bd3926d4de 100644 --- a/builtin/providers/ignition/resource_ignition_filesystem_test.go +++ b/builtin/providers/ignition/resource_ignition_filesystem_test.go @@ -9,12 +9,12 @@ import ( func TestIngnitionFilesystem(t *testing.T) { testIgnition(t, ` - resource "ignition_filesystem" "foo" { + data "ignition_filesystem" "foo" { name = "foo" path = "/foo" } - resource "ignition_filesystem" "qux" { + data "ignition_filesystem" "qux" { name = "qux" mount { device = "/qux" @@ -22,7 +22,7 @@ func TestIngnitionFilesystem(t *testing.T) { } } - resource "ignition_filesystem" "bar" { + data "ignition_filesystem" "bar" { name = "bar" mount { device = "/bar" @@ -32,11 +32,11 @@ func TestIngnitionFilesystem(t *testing.T) { } } - resource "ignition_config" "test" { + data "ignition_config" "test" { filesystems = [ - "${ignition_filesystem.foo.id}", - "${ignition_filesystem.qux.id}", - "${ignition_filesystem.bar.id}", + "${data.ignition_filesystem.foo.id}", + "${data.ignition_filesystem.qux.id}", + "${data.ignition_filesystem.bar.id}", ] } `, func(c *types.Config) error { diff --git a/builtin/providers/ignition/resource_ignition_group.go b/builtin/providers/ignition/resource_ignition_group.go index 62277733b9..29ebeecd9a 100644 --- a/builtin/providers/ignition/resource_ignition_group.go +++ b/builtin/providers/ignition/resource_ignition_group.go @@ -7,8 +7,6 @@ import ( func resourceGroup() *schema.Resource { return &schema.Resource{ - Create: resourceGroupCreate, - Delete: resourceGroupDelete, Exists: resourceGroupExists, Read: resourceGroupRead, Schema: map[string]*schema.Schema{ @@ -31,7 +29,7 @@ func resourceGroup() *schema.Resource { } } -func resourceGroupCreate(d *schema.ResourceData, meta interface{}) error { +func resourceGroupRead(d *schema.ResourceData, meta interface{}) error { id, err := buildGroup(d, meta.(*cache)) if err != nil { return err @@ -41,11 +39,6 @@ func resourceGroupCreate(d *schema.ResourceData, meta interface{}) error { return nil } -func resourceGroupDelete(d *schema.ResourceData, meta interface{}) error { - d.SetId("") - return nil -} - func resourceGroupExists(d *schema.ResourceData, meta interface{}) (bool, error) { id, err := buildGroup(d, meta.(*cache)) if err != nil { @@ -55,10 +48,6 @@ func resourceGroupExists(d *schema.ResourceData, meta interface{}) (bool, error) return id == d.Id(), nil } -func resourceGroupRead(d *schema.ResourceData, meta interface{}) error { - return nil -} - func buildGroup(d *schema.ResourceData, c *cache) (string, error) { return c.addGroup(&types.Group{ Name: d.Get("name").(string), diff --git a/builtin/providers/ignition/resource_ignition_group_test.go b/builtin/providers/ignition/resource_ignition_group_test.go index 56a230463d..2eb1abc6b4 100644 --- a/builtin/providers/ignition/resource_ignition_group_test.go +++ b/builtin/providers/ignition/resource_ignition_group_test.go @@ -9,20 +9,20 @@ import ( func TestIngnitionGroup(t *testing.T) { testIgnition(t, ` - resource "ignition_group" "foo" { + data "ignition_group" "foo" { name = "foo" password_hash = "password" gid = 42 } - resource "ignition_group" "qux" { + data "ignition_group" "qux" { name = "qux" - } - - resource "ignition_config" "test" { + } + + data "ignition_config" "test" { groups = [ - "${ignition_group.foo.id}", - "${ignition_group.qux.id}", + "${data.ignition_group.foo.id}", + "${data.ignition_group.qux.id}", ] } `, func(c *types.Config) error { diff --git a/builtin/providers/ignition/resource_ignition_networkd_unit.go b/builtin/providers/ignition/resource_ignition_networkd_unit.go index 2ce2a7d286..e5d822570a 100644 --- a/builtin/providers/ignition/resource_ignition_networkd_unit.go +++ b/builtin/providers/ignition/resource_ignition_networkd_unit.go @@ -7,8 +7,6 @@ import ( func resourceNetworkdUnit() *schema.Resource { return &schema.Resource{ - Create: resourceNetworkdUnitCreate, - Delete: resourceNetworkdUnitDelete, Exists: resourceNetworkdUnitExists, Read: resourceNetworkdUnitRead, Schema: map[string]*schema.Schema{ @@ -26,7 +24,7 @@ func resourceNetworkdUnit() *schema.Resource { } } -func resourceNetworkdUnitCreate(d *schema.ResourceData, meta interface{}) error { +func resourceNetworkdUnitRead(d *schema.ResourceData, meta interface{}) error { id, err := buildNetworkdUnit(d, meta.(*cache)) if err != nil { return err @@ -50,10 +48,6 @@ func resourceNetworkdUnitExists(d *schema.ResourceData, meta interface{}) (bool, return id == d.Id(), nil } -func resourceNetworkdUnitRead(d *schema.ResourceData, meta interface{}) error { - return nil -} - func buildNetworkdUnit(d *schema.ResourceData, c *cache) (string, error) { if err := validateUnitContent(d.Get("content").(string)); err != nil { return "", err diff --git a/builtin/providers/ignition/resource_ignition_networkd_unit_test.go b/builtin/providers/ignition/resource_ignition_networkd_unit_test.go index ad2a1508fa..f6f460f868 100644 --- a/builtin/providers/ignition/resource_ignition_networkd_unit_test.go +++ b/builtin/providers/ignition/resource_ignition_networkd_unit_test.go @@ -9,14 +9,14 @@ import ( func TestIngnitionNetworkdUnit(t *testing.T) { testIgnition(t, ` - resource "ignition_networkd_unit" "foo" { + data "ignition_networkd_unit" "foo" { name = "foo.link" content = "[Match]\nName=eth0\n\n[Network]\nAddress=10.0.1.7\n" } - resource "ignition_config" "test" { + data "ignition_config" "test" { networkd = [ - "${ignition_networkd_unit.foo.id}", + "${data.ignition_networkd_unit.foo.id}", ] } `, func(c *types.Config) error { diff --git a/builtin/providers/ignition/resource_ignition_raid.go b/builtin/providers/ignition/resource_ignition_raid.go index 7eccc716d8..1c8b732ed9 100644 --- a/builtin/providers/ignition/resource_ignition_raid.go +++ b/builtin/providers/ignition/resource_ignition_raid.go @@ -7,8 +7,6 @@ import ( func resourceRaid() *schema.Resource { return &schema.Resource{ - Create: resourceRaidCreate, - Delete: resourceRaidDelete, Exists: resourceRaidExists, Read: resourceRaidRead, Schema: map[string]*schema.Schema{ @@ -37,7 +35,7 @@ func resourceRaid() *schema.Resource { } } -func resourceRaidCreate(d *schema.ResourceData, meta interface{}) error { +func resourceRaidRead(d *schema.ResourceData, meta interface{}) error { id, err := buildRaid(d, meta.(*cache)) if err != nil { return err @@ -47,11 +45,6 @@ func resourceRaidCreate(d *schema.ResourceData, meta interface{}) error { return nil } -func resourceRaidDelete(d *schema.ResourceData, meta interface{}) error { - d.SetId("") - return nil -} - func resourceRaidExists(d *schema.ResourceData, meta interface{}) (bool, error) { id, err := buildRaid(d, meta.(*cache)) if err != nil { @@ -61,10 +54,6 @@ func resourceRaidExists(d *schema.ResourceData, meta interface{}) (bool, error) return id == d.Id(), nil } -func resourceRaidRead(d *schema.ResourceData, meta interface{}) error { - return nil -} - func buildRaid(d *schema.ResourceData, c *cache) (string, error) { var devices []types.Path for _, value := range d.Get("devices").([]interface{}) { diff --git a/builtin/providers/ignition/resource_ignition_raid_test.go b/builtin/providers/ignition/resource_ignition_raid_test.go index 46e74e5e86..67ff86a3e4 100644 --- a/builtin/providers/ignition/resource_ignition_raid_test.go +++ b/builtin/providers/ignition/resource_ignition_raid_test.go @@ -9,16 +9,16 @@ import ( func TestIngnitionRaid(t *testing.T) { testIgnition(t, ` - resource "ignition_raid" "foo" { + data "ignition_raid" "foo" { name = "foo" level = "raid10" devices = ["/foo"] spares = 42 } - - resource "ignition_config" "test" { + + data "ignition_config" "test" { arrays = [ - "${ignition_raid.foo.id}", + "${data.ignition_raid.foo.id}", ] } `, func(c *types.Config) error { diff --git a/builtin/providers/ignition/resource_ignition_systemd_unit.go b/builtin/providers/ignition/resource_ignition_systemd_unit.go index c763a5ad2a..2113800242 100644 --- a/builtin/providers/ignition/resource_ignition_systemd_unit.go +++ b/builtin/providers/ignition/resource_ignition_systemd_unit.go @@ -7,8 +7,6 @@ import ( func resourceSystemdUnit() *schema.Resource { return &schema.Resource{ - Create: resourceSystemdUnitCreate, - Delete: resourceSystemdUnitDelete, Exists: resourceSystemdUnitExists, Read: resourceSystemdUnitRead, Schema: map[string]*schema.Schema{ @@ -56,7 +54,7 @@ func resourceSystemdUnit() *schema.Resource { } } -func resourceSystemdUnitCreate(d *schema.ResourceData, meta interface{}) error { +func resourceSystemdUnitRead(d *schema.ResourceData, meta interface{}) error { id, err := buildSystemdUnit(d, meta.(*cache)) if err != nil { return err @@ -66,11 +64,6 @@ func resourceSystemdUnitCreate(d *schema.ResourceData, meta interface{}) error { return nil } -func resourceSystemdUnitDelete(d *schema.ResourceData, meta interface{}) error { - d.SetId("") - return nil -} - func resourceSystemdUnitExists(d *schema.ResourceData, meta interface{}) (bool, error) { id, err := buildSystemdUnit(d, meta.(*cache)) if err != nil { @@ -80,10 +73,6 @@ func resourceSystemdUnitExists(d *schema.ResourceData, meta interface{}) (bool, return id == d.Id(), nil } -func resourceSystemdUnitRead(d *schema.ResourceData, meta interface{}) error { - return nil -} - func buildSystemdUnit(d *schema.ResourceData, c *cache) (string, error) { var dropins []types.SystemdUnitDropIn for _, raw := range d.Get("dropin").([]interface{}) { diff --git a/builtin/providers/ignition/resource_ignition_systemd_unit_test.go b/builtin/providers/ignition/resource_ignition_systemd_unit_test.go index 6e604919f9..c1568ac111 100644 --- a/builtin/providers/ignition/resource_ignition_systemd_unit_test.go +++ b/builtin/providers/ignition/resource_ignition_systemd_unit_test.go @@ -9,7 +9,7 @@ import ( func TestIngnitionSystemdUnit(t *testing.T) { testIgnition(t, ` - resource "ignition_systemd_unit" "foo" { + data "ignition_systemd_unit" "foo" { name = "foo.service" content = "[Match]\nName=eth0\n\n[Network]\nAddress=10.0.1.7\n" enable = false @@ -21,9 +21,9 @@ func TestIngnitionSystemdUnit(t *testing.T) { } } - resource "ignition_config" "test" { + data "ignition_config" "test" { systemd = [ - "${ignition_systemd_unit.foo.id}", + "${data.ignition_systemd_unit.foo.id}", ] } `, func(c *types.Config) error { @@ -59,7 +59,7 @@ func TestIngnitionSystemdUnit(t *testing.T) { func TestIngnitionSystemdUnitEmptyContentWithDropIn(t *testing.T) { testIgnition(t, ` - resource "ignition_systemd_unit" "foo" { + data "ignition_systemd_unit" "foo" { name = "foo.service" dropin { name = "foo.conf" @@ -67,9 +67,9 @@ func TestIngnitionSystemdUnitEmptyContentWithDropIn(t *testing.T) { } } - resource "ignition_config" "test" { + data "ignition_config" "test" { systemd = [ - "${ignition_systemd_unit.foo.id}", + "${data.ignition_systemd_unit.foo.id}", ] } `, func(c *types.Config) error { @@ -98,14 +98,14 @@ func TestIngnitionSystemdUnitEmptyContentWithDropIn(t *testing.T) { // #11325 func TestIgnitionSystemdUnit_emptyContent(t *testing.T) { testIgnition(t, ` - resource "ignition_systemd_unit" "foo" { + data "ignition_systemd_unit" "foo" { name = "foo.service" - enable = true + enable = true } - resource "ignition_config" "test" { + data "ignition_config" "test" { systemd = [ - "${ignition_systemd_unit.foo.id}", + "${data.ignition_systemd_unit.foo.id}", ] } `, func(c *types.Config) error { diff --git a/builtin/providers/ignition/resource_ignition_user.go b/builtin/providers/ignition/resource_ignition_user.go index f6ce9f5bcf..dd4ccc1531 100644 --- a/builtin/providers/ignition/resource_ignition_user.go +++ b/builtin/providers/ignition/resource_ignition_user.go @@ -9,8 +9,6 @@ import ( func resourceUser() *schema.Resource { return &schema.Resource{ - Create: resourceUserCreate, - Delete: resourceUserDelete, Exists: resourceUserExists, Read: resourceUserRead, Schema: map[string]*schema.Schema{ @@ -80,7 +78,7 @@ func resourceUser() *schema.Resource { } } -func resourceUserCreate(d *schema.ResourceData, meta interface{}) error { +func resourceUserRead(d *schema.ResourceData, meta interface{}) error { id, err := buildUser(d, meta.(*cache)) if err != nil { return err @@ -90,11 +88,6 @@ func resourceUserCreate(d *schema.ResourceData, meta interface{}) error { return nil } -func resourceUserDelete(d *schema.ResourceData, meta interface{}) error { - d.SetId("") - return nil -} - func resourceUserExists(d *schema.ResourceData, meta interface{}) (bool, error) { id, err := buildUser(d, meta.(*cache)) if err != nil { @@ -104,10 +97,6 @@ func resourceUserExists(d *schema.ResourceData, meta interface{}) (bool, error) return id == d.Id(), nil } -func resourceUserRead(d *schema.ResourceData, meta interface{}) error { - return nil -} - func buildUser(d *schema.ResourceData, c *cache) (string, error) { uc := types.UserCreate{ Uid: getUInt(d, "uid"), diff --git a/builtin/providers/ignition/resource_ignition_user_test.go b/builtin/providers/ignition/resource_ignition_user_test.go index b130b79d20..35f662d18b 100644 --- a/builtin/providers/ignition/resource_ignition_user_test.go +++ b/builtin/providers/ignition/resource_ignition_user_test.go @@ -9,7 +9,7 @@ import ( func TestIngnitionUser(t *testing.T) { testIgnition(t, ` - resource "ignition_user" "foo" { + data "ignition_user" "foo" { name = "foo" password_hash = "password" ssh_authorized_keys = ["keys"] @@ -24,14 +24,14 @@ func TestIngnitionUser(t *testing.T) { shell = "shell" } - resource "ignition_user" "qux" { + data "ignition_user" "qux" { name = "qux" } - resource "ignition_config" "test" { + data "ignition_config" "test" { users = [ - "${ignition_user.foo.id}", - "${ignition_user.qux.id}", + "${data.ignition_user.foo.id}", + "${data.ignition_user.qux.id}", ] } `, func(c *types.Config) error { diff --git a/website/source/docs/providers/ignition/r/config.html.md b/website/source/docs/providers/ignition/d/config.html.md similarity index 92% rename from website/source/docs/providers/ignition/r/config.html.md rename to website/source/docs/providers/ignition/d/config.html.md index 7197f9818e..16f5c7c44f 100644 --- a/website/source/docs/providers/ignition/r/config.html.md +++ b/website/source/docs/providers/ignition/d/config.html.md @@ -1,7 +1,7 @@ --- layout: "ignition" page_title: "Ignition: ignition_config" -sidebar_current: "docs-ignition-resource-config" +sidebar_current: "docs-ignition-datasource-config" description: |- Renders an ignition configuration as JSON --- @@ -13,7 +13,7 @@ Renders an ignition configuration as JSON. It contains all the disks, partition ## Example Usage ``` -resource "ignition_config" "example" { +data "ignition_config" "example" { systemd = [ "${ignition_systemd_unit.example.id}", ] @@ -46,7 +46,7 @@ The following arguments are supported: The `append` and `replace` blocks supports: - + * `source` - (Required) The URL of the config. Supported schemes are http. Note: When using http, it is advisable to use the verification option to ensure the contents haven’t been modified. * `verification` - (Optional) The hash of the config, in the form _\-\_ where type is sha512. diff --git a/website/source/docs/providers/ignition/r/disk.html.md b/website/source/docs/providers/ignition/d/disk.html.md similarity index 95% rename from website/source/docs/providers/ignition/r/disk.html.md rename to website/source/docs/providers/ignition/d/disk.html.md index 8bee094c82..2fc64ffc2e 100644 --- a/website/source/docs/providers/ignition/r/disk.html.md +++ b/website/source/docs/providers/ignition/d/disk.html.md @@ -1,7 +1,7 @@ --- layout: "ignition" page_title: "Ignition: ignition_disk" -sidebar_current: "docs-ignition-resource-disk" +sidebar_current: "docs-ignition-datasource-disk" description: |- Describes the desired state of a system’s disk. --- @@ -13,7 +13,7 @@ Describes the desired state of a system’s disk. ## Example Usage ``` -resource "ignition_disk" "foo" { +data "ignition_disk" "foo" { device = "/dev/sda" partition { start = 2048 diff --git a/website/source/docs/providers/ignition/r/file.html.md b/website/source/docs/providers/ignition/d/file.html.md similarity index 94% rename from website/source/docs/providers/ignition/r/file.html.md rename to website/source/docs/providers/ignition/d/file.html.md index dbcbc0a887..9628730f2e 100644 --- a/website/source/docs/providers/ignition/r/file.html.md +++ b/website/source/docs/providers/ignition/d/file.html.md @@ -1,7 +1,7 @@ --- layout: "ignition" page_title: "Ignition: ignition_file" -sidebar_current: "docs-ignition-resource-file" +sidebar_current: "docs-ignition-datasource-file" description: |- Describes a file to be written in a particular filesystem. --- @@ -16,7 +16,7 @@ File with inline content: ``` -resource "ignition_file" "hello" { +data "ignition_file" "hello" { filesystem = "foo" path = "/hello.txt" content { @@ -28,7 +28,7 @@ resource "ignition_file" "hello" { File with remote content: ``` -resource "ignition_file" "hello" { +data "ignition_file" "hello" { filesystem = "qux" path = "/hello.txt" source { diff --git a/website/source/docs/providers/ignition/r/filesystem.html.md b/website/source/docs/providers/ignition/d/filesystem.html.md similarity index 91% rename from website/source/docs/providers/ignition/r/filesystem.html.md rename to website/source/docs/providers/ignition/d/filesystem.html.md index 01af0c77fa..25c2b4fd48 100644 --- a/website/source/docs/providers/ignition/r/filesystem.html.md +++ b/website/source/docs/providers/ignition/d/filesystem.html.md @@ -1,19 +1,19 @@ --- layout: "ignition" page_title: "Ignition: ignition_filesystem" -sidebar_current: "docs-ignition-resource-filesystem" +sidebar_current: "docs-ignition-datasource-filesystem" description: |- Describes the desired state of a system’s filesystem. --- # ignition\_filesystem -Describes the desired state of a the system’s filesystems to be configured and/or used with the _ignition\_file_ resource. +Describes the desired state of a the system’s filesystems to be configured and/or used with the _ignition\_file_ resource. ## Example Usage ``` -resource "ignition_filesystem" "foo" { +data "ignition_filesystem" "foo" { name = "root" mount { device = "/dev/disk/by-label/ROOT" diff --git a/website/source/docs/providers/ignition/r/group.html.md b/website/source/docs/providers/ignition/d/group.html.md similarity index 88% rename from website/source/docs/providers/ignition/r/group.html.md rename to website/source/docs/providers/ignition/d/group.html.md index 6238c2a39d..ba360507aa 100644 --- a/website/source/docs/providers/ignition/r/group.html.md +++ b/website/source/docs/providers/ignition/d/group.html.md @@ -1,7 +1,7 @@ --- layout: "ignition" page_title: "Ignition: ignition_group" -sidebar_current: "docs-ignition-resource-group" +sidebar_current: "docs-ignition-datasource-group" description: |- Describes the desired group additions to the passwd database. --- @@ -13,7 +13,7 @@ Describes the desired group additions to the passwd database. ## Example Usage ``` -resource "ignition_group" "foo" { +data "ignition_group" "foo" { name = "foo" } ``` diff --git a/website/source/docs/providers/ignition/r/networkd_unit.html.md b/website/source/docs/providers/ignition/d/networkd_unit.html.md similarity index 87% rename from website/source/docs/providers/ignition/r/networkd_unit.html.md rename to website/source/docs/providers/ignition/d/networkd_unit.html.md index 63858a15a9..a60b5e67cf 100644 --- a/website/source/docs/providers/ignition/r/networkd_unit.html.md +++ b/website/source/docs/providers/ignition/d/networkd_unit.html.md @@ -1,7 +1,7 @@ --- layout: "ignition" page_title: "Ignition: ignition_networkd_unit" -sidebar_current: "docs-ignition-resource-networkd-unit" +sidebar_current: "docs-ignition-datasource-networkd-unit" description: |- Describes the desired state of the networkd units. --- @@ -13,7 +13,7 @@ Describes the desired state of the networkd units. ## Example Usage ``` -resource "ignition_networkd_unit" "example" { +data "ignition_networkd_unit" "example" { name = "00-eth0.network" content = "[Match]\nName=eth0\n\n[Network]\nAddress=10.0.1.7" } diff --git a/website/source/docs/providers/ignition/r/raid.html.md b/website/source/docs/providers/ignition/d/raid.html.md similarity index 88% rename from website/source/docs/providers/ignition/r/raid.html.md rename to website/source/docs/providers/ignition/d/raid.html.md index e9869b4d00..4cb32da0d2 100644 --- a/website/source/docs/providers/ignition/r/raid.html.md +++ b/website/source/docs/providers/ignition/d/raid.html.md @@ -1,7 +1,7 @@ --- layout: "ignition" page_title: "Ignition: ignition_raid" -sidebar_current: "docs-ignition-resource-raid" +sidebar_current: "docs-ignition-datasource-raid" description: |- Describes the desired state of the system’s RAID. --- @@ -13,7 +13,7 @@ Describes the desired state of the system’s RAID. ## Example Usage ``` -resource "ignition_raid" "md" { +data "ignition_raid" "md" { name = "data" level = "stripe" devices = [ @@ -22,7 +22,7 @@ resource "ignition_raid" "md" { ] } -resource "ignition_disk" "disk1" { +data "ignition_disk" "disk1" { device = "/dev/sdb" wipe_table = true partition { @@ -33,7 +33,7 @@ resource "ignition_disk" "disk1" { } } -resource "ignition_disk" "disk2" { +data "ignition_disk" "disk2" { device = "/dev/sdc" wipe_table = true partition { diff --git a/website/source/docs/providers/ignition/r/systemd_unit.html.md b/website/source/docs/providers/ignition/d/systemd_unit.html.md similarity index 93% rename from website/source/docs/providers/ignition/r/systemd_unit.html.md rename to website/source/docs/providers/ignition/d/systemd_unit.html.md index 9ac6a86fa2..58502caac8 100644 --- a/website/source/docs/providers/ignition/r/systemd_unit.html.md +++ b/website/source/docs/providers/ignition/d/systemd_unit.html.md @@ -1,7 +1,7 @@ --- layout: "ignition" page_title: "Ignition: ignition_systemd_unit" -sidebar_current: "docs-ignition-resource-systemd-unit" +sidebar_current: "docs-ignition-datasource-systemd-unit" description: |- Describes the desired state of the systemd units. --- @@ -13,7 +13,7 @@ Describes the desired state of the systemd units. ## Example Usage ``` -resource "ignition_systemd_unit" "example" { +data "ignition_systemd_unit" "example" { name = "example.service" content = "[Service]\nType=oneshot\nExecStart=/usr/bin/echo Hello World\n\n[Install]\nWantedBy=multi-user.target" } diff --git a/website/source/docs/providers/ignition/r/user.html.md b/website/source/docs/providers/ignition/d/user.html.md similarity index 94% rename from website/source/docs/providers/ignition/r/user.html.md rename to website/source/docs/providers/ignition/d/user.html.md index d922ab77ae..5c0ec8f8d4 100644 --- a/website/source/docs/providers/ignition/r/user.html.md +++ b/website/source/docs/providers/ignition/d/user.html.md @@ -1,7 +1,7 @@ --- layout: "ignition" page_title: "Ignition: ignition_user" -sidebar_current: "docs-ignition-resource-user" +sidebar_current: "docs-ignition-datasource-user" description: |- Describes the desired user additions to the passwd database. --- @@ -13,7 +13,7 @@ Describes the desired user additions to the passwd database. ## Example Usage ``` -resource "ignition_user" "foo" { +data "ignition_user" "foo" { name = "foo" home_dir = "/home/foo/" shell = "/bin/bash" diff --git a/website/source/docs/providers/ignition/index.html.markdown b/website/source/docs/providers/ignition/index.html.markdown index 67e5816c20..5b26fc075a 100644 --- a/website/source/docs/providers/ignition/index.html.markdown +++ b/website/source/docs/providers/ignition/index.html.markdown @@ -19,16 +19,16 @@ Use the navigation to the left to read about the available resources. This config will write a single service unit (shown below) with the contents of an example service. This unit will be enabled as a dependency of multi-user.target and therefore start on boot ``` -# Systemd unit resource containing the unit definition -resource "ignition_systemd_unit" "example" { - name = "example.service" +# Systemd unit data resource containing the unit definition +data "ignition_systemd_unit" "example" { + name = "example.service" content = "[Service]\nType=oneshot\nExecStart=/usr/bin/echo Hello World\n\n[Install]\nWantedBy=multi-user.target" } -# Ingnition config include the previous defined systemd unit resource -resource "ignition_config" "example" { +# Ingnition config include the previous defined systemd unit data resource +data "ignition_config" "example" { systemd = [ - "${ignition_systemd_unit.example.id}", + "${data.ignition_systemd_unit.example.id}", ] } @@ -36,6 +36,6 @@ resource "ignition_config" "example" { resource "aws_instance" "web" { # ... - user_data = "${ignition_config.example.rendered}" + user_data = "${data.ignition_config.example.rendered}" } ``` diff --git a/website/source/layouts/ignition.erb b/website/source/layouts/ignition.erb index a77da3a91d..1de3724afc 100644 --- a/website/source/layouts/ignition.erb +++ b/website/source/layouts/ignition.erb @@ -10,18 +10,18 @@ Ignition Provider - > - Resources + > + Data Sources