Skip to content

nutanix_recovery_plan "Duplicate network mapping" #386

Closed
@Chup4Chups

Description

Nutanix Cluster Information

Terraform Version

Terraform v1.1.5
on linux_amd64
+ provider registry.terraform.io/nutanix/nutanix v1.3.0

Affected Resource(s)

  • nutanix_recovery_plan

Terraform Configuration Files

resource "nutanix_recovery_plan" "test" {
  description = "test"
  name        = "test"

  stage_list {
    delay_time_secs = 0
    stage_uuid      = "xxxxxxxxx"

    stage_work {
      recover_entities {
        entity_info_list {
          categories {
            name  = "Protection"
            value = "test"
          }
        }
      }
    }
  }
  parameters {

      network_mapping_list {
        are_networks_stretched = true

        availability_zone_network_mapping_list {
          availability_zone_url = "xxxxxxxxx"

          cluster_reference_list {
            kind = "cluster"
            name = "NTNXCLU01"
            uuid = "xxxxxxxxx"
          }

          recovery_network {
            name              = "DEV"
            use_vpc_reference = false

            subnet_list {
              external_connectivity_state = "DISABLED"
              gateway_ip                  = "10.12.63.254"
              prefix_length               = 24
            }
          }

          test_network {
            name              = "DEV"
            use_vpc_reference = false

            subnet_list {
              external_connectivity_state = "DISABLED"
              gateway_ip                  = "10.12.63.254"
              prefix_length               = 24
            }
          }
        }
        availability_zone_network_mapping_list {
          availability_zone_url = "xxxxxxxxx"

          cluster_reference_list {
            kind = "cluster"
            name = "NTNXCLU02"
            uuid = "xxxxxxxxx"
          }

          recovery_network {
            name              = "DEV"
            use_vpc_reference = false

            subnet_list {
              external_connectivity_state = "DISABLED"
              gateway_ip                  = "10.12.63.254"
              prefix_length               = 24
            }
          }

          test_network {
            name              = "DEV"
            use_vpc_reference = false

            subnet_list {
              external_connectivity_state = "DISABLED"
              gateway_ip                  = "10.12.63.254"
              prefix_length               = 24
            }
          }
        }
      }
      network_mapping_list {
        are_networks_stretched = true

        availability_zone_network_mapping_list {
          availability_zone_url = "xxxxxxxxx"

          cluster_reference_list {
            kind = "cluster"
            name = "NTNXCLU01"
            uuid = "xxxxxxxxx""
          }

          recovery_network {
            name              = "TST"
            use_vpc_reference = false

            subnet_list {
              external_connectivity_state = "DISABLED"
              gateway_ip                  = "10.12.64.254"
              prefix_length               = 24
            }
          }

          test_network {
            name              = "TST"
            use_vpc_reference = false

            subnet_list {
              external_connectivity_state = "DISABLED"
              gateway_ip                  = "10.12.64.254"
              prefix_length               = 24
            }
          }
        }
        availability_zone_network_mapping_list {
          availability_zone_url = "xxxxxxxxx"

          cluster_reference_list {
            kind = "cluster"
            name = "NTNXCLU02"
            uuid = "xxxxxxxxx"
          }

          recovery_network {
            name              = "TST"
            use_vpc_reference = false

            subnet_list {
              external_connectivity_state = "DISABLED"
              gateway_ip                  = "10.12.64.254"
              prefix_length               = 24
            }
          }

          test_network {
            name              = "TST"
            use_vpc_reference = false

            subnet_list {
              external_connectivity_state = "DISABLED"
              gateway_ip                  = "10.12.64.254"
              prefix_length               = 24
            }
          }
        }
      }
  }
  timeouts {}
}



Debug Output


ad7
{
 "status": {
  "state": "PENDING",
  "execution_context": {
   "task_uuid": "xxxxxxxxx"
  }
 },
 "spec": {
  "name": "test",
  "resources": {
   "stage_list": [
    {
     "stage_work": {
      "recover_entities": {
       "entity_info_list": [
        {
         "categories": {
          "Protection": "test"
         }
        }
       ]
      }
     },
     "stage_uuid": "xxxxxxxxx"
     "delay_time_secs": 0
    }
   ],
   "parameters": {
    "network_mapping_list": [
     {
      "are_networks_stretched": true,
      "availability_zone_network_mapping_list": [
       {
        "cluster_reference_list": [
         {
          "kind": "cluster",
          "name": "NTNXCLU01",
          "uuid": "xxxxxxxxx"
         }
        ],
        "recovery_network": {
         "name": "TST",
         "subnet_list": [
          {
           "gateway_ip": "10.12.64.254",
           "external_connectivity_state": "DISABLED",
           "prefix_length": 24
          }
         ]
        },
        "availability_zone_url": "xxxxxxxxx",
        "test_network": {
         "name": "TST",
         "subnet_list": [
          {
           "gateway_ip": "10.12.64.254",
           "external_connectivity_state": "DISABLED",
           "prefix_length": 24
          }
         ]
        }
       },
       {
        "cluster_reference_list": [
         {
          "kind": "cluster",
          "name": "NTNXCLU02",
          "uuid": "xxxxxxxxx"
         }
        ],
        "recovery_network": {
         "name": "TST",
         "subnet_list": [
          {
           "gateway_ip": "10.12.64.254",
           "external_connectivity_state": "DISABLED",
           "prefix_length": 24
          }
         ]
        },
        "availability_zone_url": "xxxxxxxxx",
        "test_network": {
         "name": "TST",
         "subnet_list": [
          {
           "gateway_ip": "10.12.64.254",
           "external_connectivity_state": "DISABLED",
           "prefix_length": 24
          }
         ]
        }
       }
      ]
     },
     {
      "are_networks_stretched": true,
      "availability_zone_network_mapping_list": [
       {
        "cluster_reference_list": [
         {
          "kind": "cluster",
          "name": "NTNXCLU01",
          "uuid": "xxxxxxxxx"
         }
        ],
        "recovery_network": {
         "name": "TST",
         "subnet_list": [
          {
           "gateway_ip": "10.12.64.254",
           "external_connectivity_state": "DISABLED",
           "prefix_length": 24
          }
         ]
        },
        "availability_zone_url": "xxxxxxxxx",
        "test_network": {
         "name": "TST",
         "subnet_list": [
          {
           "gateway_ip": "10.12.64.254",
           "external_connectivity_state": "DISABLED",
           "prefix_length": 24
          }
         ]
        }
       },
       {
        "cluster_reference_list": [
         {
          "kind": "cluster",
          "name": "NTNXCLU02",
          "uuid": "xxxxxxxxx"
         }
        ],
        "recovery_network": {
         "name": "TST",
         "subnet_list": [
          {
           "gateway_ip": "10.12.64.254",
           "external_connectivity_state": "DISABLED",
           "prefix_length": 24
          }
         ]
        },
        "availability_zone_url": "xxxxxxxxx",
        "test_network": {
         "name": "TST",
         "subnet_list": [
          {
           "gateway_ip": "10.12.64.254",
           "external_connectivity_state": "DISABLED",
           "prefix_length": 24
          }
         ]
        }
       }
      ]
     }
    ]
   }
  },
  "description": "test"
 },
 "api_version": "3.1",
 "metadata": {
  "owner_reference": {
   "kind": "user",
   "uuid": "00000000-0000-0000-0000-000000000000",
   "name": "admin"
  },
  "use_categories_mapping": false,
  "kind": "recovery_plan",
  "spec_version": 0,
  "uuid": "xxxxxxxxx"
 }
}
0


-----------------------------------------------------: timestamp=2022-03-14T19:08:34.974+0100
2022-03-14T19:08:34.974+0100 [INFO]  provider.terraform-provider-nutanix_v1.3.0: 2022/03/14 19:08:34 [DEBUG] Waiting for state to become: [SUCCEEDED]: timestamp=2022-03-14T19:08:34.974+0100
nutanix_recovery_plan.test: Still creating... [10s elapsed]
2022-03-14T19:08:44.984+0100 [INFO]  provider.terraform-provider-nutanix_v1.3.0: 2022/03/14 19:08:44 [DEBUG] Nutanix API Request Details:
---[ REQUEST ]---------------------------------------
GET /api/nutanix/v3/tasks/"xxxxxxxxx" HTTP/1.1
Host: ntnxprism.mycompany.eu:9440
User-Agent: nutanix/v3


-----------------------------------------------------: timestamp=2022-03-14T19:08:44.983+0100
2022-03-14T19:08:45.223+0100 [INFO]  provider.terraform-provider-nutanix_v1.3.0: 2022/03/14 19:08:45 [DEBUG] Nutanix API Response Details:
---[ RESPONSE ]--------------------------------------
HTTP/1.1 200 OK


398
{
 "status": "FAILED",
 "last_update_time": "2022-03-14T18:08:30Z",
 "error_detail": "INTERNAL_ERROR: Duplicate network mapping for recovery_network from TST at Clusters NTNXCLU01 to TST at Clusters NTNXCLU02.",
 "logical_timestamp": 2,
 "entity_reference_list": [
  {
   "kind": "recovery_plan",
   "uuid": "xxxxxxxxx"
  }
 ],
 "start_time": "2022-03-14T18:08:30Z",
 "creation_time": "2022-03-14T18:08:29Z",
 "start_time_usecs": 1647281310052765,
 "cluster_reference": {
  "kind": "cluster",
  "uuid": "xxxxxxxxx"
 },
 "subtask_reference_list": [],
 "completion_time": "2022-03-14T18:08:30Z",
 "creation_time_usecs": 1647281309945297,
 "progress_message": "create_recovery_plan",
 "operation_type": "create_recovery_plan_intentful",
 "completion_time_usecs": 1647281310342905,
 "error_code": "500",
 "percentage_complete": 100,
 "api_version": "3.1",
 "uuid": "xxxxxxxxx"
}
0


Panic Output

Expected Behavior

Create recovery plan succesfully

Actual Behavior

╷
│ Error: error waiting for recovery_plan id (f8097128-3b2b-4d83-9213-9f64467a8512) to create: error_detail: INTERNAL_ERROR: Duplicate network mapping for recovery_network from TST at Clusters NTNXCLU01 to TST at Clusters NTNXCLU02., progress_message: create_recovery_plan
│
│   with nutanix_recovery_plan.test,
│   on main.tf line 52, in resource "nutanix_recovery_plan" "test":
│   52: resource "nutanix_recovery_plan" "test" {
│
╵

ps: you will note that my resource definition specify 2 blocks "network_mapping_list" with different network name, first is "DEV", second is "TST", however, thanks to the tf debug log, we can see the API request send 2 times the "TST" network.

Steps to Reproduce

  1. terraform apply

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions