Cleanup DHCP Relay config on segment deletion
diff --git a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/resource/NsxResource.java b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/resource/NsxResource.java
index 0eb270a..2999638 100644
--- a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/resource/NsxResource.java
+++ b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/resource/NsxResource.java
@@ -31,6 +31,7 @@
 
 import com.vmware.nsx.model.TransportZone;
 import com.vmware.nsx.model.TransportZoneListResult;
+import com.vmware.nsx_policy.infra.DhcpRelayConfigs;
 import com.vmware.nsx_policy.infra.Segments;
 import com.vmware.nsx_policy.infra.Sites;
 import com.vmware.nsx_policy.infra.Tier1s;
@@ -360,6 +361,8 @@
         try {
             Thread.sleep(30*1000);
             String segmentName = getSegmentName(cmd);
+            DhcpRelayConfigs dhcpRelayConfig = (DhcpRelayConfigs) nsxService.apply(DhcpRelayConfigs.class);
+            dhcpRelayConfig.delete(getDhcpRelayId(cmd));
             Segments segmentService = (Segments) nsxService.apply(Segments.class);
             segmentService.delete(segmentName);
         } catch (Exception e) {
@@ -428,6 +431,14 @@
          return segmentName + cmd.getVpcName() + "-" + cmd.getTierNetwork().getName();
     }
 
+    private String getDhcpRelayId(CreateNsxSegmentCommand cmd) {
+        String suffix = "-Relay";
+        if (isNull(cmd.getVpcName())) {
+            return cmd.getTierNetwork() + suffix;
+        }
+        return String.format("%s-%s%s", cmd.getVpcName(), cmd.getTierNetwork(), suffix);
+    }
+
     @Override
     public boolean start() {
         return true;