Skip to content

Commit b32c5f1

Browse files
akabhaskmdmohan
authored andcommitted
Fix for Default behavior for ndfc_interface_ethernet resource
1 parent 98a0910 commit b32c5f1

File tree

3 files changed

+45
-9
lines changed

3 files changed

+45
-9
lines changed

internal/provider/ndfc/interfaces_eth.go

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,23 @@ func (i *NDFCEthernetInterface) DeleteInterface(ctx context.Context, dg *diag.Di
4949
return
5050
}
5151
intfPayload := resource_interface_common.NDFCInterfacesPayload{}
52-
intfPayload.Policy = inData.Policy
5352

5453
ifDeployPayload := resource_interface_common.NDFCInterfacesDeploy{}
55-
54+
client := getNDFCClient()
55+
resp := client.GetDeviceRole(ctx, dg, inData.SerialNumber)
56+
var role string
57+
if !resp.Exists() {
58+
// Avoiding error if the device role is not found and assuming the role is leaf
59+
role = "leaf"
60+
} else {
61+
role = resp.Array()[0].Get("role").String()
62+
}
63+
tflog.Debug(ctx, fmt.Sprintf("Device role: %s", role))
64+
if role == "leaf" {
65+
intfPayload.Policy = "int_trunk_host"
66+
} else {
67+
intfPayload.Policy = "int_routed_host"
68+
}
5669
for k, intf := range inData.Interfaces {
5770
tflog.Debug(ctx, fmt.Sprintf("Deleting interface: %s:%s", intf.SerialNumber, intf.InterfaceName))
5871

@@ -66,13 +79,24 @@ func (i *NDFCEthernetInterface) DeleteInterface(ctx context.Context, dg *diag.Di
6679
intf.NvPairs.Netflow = "false"
6780
intf.NvPairs.NetflowMonitor = "###"
6881
intf.NvPairs.NetflowSampler = "###"
69-
70-
//Set some default values
71-
intf.NvPairs.Speed = "Auto"
72-
intf.NvPairs.Mtu = "default"
73-
intf.NvPairs.AdminState = "false"
74-
intf.NvPairs.AllowedVlans = "none"
75-
82+
intf.NvPairs.InterfaceName = intf.InterfaceName
83+
if role == "leaf" {
84+
//Set default values when role is leaf
85+
intf.NvPairs.Speed = "Auto"
86+
intf.NvPairs.Mtu = "jumbo"
87+
intf.NvPairs.FreeformConfig = "no shutdown"
88+
intf.NvPairs.AllowedVlans = "none"
89+
intf.NvPairs.BpduGuard = "false"
90+
intf.NvPairs.PortTypeFast = "true"
91+
} else {
92+
intf.NvPairs.Speed = "Auto"
93+
intf.NvPairs.Mtu = "9216"
94+
intf.NvPairs.FreeformConfig = "no shutdown"
95+
intf.NvPairs.Vrf = ""
96+
intf.NvPairs.Ipv4Address = ""
97+
intf.NvPairs.Ipv4PrefixLength = ""
98+
intf.NvPairs.RoutingTag = ""
99+
}
76100
inData.Interfaces[k] = intf
77101
intfPayload.Interfaces = append(intfPayload.Interfaces, intf)
78102
ifDeployPayload = append(ifDeployPayload, resource_interface_common.NDFCInterfaceDeploy{

internal/provider/ndfc/inventory.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,11 @@ func (c NDFC) DeleteFabricInventoryDevices(ctx context.Context, diags *diag.Diag
140140
diags.AddError("Delete Devices Failed", err.Error())
141141
}
142142
}
143+
144+
func (c NDFC) GetDeviceRole(ctx context.Context, diags *diag.Diagnostics, serialNum string) gjson.Result {
145+
res, err := c.apiClient.Get(fmt.Sprintf("/rest/control/switches/roles?serialNumber=%s", serialNum))
146+
if err != nil {
147+
diags.AddError("Get Device Role Failed", err.Error())
148+
}
149+
return res
150+
}

internal/provider/ndfc/ndfc.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,7 @@ func ReleaseResourceLock(rscName string) {
114114
instance.deployMutex.RUnlock()
115115
log.Printf("+++++++++++++++ReleaseResourceLock for %s+++++++++++pid %d", rscName, os.Getpid())
116116
}
117+
118+
func getNDFCClient() *NDFC {
119+
return instance
120+
}

0 commit comments

Comments
 (0)