@@ -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
8384func (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}
0 commit comments