@@ -2,6 +2,7 @@ package aci
22
33import (
44 "fmt"
5+ "log"
56
67 "github.com/ciscoecosystem/aci-go-client/client"
78 "github.com/ciscoecosystem/aci-go-client/models"
@@ -44,11 +45,32 @@ func resourceAciVSwitchPolicyGroup() *schema.Resource {
4445 },
4546
4647 "relation_vmm_rs_vswitch_exporter_pol" : & schema.Schema {
47- Type : schema .TypeSet ,
48- Elem : & schema.Schema {Type : schema .TypeString },
48+ Type : schema .TypeList ,
4949 Optional : true ,
5050 Description : "Create relation to netflowVmmExporterPol" ,
51- Set : schema .HashString ,
51+ Elem : & schema.Resource {
52+ Schema : map [string ]* schema.Schema {
53+ "exporter_pol_dn" : & schema.Schema {
54+ Type : schema .TypeString ,
55+ Required : true ,
56+ },
57+
58+ "active_flow_timeout" : & schema.Schema {
59+ Type : schema .TypeString ,
60+ Required : true ,
61+ },
62+
63+ "idle_flow_timeout" : & schema.Schema {
64+ Type : schema .TypeString ,
65+ Required : true ,
66+ },
67+
68+ "sampling_rate" : & schema.Schema {
69+ Type : schema .TypeString ,
70+ Required : true ,
71+ },
72+ },
73+ },
5274 },
5375 "relation_vmm_rs_vswitch_override_fw_pol" : & schema.Schema {
5476 Type : schema .TypeString ,
@@ -86,6 +108,12 @@ func resourceAciVSwitchPolicyGroup() *schema.Resource {
86108 Optional : true ,
87109 Description : "Create relation to lacpLagPol" ,
88110 },
111+ "relation_vmm_rs_vswitch_override_mtu_pol" : & schema.Schema {
112+ Type : schema .TypeString ,
113+
114+ Optional : true ,
115+ Description : "Create relation to l2InstPol" ,
116+ },
89117 }),
90118 }
91119}
@@ -152,15 +180,23 @@ func resourceAciVSwitchPolicyGroupCreate(d *schema.ResourceData, m interface{})
152180 return err
153181 }
154182
183+ exporterPolicyIDS := make ([]string , 0 , 1 )
155184 if relationTovmmRsVswitchExporterPol , ok := d .GetOk ("relation_vmm_rs_vswitch_exporter_pol" ); ok {
156- relationParamList := toStringList (relationTovmmRsVswitchExporterPol .(* schema.Set ).List ())
157- for _ , relationParam := range relationParamList {
158- err = aciClient .CreateRelationvmmRsVswitchExporterPol (vmmVSwitchPolicyCont .DistinguishedName , relationParam )
185+ exporterPolicies := relationTovmmRsVswitchExporterPol .([]interface {})
186+ for _ , relDn := range exporterPolicies {
187+ relation_vmm_rs_vswitch_exporter_pol := relDn .(map [string ]interface {})
188+ var exporterPolicyDn string
189+ exporterPolicyDn , err = aciClient .CreateRelationvmmRsVswitchExporterPol (vmmVSwitchPolicyCont .DistinguishedName , relation_vmm_rs_vswitch_exporter_pol ["exporter_pol_dn" ].(string ), relation_vmm_rs_vswitch_exporter_pol ["active_flow_timeout" ].(string ), relation_vmm_rs_vswitch_exporter_pol ["idle_flow_timeout" ].(string ), relation_vmm_rs_vswitch_exporter_pol ["sampling_rate" ].(string ))
159190
160191 if err != nil {
161192 return err
162193 }
194+ exporterPolicyIDS = append (exporterPolicyIDS , exporterPolicyDn )
163195 }
196+ log .Println ("Check ... :" , exporterPolicyIDS )
197+ d .Set ("exporterPolicy_ids" , exporterPolicyIDS )
198+ } else {
199+ d .Set ("exporterPolicy_ids" , exporterPolicyIDS )
164200 }
165201
166202 if relationTovmmRsVswitchOverrideFwPol , ok := d .GetOk ("relation_vmm_rs_vswitch_override_fw_pol" ); ok {
@@ -217,6 +253,15 @@ func resourceAciVSwitchPolicyGroupCreate(d *schema.ResourceData, m interface{})
217253
218254 }
219255
256+ if relationTovmmRsVswitchOverrideMtuPol , ok := d .GetOk ("relation_vmm_rs_vswitch_override_mtu_pol" ); ok {
257+ relationParam := relationTovmmRsVswitchOverrideMtuPol .(string )
258+ err = aciClient .CreateRelationvmmRsVswitchOverrideMtuPol (vmmVSwitchPolicyCont .DistinguishedName , relationParam )
259+ if err != nil {
260+ return err
261+ }
262+
263+ }
264+
220265 d .SetId (vmmVSwitchPolicyCont .DistinguishedName )
221266 return resourceAciVSwitchPolicyGroupRead (d , m )
222267}
@@ -243,29 +288,34 @@ func resourceAciVSwitchPolicyGroupUpdate(d *schema.ResourceData, m interface{})
243288 if err != nil {
244289 return err
245290 }
291+
246292 if d .HasChange ("relation_vmm_rs_vswitch_exporter_pol" ) {
247- oldRel , newRel := d .GetChange ("relation_vmm_rs_vswitch_exporter_pol" )
248- oldRelSet := oldRel .(* schema.Set )
249- newRelSet := newRel .(* schema.Set )
250- relToDelete := toStringList (oldRelSet .Difference (newRelSet ).List ())
251- relToCreate := toStringList (newRelSet .Difference (oldRelSet ).List ())
252-
253- for _ , relDn := range relToDelete {
254- err = aciClient .DeleteRelationvmmRsVswitchExporterPol (vmmVSwitchPolicyCont .DistinguishedName , relDn )
293+ relation_vmm_rs_vswitch_exporter_pol := d .Get ("exporterPolicy_ids" ).([]interface {})
294+ for _ , relDn := range relation_vmm_rs_vswitch_exporter_pol {
295+ err := aciClient .DeleteRelationvmmRsVswitchExporterPol (vmmVSwitchPolicyCont .DistinguishedName , relDn .(string ))
255296 if err != nil {
256297 return err
257298 }
258-
259299 }
300+ relationTovmmRsVswitchExporterPol := d .Get ("relation_vmm_rs_vswitch_exporter_pol" )
301+ exporterPolicyIDS := make ([]string , 0 , 1 )
302+ exporterPolicies := relationTovmmRsVswitchExporterPol .([]interface {})
303+ for _ , relDn := range exporterPolicies {
304+ relation_vmm_rs_vswitch_exporter_pol := relDn .(map [string ]interface {})
305+ var exporterPolicyDn string
306+ exporterPolicyDn , err = aciClient .CreateRelationvmmRsVswitchExporterPol (vmmVSwitchPolicyCont .DistinguishedName , relation_vmm_rs_vswitch_exporter_pol ["exporter_pol_dn" ].(string ), relation_vmm_rs_vswitch_exporter_pol ["active_flow_timeout" ].(string ), relation_vmm_rs_vswitch_exporter_pol ["idle_flow_timeout" ].(string ), relation_vmm_rs_vswitch_exporter_pol ["sampling_rate" ].(string ))
260307
261- for _ , relDn := range relToCreate {
262- err = aciClient .CreateRelationvmmRsVswitchExporterPol (vmmVSwitchPolicyCont .DistinguishedName , relDn )
263308 if err != nil {
264309 return err
265310 }
266311
312+ exporterPolicyIDS = append (exporterPolicyIDS , exporterPolicyDn )
267313 }
314+
315+ d .Set ("exporterPolicy_ids" , exporterPolicyIDS )
316+
268317 }
318+
269319 if d .HasChange ("relation_vmm_rs_vswitch_override_fw_pol" ) {
270320 _ , newRelParam := d .GetChange ("relation_vmm_rs_vswitch_override_fw_pol" )
271321 err = aciClient .DeleteRelationvmmRsVswitchOverrideFwPol (vmmVSwitchPolicyCont .DistinguishedName )
@@ -339,6 +389,19 @@ func resourceAciVSwitchPolicyGroupUpdate(d *schema.ResourceData, m interface{})
339389
340390 }
341391
392+ if d .HasChange ("relation_vmm_rs_vswitch_override_mtu_pol" ) {
393+ _ , newRelParam := d .GetChange ("relation_vmm_rs_vswitch_override_mtu_pol" )
394+ err = aciClient .DeleteRelationvmmRsVswitchOverrideMtuPol (vmmVSwitchPolicyCont .DistinguishedName )
395+ if err != nil {
396+ return err
397+ }
398+ err = aciClient .CreateRelationvmmRsVswitchOverrideMtuPol (vmmVSwitchPolicyCont .DistinguishedName , newRelParam .(string ))
399+ if err != nil {
400+ return err
401+ }
402+
403+ }
404+
342405 d .SetId (vmmVSwitchPolicyCont .DistinguishedName )
343406 return resourceAciVSwitchPolicyGroupRead (d , m )
344407
0 commit comments