cisco-en-programmability / terraform-provider-dnacenter

https://registry.terraform.io/providers/cisco-en-programmability/dnacenter/latest/docs
MIT License
14 stars 12 forks source link

Crucial parameter routeDistributionProtocol is missing in resource dnacenter_sda_fabric_border_device #121

Closed mschedrin closed 1 year ago

mschedrin commented 1 year ago

Prerequisites

Describe the bug In DNAC 2.3.3.6 API documentation for endpoint /dna/intent/api/v1/business/sda/border-device there is parameter routeDistributionProtocol available. There is no support for that parameter in corresponding resource dnacenter_sda_fabric_border_device. In combination with DNAC API bug it makes it impossible to configure border device with IP-Transit.

Expected behavior routeDistributionProtocol should be available as resource parameter.

Screenshots API documentation screenshot for reference:

image

Environment (please complete the following information):

fmunozmiranda commented 1 year ago

Hi @mschedrin After reviewing, I saw that this parameter in the supported version (2.3.3.0) does not exist, as you can confirm here: image

In that same documentation, I saw that the parameter starts to appear in the documentation from version 2.3.5: image

In a future provider version with 2.3.5 compatibility the parameter should be placed.

mschedrin commented 1 year ago

I seem that the documentation is not updated for 2.3.3. I suppose that API parameter has been added at some minor release after API documentation for 2.3.3.0 had been created. I am running latest and gold starred release of DNAC 2.3.3.6 and it is impossible to add a border node with IP transit to an SDA fabric:

==============================================================================: timestamp=2023-01-16T03:32:21.354-0800
2023-01-16T03:32:24.166-0800 [INFO]  provider.terraform-provider-dnacenter_v1.0.15-beta: 2023/01/16 03:32:24 [DEBUG] [RESTY] 
==============================================================================
~~~ REQUEST ~~~
POST  /dna/intent/api/v1/business/sda/border-device  HTTP/1.1
HOST   : 100.68.0.71
HEADERS:
    Accept: application/json
    Content-Type: application/json
    User-Agent: go-resty/2.7.0 (https://github.com/go-resty/resty)
    X-Auth-Token: <redacted>
BODY   :
[
   {
      "deviceManagementIpAddress": "100.68.0.189",
      "siteNameHierarchy": "Global/labhf/Skoyen/Floor2",
      "deviceRole": [
         "Border_Node",
         "Control_Plane_Node"
      ],
      "externalDomainRoutingProtocolName": "BGP",
      "externalConnectivityIpPoolName": "bhandoff1-labhf-skoyen",
      "internalAutonomouSystemNumber": "65002",
      "borderSessionType": "EXTERNAL",
      "connectedToInternet": "false",
      "borderWithExternalConnectivity": "true",
      "externalConnectivitySettings": [
         {
            "interfaceName": "GigabitEthernet1/0/1",
            "interfaceDescription": "Uplink1",
            "externalAutonomouSystemNumber": "65001",
            "l3Handoff": [
               {
                  "virtualNetwork": {
                     "virtualNetworkName": "INFRA_VN",
                     "vlanId": "2203"
                  }
               }
            ]
         }
      ]
   }
]
------------------------------------------------------------------------------
~~~ RESPONSE ~~~
STATUS       : 400 Bad Request
PROTO        : HTTP/1.1
RECEIVED AT  : 2023-01-16T03:32:24.165641033-08:00
TIME DURATION: 2.811407997s
HEADERS      :
    Bapiexecutionid: 35a74737-c7f5-4e89-94d3-b284a0a2808f
    Cache-Control: no-store
    Connection: keep-alive
    Content-Length: 568
    Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval' blob: data:
    Content-Type: application/json
    Date: Mon, 16 Jan 2023 11:32:15 GMT
    Pragma: no-cache
    Server: webserver
    Strict-Transport-Security: max-age=31536000; includeSubDomains
    Via: api-gateway
    X-Content-Type-Options: nosniff
    X-Frame-Options: SAMEORIGIN
    X-Request-Id: c207a21bce4603c14cd9a1a22b0c70ea
    X-Xss-Protection: 1
BODY         :
{
   "status": "failed",
   "description": "Conversion of SDA PubSub Control Plane to SDA BGP/LISP Control Plane not supported. To change the Control Plane to SDA BGP/LISP, remove all Control Plane(s), Save and Re-Add Control Plane(s) to fabric site.",
   "taskId": "3f9990f5-16cb-440e-86dd-611e5c16d7e8",
   "taskStatusUrl": "/dna/intent/api/v1/task/3f9990f5-16cb-440e-86dd-611e5c16d7e8",
   "executionStatusUrl": "/dna/intent/api/v1/dnacaap/management/execution-status/35a74737-c7f5-4e89-94d3-b284a0a2808f",
   "executionId": "35a74737-c7f5-4e89-94d3-b284a0a2808f"
}
==============================================================================: timestamp=2023-01-16T03:32:24.165-0800
2023-01-16T03:32:24.179-0800 [ERROR] vertex "dnacenter_sda_fabric_border_device.this" error: Failure when executing AddBorderDeviceInSdaFabric
2023-01-16T03:32:24.184-0800 [DEBUG] provider.stdio: received EOF, stopping recv loop: err="rpc error: code = Unavailable desc = error reading from server: EOF"
2023-01-16T03:32:24.187-0800 [DEBUG] provider: plugin process exited: path=.terraform/providers/registry.terraform.io/cisco-en-programmability/dnacenter/1.0.15-beta/linux_amd64/terraform-provider-dnacenter_v1.0.15-beta pid=109825
2023-01-16T03:32:24.187-0800 [DEBUG] provider: plugin exited

If I add routeDistributionProtocol parameter it works just fine using developer toolkit built in DNAC:

image
mschedrin commented 1 year ago

@fmunozmiranda I hope DNAC version 2.3.5 is going to be released quite soon, is there any work going on to begin supporting this version in the provider? In particular I am mostly interested in resource dnacenter_sda_fabric_border_device to support new parameters that are sent and returned from DNAC.

mschedrin commented 1 year ago

According to the documentation the issue is fixed.