Skip to content

Commit b58709a

Browse files
mcuadrosstack72
authored andcommitted
provider/ignition: migration from resources to data resources (hashicorp#11851)
* provider/ignition: migration from resources to data resources * website: provider/ignition documention updated to data resources * provider/ignition: backwards compatibility support for old resources
1 parent 22f69b1 commit b58709a

30 files changed

Lines changed: 161 additions & 195 deletions

‎builtin/providers/ignition/provider.go‎

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717

1818
func Provider() terraform.ResourceProvider {
1919
return &schema.Provider{
20-
ResourcesMap: map[string]*schema.Resource{
20+
DataSourcesMap: map[string]*schema.Resource{
2121
"ignition_config": resourceConfig(),
2222
"ignition_disk": resourceDisk(),
2323
"ignition_raid": resourceRaid(),
@@ -28,6 +28,44 @@ func Provider() terraform.ResourceProvider {
2828
"ignition_user": resourceUser(),
2929
"ignition_group": resourceGroup(),
3030
},
31+
ResourcesMap: map[string]*schema.Resource{
32+
"ignition_config": schema.DataSourceResourceShim(
33+
"ignition_config",
34+
resourceConfig(),
35+
),
36+
"ignition_disk": schema.DataSourceResourceShim(
37+
"ignition_disk",
38+
resourceDisk(),
39+
),
40+
"ignition_raid": schema.DataSourceResourceShim(
41+
"ignition_raid",
42+
resourceRaid(),
43+
),
44+
"ignition_filesystem": schema.DataSourceResourceShim(
45+
"ignition_filesystem",
46+
resourceFilesystem(),
47+
),
48+
"ignition_file": schema.DataSourceResourceShim(
49+
"ignition_file",
50+
resourceFile(),
51+
),
52+
"ignition_systemd_unit": schema.DataSourceResourceShim(
53+
"ignition_systemd_unit",
54+
resourceSystemdUnit(),
55+
),
56+
"ignition_networkd_unit": schema.DataSourceResourceShim(
57+
"ignition_networkd_unit",
58+
resourceNetworkdUnit(),
59+
),
60+
"ignition_user": schema.DataSourceResourceShim(
61+
"ignition_user",
62+
resourceUser(),
63+
),
64+
"ignition_group": schema.DataSourceResourceShim(
65+
"ignition_group",
66+
resourceGroup(),
67+
),
68+
},
3169
ConfigureFunc: func(*schema.ResourceData) (interface{}, error) {
3270
return &cache{
3371
disks: make(map[string]*types.Disk, 0),

‎builtin/providers/ignition/resource_ignition_config.go‎

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@ var configReferenceResource = &schema.Resource{
2626

2727
func resourceConfig() *schema.Resource {
2828
return &schema.Resource{
29-
Create: resourceIgnitionFileCreate,
30-
Update: resourceIgnitionFileCreate,
31-
Delete: resourceIgnitionFileDelete,
3229
Exists: resourceIgnitionFileExists,
3330
Read: resourceIgnitionFileRead,
3431
Schema: map[string]*schema.Schema{
@@ -93,7 +90,7 @@ func resourceConfig() *schema.Resource {
9390
}
9491
}
9592

96-
func resourceIgnitionFileCreate(d *schema.ResourceData, meta interface{}) error {
93+
func resourceIgnitionFileRead(d *schema.ResourceData, meta interface{}) error {
9794
rendered, err := renderConfig(d, meta.(*cache))
9895
if err != nil {
9996
return err
@@ -107,11 +104,6 @@ func resourceIgnitionFileCreate(d *schema.ResourceData, meta interface{}) error
107104
return nil
108105
}
109106

110-
func resourceIgnitionFileDelete(d *schema.ResourceData, meta interface{}) error {
111-
d.SetId("")
112-
return nil
113-
}
114-
115107
func resourceIgnitionFileExists(d *schema.ResourceData, meta interface{}) (bool, error) {
116108
rendered, err := renderConfig(d, meta.(*cache))
117109
if err != nil {
@@ -121,10 +113,6 @@ func resourceIgnitionFileExists(d *schema.ResourceData, meta interface{}) (bool,
121113
return hash(rendered) == d.Id(), nil
122114
}
123115

124-
func resourceIgnitionFileRead(d *schema.ResourceData, meta interface{}) error {
125-
return nil
126-
}
127-
128116
func renderConfig(d *schema.ResourceData, c *cache) (string, error) {
129117
i, err := buildConfig(d, c)
130118
if err != nil {

‎builtin/providers/ignition/resource_ignition_config_test.go‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212

1313
func TestIngnitionFileReplace(t *testing.T) {
1414
testIgnition(t, `
15-
resource "ignition_config" "test" {
15+
data "ignition_config" "test" {
1616
replace {
1717
source = "foo"
1818
verification = "sha512-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
@@ -38,7 +38,7 @@ func TestIngnitionFileReplace(t *testing.T) {
3838

3939
func TestIngnitionFileAppend(t *testing.T) {
4040
testIgnition(t, `
41-
resource "ignition_config" "test" {
41+
data "ignition_config" "test" {
4242
append {
4343
source = "foo"
4444
verification = "sha512-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
@@ -95,7 +95,7 @@ var testTemplate = `
9595
%s
9696
9797
output "rendered" {
98-
value = "${ignition_config.test.rendered}"
98+
value = "${data.ignition_config.test.rendered}"
9999
}
100100
101101
`

‎builtin/providers/ignition/resource_ignition_disk.go‎

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import (
77

88
func resourceDisk() *schema.Resource {
99
return &schema.Resource{
10-
Create: resourceDiskCreate,
11-
Delete: resourceDiskDelete,
1210
Exists: resourceDiskExists,
1311
Read: resourceDiskRead,
1412
Schema: map[string]*schema.Schema{
@@ -60,7 +58,7 @@ func resourceDisk() *schema.Resource {
6058
}
6159
}
6260

63-
func resourceDiskCreate(d *schema.ResourceData, meta interface{}) error {
61+
func resourceDiskRead(d *schema.ResourceData, meta interface{}) error {
6462
id, err := buildDisk(d, meta.(*cache))
6563
if err != nil {
6664
return err
@@ -70,11 +68,6 @@ func resourceDiskCreate(d *schema.ResourceData, meta interface{}) error {
7068
return nil
7169
}
7270

73-
func resourceDiskDelete(d *schema.ResourceData, meta interface{}) error {
74-
d.SetId("")
75-
return nil
76-
}
77-
7871
func resourceDiskExists(d *schema.ResourceData, meta interface{}) (bool, error) {
7972
id, err := buildDisk(d, meta.(*cache))
8073
if err != nil {
@@ -84,10 +77,6 @@ func resourceDiskExists(d *schema.ResourceData, meta interface{}) (bool, error)
8477
return id == d.Id(), nil
8578
}
8679

87-
func resourceDiskRead(d *schema.ResourceData, meta interface{}) error {
88-
return nil
89-
}
90-
9180
func buildDisk(d *schema.ResourceData, c *cache) (string, error) {
9281
var partitions []types.Partition
9382
for _, raw := range d.Get("partition").([]interface{}) {

‎builtin/providers/ignition/resource_ignition_disk_test.go‎

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99

1010
func TestIngnitionDisk(t *testing.T) {
1111
testIgnition(t, `
12-
resource "ignition_disk" "foo" {
12+
data "ignition_disk" "foo" {
1313
device = "/foo"
1414
partition {
1515
label = "qux"
@@ -18,10 +18,10 @@ func TestIngnitionDisk(t *testing.T) {
1818
type_guid = "01234567-89AB-CDEF-EDCB-A98765432101"
1919
}
2020
}
21-
22-
resource "ignition_config" "test" {
21+
22+
data "ignition_config" "test" {
2323
disks = [
24-
"${ignition_disk.foo.id}",
24+
"${data.ignition_disk.foo.id}",
2525
]
2626
}
2727
`, func(c *types.Config) error {
@@ -58,3 +58,26 @@ func TestIngnitionDisk(t *testing.T) {
5858
return nil
5959
})
6060
}
61+
62+
func TestIngnitionDiskResource(t *testing.T) {
63+
testIgnition(t, `
64+
resource "ignition_disk" "foo" {
65+
device = "/foo"
66+
partition {
67+
label = "qux"
68+
}
69+
}
70+
71+
data "ignition_config" "test" {
72+
disks = [
73+
"${ignition_disk.foo.id}",
74+
]
75+
}
76+
`, func(c *types.Config) error {
77+
if len(c.Storage.Disks) != 1 {
78+
return fmt.Errorf("disks, found %d", len(c.Storage.Disks))
79+
}
80+
81+
return nil
82+
})
83+
}

‎builtin/providers/ignition/resource_ignition_file.go‎

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ import (
1010

1111
func resourceFile() *schema.Resource {
1212
return &schema.Resource{
13-
Create: resourceFileCreate,
14-
Delete: resourceFileDelete,
1513
Exists: resourceFileExists,
1614
Read: resourceFileRead,
1715
Schema: map[string]*schema.Schema{
@@ -91,7 +89,7 @@ func resourceFile() *schema.Resource {
9189
}
9290
}
9391

94-
func resourceFileCreate(d *schema.ResourceData, meta interface{}) error {
92+
func resourceFileRead(d *schema.ResourceData, meta interface{}) error {
9593
id, err := buildFile(d, meta.(*cache))
9694
if err != nil {
9795
return err
@@ -101,11 +99,6 @@ func resourceFileCreate(d *schema.ResourceData, meta interface{}) error {
10199
return nil
102100
}
103101

104-
func resourceFileDelete(d *schema.ResourceData, meta interface{}) error {
105-
d.SetId("")
106-
return nil
107-
}
108-
109102
func resourceFileExists(d *schema.ResourceData, meta interface{}) (bool, error) {
110103
id, err := buildFile(d, meta.(*cache))
111104
if err != nil {
@@ -115,10 +108,6 @@ func resourceFileExists(d *schema.ResourceData, meta interface{}) (bool, error)
115108
return id == d.Id(), nil
116109
}
117110

118-
func resourceFileRead(d *schema.ResourceData, metacontent interface{}) error {
119-
return nil
120-
}
121-
122111
func buildFile(d *schema.ResourceData, c *cache) (string, error) {
123112
_, hasContent := d.GetOk("content")
124113
_, hasSource := d.GetOk("source")

‎builtin/providers/ignition/resource_ignition_file_test.go‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99

1010
func TestIngnitionFile(t *testing.T) {
1111
testIgnition(t, `
12-
resource "ignition_file" "foo" {
12+
data "ignition_file" "foo" {
1313
filesystem = "foo"
1414
path = "/foo"
1515
content {
@@ -19,8 +19,8 @@ func TestIngnitionFile(t *testing.T) {
1919
uid = 42
2020
gid = 84
2121
}
22-
23-
resource "ignition_file" "qux" {
22+
23+
data "ignition_file" "qux" {
2424
filesystem = "qux"
2525
path = "/qux"
2626
source {
@@ -30,10 +30,10 @@ func TestIngnitionFile(t *testing.T) {
3030
}
3131
}
3232
33-
resource "ignition_config" "test" {
33+
data "ignition_config" "test" {
3434
files = [
35-
"${ignition_file.foo.id}",
36-
"${ignition_file.qux.id}",
35+
"${data.ignition_file.foo.id}",
36+
"${data.ignition_file.qux.id}",
3737
]
3838
}
3939
`, func(c *types.Config) error {

‎builtin/providers/ignition/resource_ignition_filesystem.go‎

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import (
99

1010
func resourceFilesystem() *schema.Resource {
1111
return &schema.Resource{
12-
Create: resourceFilesystemCreate,
13-
Delete: resourceFilesystemDelete,
1412
Exists: resourceFilesystemExists,
1513
Read: resourceFilesystemRead,
1614
Schema: map[string]*schema.Schema{
@@ -59,7 +57,7 @@ func resourceFilesystem() *schema.Resource {
5957
}
6058
}
6159

62-
func resourceFilesystemCreate(d *schema.ResourceData, meta interface{}) error {
60+
func resourceFilesystemRead(d *schema.ResourceData, meta interface{}) error {
6361
id, err := buildFilesystem(d, meta.(*cache))
6462
if err != nil {
6563
return err
@@ -69,11 +67,6 @@ func resourceFilesystemCreate(d *schema.ResourceData, meta interface{}) error {
6967
return nil
7068
}
7169

72-
func resourceFilesystemDelete(d *schema.ResourceData, meta interface{}) error {
73-
d.SetId("")
74-
return nil
75-
}
76-
7770
func resourceFilesystemExists(d *schema.ResourceData, meta interface{}) (bool, error) {
7871
id, err := buildFilesystem(d, meta.(*cache))
7972
if err != nil {
@@ -83,10 +76,6 @@ func resourceFilesystemExists(d *schema.ResourceData, meta interface{}) (bool, e
8376
return id == d.Id(), nil
8477
}
8578

86-
func resourceFilesystemRead(d *schema.ResourceData, meta interface{}) error {
87-
return nil
88-
}
89-
9079
func buildFilesystem(d *schema.ResourceData, c *cache) (string, error) {
9180
var mount *types.FilesystemMount
9281
if _, ok := d.GetOk("mount"); ok {

‎builtin/providers/ignition/resource_ignition_filesystem_test.go‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,20 @@ import (
99

1010
func TestIngnitionFilesystem(t *testing.T) {
1111
testIgnition(t, `
12-
resource "ignition_filesystem" "foo" {
12+
data "ignition_filesystem" "foo" {
1313
name = "foo"
1414
path = "/foo"
1515
}
1616
17-
resource "ignition_filesystem" "qux" {
17+
data "ignition_filesystem" "qux" {
1818
name = "qux"
1919
mount {
2020
device = "/qux"
2121
format = "ext4"
2222
}
2323
}
2424
25-
resource "ignition_filesystem" "bar" {
25+
data "ignition_filesystem" "bar" {
2626
name = "bar"
2727
mount {
2828
device = "/bar"
@@ -32,11 +32,11 @@ func TestIngnitionFilesystem(t *testing.T) {
3232
}
3333
}
3434
35-
resource "ignition_config" "test" {
35+
data "ignition_config" "test" {
3636
filesystems = [
37-
"${ignition_filesystem.foo.id}",
38-
"${ignition_filesystem.qux.id}",
39-
"${ignition_filesystem.bar.id}",
37+
"${data.ignition_filesystem.foo.id}",
38+
"${data.ignition_filesystem.qux.id}",
39+
"${data.ignition_filesystem.bar.id}",
4040
]
4141
}
4242
`, func(c *types.Config) error {

0 commit comments

Comments
 (0)