Skip to content

Commit e53fc22

Browse files
anvitha-jainlhercot
authored andcommitted
Added VMWare resource relationships that are available on UI
1 parent 37f288c commit e53fc22

File tree

2 files changed

+92
-17
lines changed

2 files changed

+92
-17
lines changed

aci/resource_aci_vmmvswitchpolicycont.go

Lines changed: 80 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package aci
22

33
import (
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

examples/aci_vmm_domain/main.tf

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,21 @@ resource "aci_lldp_interface_policy" "LLDP_policy" {
5252
resource "aci_lacp_policy" "port_channel_policy" {
5353
name = "vmm_lacp"
5454
}
55+
resource "aci_cdp_interface_policy" "foocdp_interface_policy" {
56+
name = "cdpIfPol1"
57+
}
58+
5559

5660
resource "aci_vswitch_policy" "vmware_switch_policy" {
5761
vmm_domain_dn = aci_vmm_domain.vds.id
62+
relation_vmm_rs_vswitch_exporter_pol {
63+
exporter_pol_dn = "uni/infra/vmmexporterpol-exporter_policy"
64+
active_flow_timeout = 60
65+
idle_flow_timeout= 10
66+
sampling_rate= 0
67+
}
68+
relation_vmm_rs_vswitch_override_mtu_pol = "uni/fabric/l2pol-l2InstPolicy"
69+
relation_vmm_rs_vswitch_override_cdp_if_pol = aci_cdp_interface_policy.foocdp_interface_policy.id
5870
relation_vmm_rs_vswitch_override_lacp_pol = aci_lacp_policy.port_channel_policy.id
5971
relation_vmm_rs_vswitch_override_lldp_if_pol = aci_lldp_interface_policy.LLDP_policy.id
6072
}

0 commit comments

Comments
 (0)