Skip to content

Commit 74dca63

Browse files
authored
Integrate filters in for Core Data Sources (#329)
Tests run: make test run=TestDatasourceCore
1 parent 23b181c commit 74dca63

File tree

39 files changed

+958
-678
lines changed

39 files changed

+958
-678
lines changed

data_source_obmcs_core_cpe.go

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ func CpeDatasource() *schema.Resource {
1616
return &schema.Resource{
1717
Read: readCpeList,
1818
Schema: map[string]*schema.Schema{
19+
"filter": dataSourceFiltersSchema(),
1920
"compartment_id": {
2021
Type: schema.TypeString,
2122
Required: true,
@@ -75,24 +76,33 @@ func (s *CPEDatasourceCrud) Get() (e error) {
7576
}
7677

7778
func (s *CPEDatasourceCrud) SetData() {
78-
if s.Resource != nil {
79-
s.D.SetId(time.Now().UTC().String())
79+
if s.Resource == nil {
80+
return
81+
}
8082

81-
cpes := []map[string]interface{}{}
83+
s.D.SetId(time.Now().UTC().String())
8284

83-
for _, v := range s.Resource.Cpes {
84-
cpe := map[string]interface{}{
85-
"id": v.ID,
86-
"compartment_id": v.CompartmentID,
87-
"display_name": v.DisplayName,
88-
"ip_address": v.IPAddress,
89-
"time_created": v.TimeCreated.String(),
90-
}
85+
resources := []map[string]interface{}{}
9186

92-
cpes = append(cpes, cpe)
87+
for _, v := range s.Resource.Cpes {
88+
cpe := map[string]interface{}{
89+
"id": v.ID,
90+
"compartment_id": v.CompartmentID,
91+
"display_name": v.DisplayName,
92+
"ip_address": v.IPAddress,
93+
"time_created": v.TimeCreated.String(),
9394
}
9495

95-
s.D.Set("cpes", cpes)
96+
resources = append(resources, cpe)
97+
}
98+
99+
if f, fOk := s.D.GetOk("filter"); fOk {
100+
resources = ApplyFilters(f.(*schema.Set), resources)
101+
}
96102

103+
if err := s.D.Set("cpes", resources); err != nil {
104+
panic(err)
97105
}
106+
107+
return
98108
}

data_source_obmcs_core_cpe_test.go

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,39 +19,44 @@ type DatasourceCoreCpeTestSuite struct {
1919
Provider terraform.ResourceProvider
2020
Providers map[string]terraform.ResourceProvider
2121
ResourceName string
22+
Token string
23+
TokenFn TokenFn
2224
}
2325

2426
func (s *DatasourceCoreCpeTestSuite) SetupTest() {
27+
s.Token, s.TokenFn = tokenize()
2528
s.Client = testAccClient
2629
s.Provider = testAccProvider
2730
s.Providers = testAccProviders
28-
s.Config = testProviderConfig() + `
31+
s.Config = testProviderConfig() + s.TokenFn(`
2932
resource "oci_core_cpe" "t" {
3033
compartment_id = "${var.compartment_id}"
31-
display_name = "-tf-cpe"
34+
display_name = "{{.token}}"
3235
ip_address = "142.10.10.1"
33-
}
34-
data "oci_core_cpes" "s" {
35-
compartment_id = "${oci_core_cpe.t.compartment_id}"
36-
limit = 1
37-
}`
36+
}`, nil)
3837
s.ResourceName = "data.oci_core_cpes.s"
3938
}
4039

4140
func (s *DatasourceCoreCpeTestSuite) TestAccDatasourceCoreCpe_basic() {
42-
4341
resource.Test(s.T(), resource.TestCase{
4442
PreventPostDestroyRefresh: true,
4543
Providers: s.Providers,
4644
Steps: []resource.TestStep{
4745
{
4846
ImportState: true,
4947
ImportStateVerify: true,
50-
Config: s.Config,
48+
Config: s.Config + s.TokenFn(`
49+
data "oci_core_cpes" "s" {
50+
compartment_id = "${oci_core_cpe.t.compartment_id}"
51+
filter {
52+
name = "display_name"
53+
values = ["{{.token}}"]
54+
}
55+
}`, nil),
5156
Check: resource.ComposeTestCheckFunc(
57+
resource.TestCheckResourceAttr(s.ResourceName, "cpes.#", "1"),
58+
resource.TestCheckResourceAttr(s.ResourceName, "cpes.0.display_name", s.Token),
5259
resource.TestCheckResourceAttr(s.ResourceName, "cpes.0.ip_address", "142.10.10.1"),
53-
resource.TestCheckResourceAttr(s.ResourceName, "cpes.0.display_name", "-tf-cpe"),
54-
resource.TestCheckResourceAttrSet(s.ResourceName, "cpes.#"),
5560
),
5661
},
5762
},

data_source_obmcs_core_dhcp_options.go

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ func DHCPOptionsDatasource() *schema.Resource {
1616
return &schema.Resource{
1717
Read: readDHCPOptionsList,
1818
Schema: map[string]*schema.Schema{
19+
"filter": dataSourceFiltersSchema(),
1920
"compartment_id": {
2021
Type: schema.TypeString,
2122
Required: true,
@@ -81,34 +82,45 @@ func (s *DHCPOptionsDatasourceCrud) Get() (e error) {
8182
}
8283

8384
func (s *DHCPOptionsDatasourceCrud) SetData() {
84-
if s.Res != nil {
85-
s.D.SetId(time.Now().UTC().String())
85+
if s.Res == nil {
86+
return
87+
}
8688

87-
stateObjs := []map[string]interface{}{}
88-
for _, res := range s.Res.DHCPOptions {
89+
s.D.SetId(time.Now().UTC().String())
8990

90-
nestedStateObjs := []map[string]interface{}{}
91+
resources := []map[string]interface{}{}
92+
for _, res := range s.Res.DHCPOptions {
9193

92-
for _, nestedRes := range res.Options {
93-
nestedStateObj := map[string]interface{}{
94-
"type": nestedRes.Type,
95-
"custom_dns_servers": nestedRes.CustomDNSServers,
96-
"server_type": nestedRes.ServerType,
97-
}
98-
nestedStateObjs = append(nestedStateObjs, nestedStateObj)
99-
}
94+
nestedStateObjs := []map[string]interface{}{}
10095

101-
stateObj := map[string]interface{}{
102-
"compartment_id": res.CompartmentID,
103-
"display_name": res.DisplayName,
104-
"id": res.ID,
105-
"options": nestedStateObjs,
106-
"state": res.State,
107-
"time_created": res.TimeCreated.String(),
96+
for _, nestedRes := range res.Options {
97+
nestedStateObj := map[string]interface{}{
98+
"type": nestedRes.Type,
99+
"custom_dns_servers": nestedRes.CustomDNSServers,
100+
"server_type": nestedRes.ServerType,
108101
}
109-
stateObjs = append(stateObjs, stateObj)
102+
nestedStateObjs = append(nestedStateObjs, nestedStateObj)
110103
}
111-
s.D.Set("options", stateObjs)
104+
105+
stateObj := map[string]interface{}{
106+
"compartment_id": res.CompartmentID,
107+
"display_name": res.DisplayName,
108+
"id": res.ID,
109+
"options": nestedStateObjs,
110+
"state": res.State,
111+
"time_created": res.TimeCreated.String(),
112+
"vcn_id": s.D.Get("vcn_id").(string), // todo: get this off the resource result
113+
}
114+
resources = append(resources, stateObj)
112115
}
116+
117+
if f, fOk := s.D.GetOk("filter"); fOk {
118+
resources = ApplyFilters(f.(*schema.Set), resources)
119+
}
120+
121+
if err := s.D.Set("options", resources); err != nil {
122+
panic(err)
123+
}
124+
113125
return
114126
}

data_source_obmcs_core_dhcp_options_test.go

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ type DatasourceCoreDHCPOptionsTestSuite struct {
1919
Provider terraform.ResourceProvider
2020
Providers map[string]terraform.ResourceProvider
2121
ResourceName string
22-
List *baremetal.ListDHCPOptions
2322
}
2423

2524
func (s *DatasourceCoreDHCPOptionsTestSuite) SetupTest() {
@@ -30,23 +29,8 @@ func (s *DatasourceCoreDHCPOptionsTestSuite) SetupTest() {
3029
resource "oci_core_virtual_network" "t" {
3130
cidr_block = "10.0.0.0/16"
3231
compartment_id = "${var.compartment_id}"
33-
display_name = "network_name"
34-
}
35-
resource "oci_core_dhcp_options" "t" {
36-
compartment_id = "${var.compartment_id}"
37-
display_name = "display_name"
38-
options {
39-
type = "DomainNameServer"
40-
custom_dns_servers = [ "8.8.8.8" ]
41-
server_type = "CustomDnsServer"
42-
}
43-
vcn_id = "${oci_core_virtual_network.t.id}"
44-
}
45-
data "oci_core_dhcp_options" "t" {
46-
compartment_id = "${var.compartment_id}"
47-
limit = 1
48-
vcn_id = "${oci_core_virtual_network.t.id}"
49-
}`
32+
display_name = "-tf-vcn"
33+
}`
5034
s.ResourceName = "data.oci_core_dhcp_options.t"
5135
}
5236

@@ -58,17 +42,32 @@ func (s *DatasourceCoreDHCPOptionsTestSuite) TestAccDatasourceCoreDHCPOptions_ba
5842
{
5943
ImportState: true,
6044
ImportStateVerify: true,
61-
Config: s.Config,
45+
Config: s.Config + `
46+
data "oci_core_dhcp_options" "t" {
47+
compartment_id = "${var.compartment_id}"
48+
vcn_id = "${oci_core_virtual_network.t.id}"
49+
50+
filter {
51+
name = "display_name"
52+
values = ["Default DHCP Options.*"]
53+
regex = true
54+
}
55+
}`,
6256
Check: resource.ComposeTestCheckFunc(
63-
resource.TestCheckResourceAttrSet(s.ResourceName, "options.0.id"),
64-
resource.TestCheckResourceAttrSet(s.ResourceName, "options.#"),
6557
resource.TestCheckResourceAttrSet(s.ResourceName, "vcn_id"),
58+
resource.TestCheckResourceAttrSet(s.ResourceName, "compartment_id"),
59+
resource.TestCheckResourceAttr(s.ResourceName, "options.#", "1"),
60+
resource.TestCheckResourceAttr(s.ResourceName, "options.0.display_name", "Default DHCP Options for -tf-vcn"),
61+
resource.TestCheckResourceAttr(s.ResourceName, "options.0.options.#", "1"),
62+
resource.TestCheckResourceAttrSet(s.ResourceName, "options.0.compartment_id"),
63+
resource.TestCheckResourceAttrSet(s.ResourceName, "options.0.id"),
64+
resource.TestCheckResourceAttrSet(s.ResourceName, "options.0.time_created"),
65+
resource.TestCheckResourceAttrSet(s.ResourceName, "options.0.vcn_id"),
6666
),
6767
},
6868
},
6969
},
7070
)
71-
7271
}
7372

7473
func TestDatasourceCoreDHCPOptionsTestSuite(t *testing.T) {

data_source_obmcs_core_drg.go

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ func DrgDatasource() *schema.Resource {
1717
return &schema.Resource{
1818
Read: readDrgs,
1919
Schema: map[string]*schema.Schema{
20+
"filter": dataSourceFiltersSchema(),
2021
"compartment_id": {
2122
Type: schema.TypeString,
2223
Required: true,
@@ -76,20 +77,29 @@ func (s *DrgDatasourceCrud) Get() (e error) {
7677
}
7778

7879
func (s *DrgDatasourceCrud) SetData() {
79-
if s.Res != nil {
80-
s.D.SetId(time.Now().UTC().String())
81-
resources := []map[string]string{}
82-
for _, v := range s.Res.Drgs {
83-
res := map[string]string{
84-
"compartment_id": v.CompartmentID,
85-
"display_name": v.DisplayName,
86-
"id": v.ID,
87-
"state": v.State,
88-
"time_created": v.TimeCreated.String(),
89-
}
90-
resources = append(resources, res)
80+
if s.Res == nil {
81+
return
82+
}
83+
84+
s.D.SetId(time.Now().UTC().String())
85+
resources := []map[string]interface{}{}
86+
for _, v := range s.Res.Drgs {
87+
res := map[string]interface{}{
88+
"compartment_id": v.CompartmentID,
89+
"display_name": v.DisplayName,
90+
"id": v.ID,
91+
"state": v.State,
92+
"time_created": v.TimeCreated.String(),
9193
}
92-
s.D.Set("drgs", resources)
94+
resources = append(resources, res)
95+
}
96+
97+
if f, fOk := s.D.GetOk("filter"); fOk {
98+
resources = ApplyFilters(f.(*schema.Set), resources)
99+
}
100+
101+
if err := s.D.Set("drgs", resources); err != nil {
102+
panic(err)
93103
}
94104
return
95105
}

data_source_obmcs_core_drg_attachment.go renamed to data_source_obmcs_core_drg_attachments.go

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ func DrgAttachmentDatasource() *schema.Resource {
1616
return &schema.Resource{
1717
Read: readDrgAttachments,
1818
Schema: map[string]*schema.Schema{
19+
"filter": dataSourceFiltersSchema(),
1920
"compartment_id": {
2021
Type: schema.TypeString,
2122
Required: true,
@@ -91,24 +92,33 @@ func (s *DrgAttachmentDatasourceCrud) Get() (e error) {
9192
}
9293

9394
func (s *DrgAttachmentDatasourceCrud) SetData() {
94-
if s.Res != nil {
95-
// Important, if you don't have an ID, make one up for your datasource
96-
// or things will end in tears
97-
s.D.SetId(time.Now().UTC().String())
98-
resources := []map[string]string{}
99-
for _, v := range s.Res.DrgAttachments {
100-
res := map[string]string{
101-
"compartment_id": v.CompartmentID,
102-
"display_name": v.DisplayName,
103-
"drg_id": v.DrgID,
104-
"id": v.ID,
105-
"state": v.State,
106-
"time_created": v.TimeCreated.String(),
107-
"vcn_id": v.VcnID,
108-
}
109-
resources = append(resources, res)
95+
if s.Res == nil {
96+
return
97+
}
98+
// Important, if you don't have an ID, make one up for your datasource
99+
// or things will end in tears
100+
s.D.SetId(time.Now().UTC().String())
101+
resources := []map[string]interface{}{}
102+
for _, v := range s.Res.DrgAttachments {
103+
res := map[string]interface{}{
104+
"compartment_id": v.CompartmentID,
105+
"display_name": v.DisplayName,
106+
"drg_id": v.DrgID,
107+
"id": v.ID,
108+
"state": v.State,
109+
"time_created": v.TimeCreated.String(),
110+
"vcn_id": v.VcnID,
110111
}
111-
s.D.Set("drg_attachments", resources)
112+
resources = append(resources, res)
113+
}
114+
115+
if f, fOk := s.D.GetOk("filter"); fOk {
116+
resources = ApplyFilters(f.(*schema.Set), resources)
112117
}
118+
119+
if err := s.D.Set("drg_attachments", resources); err != nil {
120+
panic(err)
121+
}
122+
113123
return
114124
}

0 commit comments

Comments
 (0)