Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

unify the nat gateway client to customize nat service endpoint by nat key #899

Merged
merged 2 commits into from
Feb 4, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ The following arguments are supported:
If omitted, the `HW_ENTERPRISE_PROJECT_ID` environment variable is used.

* `endpoints` - (Optional) Configuration block in key/value pairs for customizing service endpoints.
The following endpoints support to be customized: autoscaling, ecs, ims, vpc, evs, obs, sfs, cce, rds, dds, iam.
The following endpoints support to be customized: autoscaling, ecs, ims, vpc, nat, evs, obs, sfs, cce, rds, dds, iam.
An example provider configuration:

```hcl
Expand Down
8 changes: 2 additions & 6 deletions huaweicloud/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -647,12 +647,8 @@ func (c *Config) VPCEPClient(region string) (*golangsdk.ServiceClient, error) {
return c.NewServiceClient("vpcep", region)
}

func (c *Config) natV2Client(region string) (*golangsdk.ServiceClient, error) {
return c.NewServiceClient("natv2", region)
}

func (c *Config) natGatewayV2Client(region string) (*golangsdk.ServiceClient, error) {
return c.NewServiceClient("nat_gatewayv2", region)
func (c *Config) NatGatewayClient(region string) (*golangsdk.ServiceClient, error) {
return c.NewServiceClient("nat", region)
}

func (c *Config) elasticLBClient(region string) (*golangsdk.ServiceClient, error) {
Expand Down
2 changes: 1 addition & 1 deletion huaweicloud/data_source_huaweicloud_nat_gateway_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ func dataSourceNatGatewayV2() *schema.Resource {

func dataSourceNatGatewayV2Read(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
natClient, err := config.natGatewayV2Client(GetRegion(d, config))
natClient, err := config.NatGatewayClient(GetRegion(d, config))
if err != nil {
return fmt.Errorf("Error creating HuaweiCloud nat client: %s", err)
}
Expand Down
7 changes: 1 addition & 6 deletions huaweicloud/endpoints.go
Original file line number Diff line number Diff line change
Expand Up @@ -138,12 +138,7 @@ var allServiceCatalog = map[string]ServiceCatalog{
Name: "vpc",
Version: "v1",
},
"natv2": ServiceCatalog{
Name: "nat",
Version: "v2.0",
WithOutProjectID: true,
},
"nat_gatewayv2": ServiceCatalog{
"nat": ServiceCatalog{
Name: "nat",
Version: "v2",
},
Expand Down
17 changes: 3 additions & 14 deletions huaweicloud/endpoints_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -550,7 +550,6 @@ func TestAccServiceEndpoints_Storage(t *testing.T) {
}

// TestAccServiceEndpoints_Network test for the endpoints of the clients used in network
// include networkingV1Client, networkingV2Client, natV2Client, loadElasticLoadBalancerClient and FwV2Client
func TestAccServiceEndpoints_Network(t *testing.T) {

testAccPreCheckServiceEndpoints(t)
Expand Down Expand Up @@ -585,21 +584,11 @@ func TestAccServiceEndpoints_Network(t *testing.T) {
actualURL = serviceClient.ResourceBaseURL()
compareURL(expectedURL, actualURL, "networking", "v2.0", t)

// test endpoint of nat v2
// test endpoint of nat gateway
serviceClient, err = nil, nil
serviceClient, err = config.natV2Client(HW_REGION_NAME)
serviceClient, err = config.NatGatewayClient(HW_REGION_NAME)
if err != nil {
t.Fatalf("Error creating HuaweiCloud nat v2 client: %s", err)
}
expectedURL = fmt.Sprintf("https://nat.%s.%s/v2.0/", HW_REGION_NAME, config.Cloud)
actualURL = serviceClient.ResourceBaseURL()
compareURL(expectedURL, actualURL, "nat", "v2.0", t)

// test endpoint of nat_gateway v2
serviceClient, err = nil, nil
serviceClient, err = config.natGatewayV2Client(HW_REGION_NAME)
if err != nil {
t.Fatalf("Error creating HuaweiCloud nat_gateway v2 client: %s", err)
t.Fatalf("Error creating HuaweiCloud nat gateway client: %s", err)
}
expectedURL = fmt.Sprintf("https://nat.%s.%s/v2/%s/", HW_REGION_NAME, config.Cloud, config.TenantID)
actualURL = serviceClient.ResourceBaseURL()
Expand Down
6 changes: 3 additions & 3 deletions huaweicloud/resource_huaweicloud_nat_dnat_rule_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ func resourceNatDnatUserInputParams(d *schema.ResourceData) map[string]interface

func resourceNatDnatRuleCreate(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
client, err := config.natGatewayV2Client(GetRegion(d, config))
client, err := config.NatGatewayClient(GetRegion(d, config))
if err != nil {
return fmt.Errorf("Error creating sdk client, err=%s", err)
}
Expand Down Expand Up @@ -235,7 +235,7 @@ func resourceNatDnatRuleCreate(d *schema.ResourceData, meta interface{}) error {

func resourceNatDnatRuleRead(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
client, err := config.natGatewayV2Client(GetRegion(d, config))
client, err := config.NatGatewayClient(GetRegion(d, config))
if err != nil {
return fmt.Errorf("Error creating sdk client, err=%s", err)
}
Expand Down Expand Up @@ -404,7 +404,7 @@ func resourceNatDnatRuleRead(d *schema.ResourceData, meta interface{}) error {

func resourceNatDnatRuleDelete(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
client, err := config.natGatewayV2Client(GetRegion(d, config))
client, err := config.NatGatewayClient(GetRegion(d, config))
if err != nil {
return fmt.Errorf("Error creating sdk client, err=%s", err)
}
Expand Down
4 changes: 2 additions & 2 deletions huaweicloud/resource_huaweicloud_nat_dnat_rule_v2_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ func TestAccNatDnat_protocol(t *testing.T) {

func testAccCheckNatDnatDestroy(s *terraform.State) error {
config := testAccProvider.Meta().(*Config)
client, err := config.natGatewayV2Client(HW_REGION_NAME)
client, err := config.NatGatewayClient(HW_REGION_NAME)
if err != nil {
return fmt.Errorf("Error creating sdk client, err=%s", err)
}
Expand Down Expand Up @@ -109,7 +109,7 @@ func testAccCheckNatDnatDestroy(s *terraform.State) error {
func testAccCheckNatDnatExists() resource.TestCheckFunc {
return func(s *terraform.State) error {
config := testAccProvider.Meta().(*Config)
client, err := config.natGatewayV2Client(HW_REGION_NAME)
client, err := config.NatGatewayClient(HW_REGION_NAME)
if err != nil {
return fmt.Errorf("Error creating sdk client, err=%s", err)
}
Expand Down
28 changes: 14 additions & 14 deletions huaweicloud/resource_huaweicloud_nat_gateway_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ func resourceNatGatewayV2() *schema.Resource {

func resourceNatGatewayV2Create(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
natV2Client, err := config.natGatewayV2Client(GetRegion(d, config))
natClient, err := config.NatGatewayClient(GetRegion(d, config))
if err != nil {
return fmt.Errorf("Error creating HuaweiCloud nat client: %s", err)
}
Expand All @@ -97,7 +97,7 @@ func resourceNatGatewayV2Create(d *schema.ResourceData, meta interface{}) error
}

log.Printf("[DEBUG] Create Options: %#v", createOpts)
natGateway, err := natgateways.Create(natV2Client, createOpts).Extract()
natGateway, err := natgateways.Create(natClient, createOpts).Extract()
if err != nil {
return fmt.Errorf("Error creatting Nat Gateway: %s", err)
}
Expand All @@ -106,7 +106,7 @@ func resourceNatGatewayV2Create(d *schema.ResourceData, meta interface{}) error

stateConf := &resource.StateChangeConf{
Target: []string{"ACTIVE"},
Refresh: waitForNatGatewayActive(natV2Client, natGateway.ID),
Refresh: waitForNatGatewayActive(natClient, natGateway.ID),
Timeout: d.Timeout(schema.TimeoutCreate),
Delay: 5 * time.Second,
MinTimeout: 3 * time.Second,
Expand All @@ -124,12 +124,12 @@ func resourceNatGatewayV2Create(d *schema.ResourceData, meta interface{}) error

func resourceNatGatewayV2Read(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
natV2Client, err := config.natGatewayV2Client(GetRegion(d, config))
natClient, err := config.NatGatewayClient(GetRegion(d, config))
if err != nil {
return fmt.Errorf("Error creating HuaweiCloud nat client: %s", err)
}

natGateway, err := natgateways.Get(natV2Client, d.Id()).Extract()
natGateway, err := natgateways.Get(natClient, d.Id()).Extract()
if err != nil {
return CheckDeleted(d, err, "Nat Gateway")
}
Expand All @@ -149,7 +149,7 @@ func resourceNatGatewayV2Read(d *schema.ResourceData, meta interface{}) error {

func resourceNatGatewayV2Update(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
natV2Client, err := config.natGatewayV2Client(GetRegion(d, config))
natClient, err := config.NatGatewayClient(GetRegion(d, config))
if err != nil {
return fmt.Errorf("Error creating HuaweiCloud nat client: %s", err)
}
Expand All @@ -168,7 +168,7 @@ func resourceNatGatewayV2Update(d *schema.ResourceData, meta interface{}) error

log.Printf("[DEBUG] Update Options: %#v", updateOpts)

_, err = natgateways.Update(natV2Client, d.Id(), updateOpts).Extract()
_, err = natgateways.Update(natClient, d.Id(), updateOpts).Extract()
if err != nil {
return fmt.Errorf("Error updating Nat Gateway: %s", err)
}
Expand All @@ -178,15 +178,15 @@ func resourceNatGatewayV2Update(d *schema.ResourceData, meta interface{}) error

func resourceNatGatewayV2Delete(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
natV2Client, err := config.natGatewayV2Client(GetRegion(d, config))
natClient, err := config.NatGatewayClient(GetRegion(d, config))
if err != nil {
return fmt.Errorf("Error creating HuaweiCloud nat client: %s", err)
}

stateConf := &resource.StateChangeConf{
Pending: []string{"ACTIVE"},
Target: []string{"DELETED"},
Refresh: waitForNatGatewayDelete(natV2Client, d.Id()),
Refresh: waitForNatGatewayDelete(natClient, d.Id()),
Timeout: d.Timeout(schema.TimeoutDelete),
Delay: 5 * time.Second,
MinTimeout: 3 * time.Second,
Expand All @@ -201,9 +201,9 @@ func resourceNatGatewayV2Delete(d *schema.ResourceData, meta interface{}) error
return nil
}

func waitForNatGatewayActive(natV2Client *golangsdk.ServiceClient, nId string) resource.StateRefreshFunc {
func waitForNatGatewayActive(client *golangsdk.ServiceClient, nId string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
n, err := natgateways.Get(natV2Client, nId).Extract()
n, err := natgateways.Get(client, nId).Extract()
if err != nil {
return nil, "", err
}
Expand All @@ -217,11 +217,11 @@ func waitForNatGatewayActive(natV2Client *golangsdk.ServiceClient, nId string) r
}
}

func waitForNatGatewayDelete(natV2Client *golangsdk.ServiceClient, nId string) resource.StateRefreshFunc {
func waitForNatGatewayDelete(client *golangsdk.ServiceClient, nId string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
log.Printf("[DEBUG] Attempting to delete HuaweiCloud Nat Gateway %s.\n", nId)

n, err := natgateways.Get(natV2Client, nId).Extract()
n, err := natgateways.Get(client, nId).Extract()
if err != nil {
if _, ok := err.(golangsdk.ErrDefault404); ok {
log.Printf("[DEBUG] Successfully deleted HuaweiCloud Nat gateway %s", nId)
Expand All @@ -230,7 +230,7 @@ func waitForNatGatewayDelete(natV2Client *golangsdk.ServiceClient, nId string) r
return n, "ACTIVE", err
}

err = natgateways.Delete(natV2Client, nId).ExtractErr()
err = natgateways.Delete(client, nId).ExtractErr()
if err != nil {
if _, ok := err.(golangsdk.ErrDefault404); ok {
log.Printf("[DEBUG] Successfully deleted HuaweiCloud Nat Gateway %s", nId)
Expand Down
4 changes: 2 additions & 2 deletions huaweicloud/resource_huaweicloud_nat_gateway_v2_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ func TestAccNatGateway_withEpsId(t *testing.T) {

func testAccCheckNatV2GatewayDestroy(s *terraform.State) error {
config := testAccProvider.Meta().(*Config)
natClient, err := config.natGatewayV2Client(HW_REGION_NAME)
natClient, err := config.NatGatewayClient(HW_REGION_NAME)
if err != nil {
return fmt.Errorf("Error creating HuaweiCloud nat client: %s", err)
}
Expand Down Expand Up @@ -100,7 +100,7 @@ func testAccCheckNatV2GatewayExists(n string) resource.TestCheckFunc {
}

config := testAccProvider.Meta().(*Config)
natClient, err := config.natGatewayV2Client(HW_REGION_NAME)
natClient, err := config.NatGatewayClient(HW_REGION_NAME)
if err != nil {
return fmt.Errorf("Error creating HuaweiCloud nat client: %s", err)
}
Expand Down
24 changes: 12 additions & 12 deletions huaweicloud/resource_huaweicloud_nat_snat_rule_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ func resourceNatSnatRuleV2() *schema.Resource {

func resourceNatSnatRuleV2Create(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
natV2Client, err := config.natGatewayV2Client(GetRegion(d, config))
natClient, err := config.NatGatewayClient(GetRegion(d, config))
if err != nil {
return fmt.Errorf("Error creating HuaweiCloud nat client: %s", err)
}
Expand All @@ -98,7 +98,7 @@ func resourceNatSnatRuleV2Create(d *schema.ResourceData, meta interface{}) error
}

log.Printf("[DEBUG] Create Options: %#v", createOpts)
snatRule, err := hw_snatrules.Create(natV2Client, createOpts).Extract()
snatRule, err := hw_snatrules.Create(natClient, createOpts).Extract()
if err != nil {
return fmt.Errorf("Error creatting Snat Rule: %s", err)
}
Expand All @@ -107,7 +107,7 @@ func resourceNatSnatRuleV2Create(d *schema.ResourceData, meta interface{}) error

stateConf := &resource.StateChangeConf{
Target: []string{"ACTIVE"},
Refresh: waitForSnatRuleActive(natV2Client, snatRule.ID),
Refresh: waitForSnatRuleActive(natClient, snatRule.ID),
Timeout: d.Timeout(schema.TimeoutCreate),
Delay: 5 * time.Second,
MinTimeout: 3 * time.Second,
Expand All @@ -125,12 +125,12 @@ func resourceNatSnatRuleV2Create(d *schema.ResourceData, meta interface{}) error

func resourceNatSnatRuleV2Read(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
natV2Client, err := config.natGatewayV2Client(GetRegion(d, config))
natClient, err := config.NatGatewayClient(GetRegion(d, config))
if err != nil {
return fmt.Errorf("Error creating HuaweiCloud nat client: %s", err)
}

snatRule, err := hw_snatrules.Get(natV2Client, d.Id()).Extract()
snatRule, err := hw_snatrules.Get(natClient, d.Id()).Extract()
if err != nil {
return CheckDeleted(d, err, "Snat Rule")
}
Expand All @@ -149,7 +149,7 @@ func resourceNatSnatRuleV2Read(d *schema.ResourceData, meta interface{}) error {

func resourceNatSnatRuleV2Delete(d *schema.ResourceData, meta interface{}) error {
config := meta.(*Config)
natV2Client, err := config.natGatewayV2Client(GetRegion(d, config))
natClient, err := config.NatGatewayClient(GetRegion(d, config))
if err != nil {
return fmt.Errorf("Error creating HuaweiCloud nat client: %s", err)
}
Expand All @@ -159,7 +159,7 @@ func resourceNatSnatRuleV2Delete(d *schema.ResourceData, meta interface{}) error
stateConf := &resource.StateChangeConf{
Pending: []string{"ACTIVE"},
Target: []string{"DELETED"},
Refresh: waitForSnatRuleDelete(natV2Client, d.Id(), natGatewayID),
Refresh: waitForSnatRuleDelete(natClient, d.Id(), natGatewayID),
Timeout: d.Timeout(schema.TimeoutDelete),
Delay: 5 * time.Second,
MinTimeout: 3 * time.Second,
Expand All @@ -174,9 +174,9 @@ func resourceNatSnatRuleV2Delete(d *schema.ResourceData, meta interface{}) error
return nil
}

func waitForSnatRuleActive(natV2Client *golangsdk.ServiceClient, nId string) resource.StateRefreshFunc {
func waitForSnatRuleActive(client *golangsdk.ServiceClient, nId string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
n, err := hw_snatrules.Get(natV2Client, nId).Extract()
n, err := hw_snatrules.Get(client, nId).Extract()
if err != nil {
return nil, "", err
}
Expand All @@ -190,11 +190,11 @@ func waitForSnatRuleActive(natV2Client *golangsdk.ServiceClient, nId string) res
}
}

func waitForSnatRuleDelete(natV2Client *golangsdk.ServiceClient, nId, natGatewayID string) resource.StateRefreshFunc {
func waitForSnatRuleDelete(client *golangsdk.ServiceClient, nId, natGatewayID string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
log.Printf("[DEBUG] Attempting to delete HuaweiCloud Snat Rule %s.\n", nId)

n, err := hw_snatrules.Get(natV2Client, nId).Extract()
n, err := hw_snatrules.Get(client, nId).Extract()
if err != nil {
if _, ok := err.(golangsdk.ErrDefault404); ok {
log.Printf("[DEBUG] Successfully deleted HuaweiCloud Snat Rule %s", nId)
Expand All @@ -203,7 +203,7 @@ func waitForSnatRuleDelete(natV2Client *golangsdk.ServiceClient, nId, natGateway
return n, "ACTIVE", err
}

err = hw_snatrules.Delete(natV2Client, nId, natGatewayID).ExtractErr()
err = hw_snatrules.Delete(client, nId, natGatewayID).ExtractErr()
if err != nil {
if _, ok := err.(golangsdk.ErrDefault404); ok {
log.Printf("[DEBUG] Successfully deleted HuaweiCloud Snat Rule %s", nId)
Expand Down
4 changes: 2 additions & 2 deletions huaweicloud/resource_huaweicloud_nat_snat_rule_v2_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func TestAccNatSnatRule_basic(t *testing.T) {

func testAccCheckNatV2SnatRuleDestroy(s *terraform.State) error {
config := testAccProvider.Meta().(*Config)
natClient, err := config.natGatewayV2Client(HW_REGION_NAME)
natClient, err := config.NatGatewayClient(HW_REGION_NAME)
if err != nil {
return fmt.Errorf("Error creating HuaweiCloud nat client: %s", err)
}
Expand Down Expand Up @@ -70,7 +70,7 @@ func testAccCheckNatV2SnatRuleExists(n string) resource.TestCheckFunc {
}

config := testAccProvider.Meta().(*Config)
natClient, err := config.natGatewayV2Client(HW_REGION_NAME)
natClient, err := config.NatGatewayClient(HW_REGION_NAME)
if err != nil {
return fmt.Errorf("Error creating HuaweiCloud nat client: %s", err)
}
Expand Down