Skip to content

Commit

Permalink
Error use of gateway DNS forwarder with T0
Browse files Browse the repository at this point in the history
T0 gateways do not have multitenancy support

Signed-off-by: Kobi Samoray <[email protected]>
  • Loading branch information
ksamoray committed Jul 9, 2023
1 parent e78b7c3 commit 47cfcbd
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 17 deletions.
36 changes: 27 additions & 9 deletions nsxt/resource_nsxt_policy_gateway_dns_forwarder.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,12 @@ func resourceNsxtPolicyGatewayDNSForwarderRead(d *schema.ResourceData, m interfa
return fmt.Errorf("gateway_path is not valid")
}

obj, err := policyGatewayDNSForwarderGet(getSessionContext(d, m), connector, gwID, isT0)
context := getSessionContext(d, m)
if isT0 && context.ClientType == utl.Multitenancy {
return fmt.Errorf("multitenancy not supported with Tier0 gateways")
}

obj, err := policyGatewayDNSForwarderGet(context, connector, gwID, isT0)

if err != nil {
return handleReadError(d, "Gateway Dns Forwarder", gwID, err)
Expand Down Expand Up @@ -167,12 +172,17 @@ func resourceNsxtPolicyGatewayDNSForwarderCreate(d *schema.ResourceData, m inter

// Verify DNS forwarder is not yet defined for this Gateway
var err error
sessionContext := getSessionContext(d, m)
context := getSessionContext(d, m)

if isT0 && context.ClientType == utl.Multitenancy {
return fmt.Errorf("multitenancy not supported with Tier0 gateways")
}

if isT0 {
client := tier0s.NewDnsForwarderClient(sessionContext, connector)
client := tier0s.NewDnsForwarderClient(context, connector)
_, err = client.Get(gwID)
} else {
client := tier1s.NewDnsForwarderClient(sessionContext, connector)
client := tier1s.NewDnsForwarderClient(context, connector)
_, err = client.Get(gwID)
}
if err == nil {
Expand All @@ -183,7 +193,7 @@ func resourceNsxtPolicyGatewayDNSForwarderCreate(d *schema.ResourceData, m inter

log.Printf("[INFO] Creating Dns Forwarder for Gateway %s", gwID)

err = patchNsxtPolicyGatewayDNSForwarder(sessionContext, connector, d, gwID, isT0)
err = patchNsxtPolicyGatewayDNSForwarder(context, connector, d, gwID, isT0)
if err != nil {
return handleCreateError("Gateway Dns Forwarder", gwID, err)
}
Expand All @@ -201,8 +211,12 @@ func resourceNsxtPolicyGatewayDNSForwarderUpdate(d *schema.ResourceData, m inter
return fmt.Errorf("gateway_path is not valid")
}

context := getSessionContext(d, m)
if isT0 && context.ClientType == utl.Multitenancy {
return fmt.Errorf("multitenancy not supported with Tier0 gateways")
}
log.Printf("[INFO] Updating Gateway Dns Forwarder with ID %s", gwID)
err := patchNsxtPolicyGatewayDNSForwarder(getSessionContext(d, m), connector, d, gwID, isT0)
err := patchNsxtPolicyGatewayDNSForwarder(context, connector, d, gwID, isT0)
if err != nil {
return handleUpdateError("Gateway Dns Forwarder", gwID, err)
}
Expand All @@ -220,12 +234,16 @@ func resourceNsxtPolicyGatewayDNSForwarderDelete(d *schema.ResourceData, m inter
}

var err error
sessionContext := getSessionContext(d, m)
context := getSessionContext(d, m)
if isT0 && context.ClientType == utl.Multitenancy {
return fmt.Errorf("multitenancy not supported with Tier0 gateways")
}

if isT0 {
client := tier0s.NewDnsForwarderClient(sessionContext, connector)
client := tier0s.NewDnsForwarderClient(context, connector)
err = client.Delete(gwID)
} else {
client := tier1s.NewDnsForwarderClient(sessionContext, connector)
client := tier1s.NewDnsForwarderClient(context, connector)
err = client.Delete(gwID)
}
if err != nil {
Expand Down
26 changes: 22 additions & 4 deletions nsxt/resource_nsxt_policy_nat_rule.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,10 +155,14 @@ func resourceNsxtPolicyNATRuleDelete(d *schema.ResourceData, m interface{}) erro
if gwID == "" {
return fmt.Errorf("gateway_path is not valid")
}
context := getSessionContext(d, m)
if isT0 && context.ClientType == utl.Multitenancy {
return fmt.Errorf("multitenancy not supported with Tier0 gateways")
}

action := d.Get("action").(string)
natType := getNatTypeByAction(action)
err := deleteNsxtPolicyNATRule(getSessionContext(d, m), getPolicyConnector(m), gwID, isT0, natType, id)
err := deleteNsxtPolicyNATRule(context, getPolicyConnector(m), gwID, isT0, natType, id)
if err != nil {
return handleDeleteError("NAT Rule", id, err)
}
Expand Down Expand Up @@ -224,9 +228,14 @@ func resourceNsxtPolicyNATRuleRead(d *schema.ResourceData, m interface{}) error
return fmt.Errorf("gateway_path is not valid")
}

context := getSessionContext(d, m)
if isT0 && context.ClientType == utl.Multitenancy {
return fmt.Errorf("multitenancy not supported with Tier0 gateways")
}

action := d.Get("action").(string)
natType := getNatTypeByAction(action)
obj, err := getNsxtPolicyNATRuleByID(getSessionContext(d, m), connector, gwID, isT0, natType, id)
obj, err := getNsxtPolicyNATRuleByID(context, connector, gwID, isT0, natType, id)
if err != nil {
return handleReadError(d, "NAT Rule", id, err)
}
Expand Down Expand Up @@ -271,11 +280,16 @@ func resourceNsxtPolicyNATRuleCreate(d *schema.ResourceData, m interface{}) erro
return fmt.Errorf("gateway_path is not valid")
}

context := getSessionContext(d, m)
if isT0 && context.ClientType == utl.Multitenancy {
return fmt.Errorf("multitenancy not supported with Tier0 gateways")
}

id := d.Get("nsx_id").(string)
if id == "" {
id = newUUID()
} else {
_, err := getNsxtPolicyNATRuleByID(getSessionContext(d, m), connector, gwID, isT0, natType, id)
_, err := getNsxtPolicyNATRuleByID(context, connector, gwID, isT0, natType, id)
if err == nil {
return fmt.Errorf("NAT Rule with nsx_id '%s' already exists", id)
} else if !isNotFoundError(err) {
Expand Down Expand Up @@ -347,6 +361,10 @@ func resourceNsxtPolicyNATRuleUpdate(d *schema.ResourceData, m interface{}) erro
if gwID == "" {
return fmt.Errorf("gateway_path is not valid")
}
context := getSessionContext(d, m)
if isT0 && context.ClientType == utl.Multitenancy {
return fmt.Errorf("multitenancy not supported with Tier0 gateways")
}

displayName := d.Get("display_name").(string)
description := d.Get("description").(string)
Expand Down Expand Up @@ -388,7 +406,7 @@ func resourceNsxtPolicyNATRuleUpdate(d *schema.ResourceData, m interface{}) erro
}

log.Printf("[INFO] Updating NAT Rule with ID %s", id)
err := patchNsxtPolicyNATRule(getSessionContext(d, m), connector, gwID, ruleStruct, isT0)
err := patchNsxtPolicyNATRule(context, connector, gwID, ruleStruct, isT0)
if err != nil {
return handleUpdateError("NAT Rule", id, err)
}
Expand Down
24 changes: 20 additions & 4 deletions nsxt/resource_nsxt_policy_static_route.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,12 +114,16 @@ func resourceNsxtPolicyStaticRouteCreate(d *schema.ResourceData, m interface{})
if gwID == "" {
return fmt.Errorf("gateway_path is not a valid")
}
context := getSessionContext(d, m)
if isT0 && context.ClientType == utl.Multitenancy {
return fmt.Errorf("multitenancy not supported with Tier0 gateways")
}

id := d.Get("nsx_id").(string)
if id == "" {
id = newUUID()
} else {
_, err := getNsxtPolicyStaticRouteByID(getSessionContext(d, m), connector, gwID, isT0, id)
_, err := getNsxtPolicyStaticRouteByID(context, connector, gwID, isT0, id)
if err == nil {
return fmt.Errorf("Static Route with nsx_id '%s' already exists", id)
} else if !isNotFoundError(err) {
Expand Down Expand Up @@ -191,8 +195,12 @@ func resourceNsxtPolicyStaticRouteRead(d *schema.ResourceData, m interface{}) er
if gwID == "" {
return fmt.Errorf("gateway_path is not a valid")
}
context := getSessionContext(d, m)
if isT0 && context.ClientType == utl.Multitenancy {
return fmt.Errorf("multitenancy not supported with Tier0 gateways")
}

obj, err := getNsxtPolicyStaticRouteByID(getSessionContext(d, m), connector, gwID, isT0, id)
obj, err := getNsxtPolicyStaticRouteByID(context, connector, gwID, isT0, id)
if err != nil {
return handleReadError(d, "Static Route", id, err)
}
Expand Down Expand Up @@ -245,6 +253,10 @@ func resourceNsxtPolicyStaticRouteUpdate(d *schema.ResourceData, m interface{})
if gwID == "" {
return fmt.Errorf("gateway_path is not valid")
}
context := getSessionContext(d, m)
if isT0 && context.ClientType == utl.Multitenancy {
return fmt.Errorf("multitenancy not supported with Tier0 gateways")
}

displayName := d.Get("display_name").(string)
description := d.Get("description").(string)
Expand Down Expand Up @@ -285,7 +297,7 @@ func resourceNsxtPolicyStaticRouteUpdate(d *schema.ResourceData, m interface{})
}

log.Printf("[INFO] Updating Static Route with ID %s", id)
err := patchNsxtPolicyStaticRoute(getSessionContext(d, m), connector, gwID, routeStruct, isT0)
err := patchNsxtPolicyStaticRoute(context, connector, gwID, routeStruct, isT0)
if err != nil {
return handleUpdateError("Static Route", id, err)
}
Expand All @@ -307,8 +319,12 @@ func resourceNsxtPolicyStaticRouteDelete(d *schema.ResourceData, m interface{})
if gwID == "" {
return fmt.Errorf("gateway_path is not valid")
}
context := getSessionContext(d, m)
if isT0 && context.ClientType == utl.Multitenancy {
return fmt.Errorf("multitenancy not supported with Tier0 gateways")
}

err := deleteNsxtPolicyStaticRoute(getSessionContext(d, m), getPolicyConnector(m), gwID, isT0, id)
err := deleteNsxtPolicyStaticRoute(context, getPolicyConnector(m), gwID, isT0, id)
if err != nil {
return handleDeleteError("Static Route", id, err)
}
Expand Down

0 comments on commit 47cfcbd

Please sign in to comment.