Skip to content

Commit f4a3cb0

Browse files
Merge pull request #10 from cisco-en-programmability/develop
Develop v1.0.1-beta
2 parents e3c04f9 + bbd4e15 commit f4a3cb0

File tree

1,235 files changed

+35415
-17655
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,235 files changed

+35415
-17655
lines changed

CHANGELOG.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,50 @@
1+
## 1.0.1-beta (November 12, 2024)
2+
FEATURES:
3+
* General Version Selection Behavior added. More info detailed in README.md.
4+
* **New Data Source:** `data_source_analytics_anc_policies`
5+
* **New Data Source:** `data_source_analytics_dictionaries`
6+
* **New Data Source:** `data_source_analytics_endpoints`
7+
* **New Data Source:** `data_source_analytics_endpoints_count`
8+
* **New Data Source:** `data_source_analytics_profiling_rules`
9+
* **New Data Source:** `data_source_analytics_profiling_rules_count`
10+
* **New Data Source:** `data_source_analytics_tasks`
11+
* **New Data Source:** `data_source_disasterrecovery_system_operationstatus`
12+
* **New Data Source:** `data_source_disasterrecovery_system_status`
13+
* **New Data Source:** `data_source_endpoint_analytics_profiling_rules`
14+
* **New Data Source:** `data_source_profiling_rules_count`
15+
* **New Data Source:** `data_source_security_rogue_wireless_containment_status`
16+
* **New Data Source:** `data_source_security_threats_level`
17+
* **New Data Source:** `data_source_security_threats_rogue_allowed_list`
18+
* **New Data Source:** `data_source_security_threats_rogue_allowed_list_count`
19+
* **New Data Source:** `data_source_security_threats_type`
20+
* **New Data Source:** `data_source_tags_interfaces_members_associations`
21+
* **New Data Source:** `data_source_tags_interfaces_members_associations_count`
22+
* **New Data Source:** `data_source_tags_network_devices_members_associations`
23+
* **New Data Source:** `data_source_tags_network_devices_members_associations_count`
24+
* **New Data Source:** `data_source_threat_detail`
25+
* **New Data Source:** `data_source_threat_detail_count`
26+
* **New Data Source:** `data_source_threat_summary`
27+
* **New Resource:** `resource_analytics_cmdb_endpoints`
28+
* **New Resource:** `resource_analytics_endpoints`
29+
* **New Resource:** `resource_analytics_endpoints_anc_policy_delete`
30+
* **New Resource:** `resource_analytics_endpoints_anc_policy_update`
31+
* **New Resource:** `resource_analytics_profiling_rules`
32+
* **New Resource:** `resource_analytics_profiling_rules_bulk`
33+
* **New Resource:** `resource_endpoint_analytics_profiling_rules`
34+
* **New Resource:** `resource_network_device_user_defined_field_delete`
35+
* **New Resource:** `resource_network_device_user_defined_field_update`
36+
* **New Resource:** `resource_profiling_rules_in_bulk_create`
37+
* **New Resource:** `resource_security_rogue_additional_details`
38+
* **New Resource:** `resource_security_rogue_additional_details_count`
39+
* **New Resource:** `resource_security_rogue_wireless_containment_start`
40+
* **New Resource:** `resource_security_rogue_wireless_containment_stop`
41+
* **New Resource:** `resource_security_threats_details`
42+
* **New Resource:** `resource_security_threats_details_count`
43+
* **New Resource:** `resource_security_threats_rogue_allowed_list`
44+
* **New Resource:** `resource_security_threats_summary`
45+
* **New Resource:** `resource_tags_interfaces_members_associations_query`
46+
* **New Resource:** `resource_tags_network_devices_members_associations_query`
47+
148
## 1.0.0-beta (September 13, 2024)
249
IMPROVEMENTS:
350
* The provider has been updated with Catalyst Center API version `2.3.7.6`

README.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,89 @@ In the [docs directory](./docs/) you can find the documentation source for this
149149

150150
You can find the documentation online for the previously released versions at [Terraform Registry - Cisco Catalyst Center provider](https://registry.terraform.io/providers/cisco-en-programmability/catalystcenter/latest/docs).
151151

152+
153+
# Automatic Version Management for Resources and DataSources
154+
In this Terraform provider, version management is handled dynamically for **all resources** and **datasources**. The version of a resource or datasource is automatically selected based on the available versions in the environment, allowing users to either use a default version or specify a particular version when needed. Below is an explanation of how this automatic version selection works for both resources and datasources.
155+
156+
## General Version Selection Behavior
157+
For all resources and datasources, the behavior follows these general rules:
158+
159+
1. **If multiple versions of a resource or datasource exist (e.g., `resource_v1`, `resource_v2`)**:
160+
* By **default**, the **oldest** available version will be selected. That is, if both `resource_v1` and `resource_v2` are available, the provider will automatically select `v1` unless explicitly specified otherwise.
161+
* If a user wants to use the latest version (e.g., `v2`), they need to specify it explicitly in the configuration.
162+
163+
2. **If only one version of a resource or datasource exists (e.g., only `resource_v1`)**:
164+
* **The resource or datasource will automatically be used in that version**, without needing to specify the version suffix in the configuration.
165+
166+
3. **If only the latest version is available (e.g., only `resource_v2` and not `resource_v1`)**:
167+
* The resource or datasource will automatically refer to the **latest available version**, i.e., `resource_v2`.
168+
169+
170+
## Example Usage with Resources
171+
### Case 1: Both `resource_v1` and `resource_v2` are available
172+
If both `resource_v1` and `resource_v2` are available in your environment, the provider will select `resource_v1` by default. If you want to use `resource_v2`, you can specify it explicitly:
173+
174+
```hcl
175+
# Using version 1 (default)
176+
resource "resource" "default" {
177+
# This resource will refer to `resource_v1` by default
178+
}
179+
180+
# Explicitly using version 2
181+
resource "resource_v2" "default" {
182+
# This resource will refer to `resource_v2`
183+
}
184+
```
185+
### Case 2: Only resource\_v1 exists
186+
If only resource\_v1 is available in your environment, there is no need to specify the version, as the provider will automatically use that version:
187+
188+
```hcl
189+
resource "resource" "default" {
190+
191+
# This resource will refer to `resource_v1` since it's the only version available
192+
}
193+
```
194+
### Case 3: Only resource\_v2 exists
195+
If only resource\_v2 is available in your environment, the provider will automatically refer to that version, since resource\_v1 is not available:
196+
197+
```hcl
198+
resource "resource" "default" {
199+
200+
# This resource will refer to `resource_v2` since `resource_v1` is not available
201+
}
202+
```
203+
## Example Usage with DataSources
204+
The same version selection logic applies to datasources. Below is how version management works for datasources:
205+
206+
### Case 1: Both datasource\_v1 and datasource\_v2 are available
207+
```hcl
208+
# Using version 1 (default)
209+
data "datasource" "default" {
210+
211+
# This datasource will refer to `datasource_v1` by default
212+
}
213+
214+
# Explicitly using version 2
215+
data "datasource_v2" "default" {
216+
217+
# This datasource will refer to `datasource_v2`
218+
}
219+
```
220+
### Case 2: Only datasource\_v1 exists
221+
```hcl
222+
data "datasource" "default" {
223+
224+
# This datasource will refer to `datasource_v1` since it's the only version available
225+
}
226+
```
227+
### Case 3: Only datasource\_v2 exists
228+
```hcl
229+
data "datasource" "default" {
230+
231+
# This datasource will refer to `datasource_v2` since `datasource_v1` is not available
232+
}
233+
```
234+
152235
# Contributing
153236

154237
Ongoing development efforts and contributions to this provider are tracked as issues in this repository.

catalystcenter/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func providerConfigure(ctx context.Context, d *schema.ResourceData) (interface{}
4747
if err != nil {
4848
diags = append(diags, diag.Diagnostic{
4949
Severity: diag.Error,
50-
Summary: "Unable to create Cisco Catalyst Center client",
50+
Summary: "Unable to create Cisco DNA Center client",
5151
Detail: err.Error(),
5252
})
5353
return nil, diags

catalystcenter/convert.go

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package catalystcenter
33
import (
44
"encoding/json"
55
"fmt"
6-
"log"
76
"strconv"
87
)
98

@@ -92,22 +91,6 @@ func getResourceItem(item interface{}) *map[string]interface{} {
9291
return &vvItem
9392
}
9493

95-
func sliceInterfaceToSliceString(v []interface{}) []string {
96-
newValue := []string{}
97-
for _, v2 := range v {
98-
value, ok := v2.([]interface{})
99-
if !ok {
100-
log.Print("sliceInterfaceToSliceString: Nil")
101-
return nil
102-
}
103-
104-
for _, i := range value {
105-
newValue = append(newValue, interfaceToString(i))
106-
}
107-
}
108-
return newValue
109-
}
110-
11194
func interfaceToSliceString(v interface{}) []string {
11295
value, ok := v.([]interface{})
11396
if !ok {
@@ -136,11 +119,7 @@ func interfaceToSliceInt(v interface{}) *[]int {
136119
}
137120

138121
func interfaceToString(v interface{}) string {
139-
if v == nil {
140-
return ""
141-
} else {
142-
return fmt.Sprint(v)
143-
}
122+
return fmt.Sprint(v)
144123
}
145124

146125
func responseInterfaceToSliceString(v interface{}) []string {

catalystcenter/data_source_accesspoint_configuration_details_by_task_id.go

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -192,27 +192,27 @@ func dataSourceAccesspointConfigurationDetailsByTaskIDRead(ctx context.Context,
192192

193193
selectedMethod := 1
194194
if selectedMethod == 1 {
195-
log.Printf("[DEBUG] Selected method: GetAccessPointConfigurationTaskResult")
195+
log.Printf("[DEBUG] Selected method: GetAccessPointConfigurationTaskResultV1")
196196
vvTaskID := vTaskID.(string)
197197

198-
response1, restyResp1, err := client.Wireless.GetAccessPointConfigurationTaskResult(vvTaskID)
198+
response1, restyResp1, err := client.Wireless.GetAccessPointConfigurationTaskResultV1(vvTaskID)
199199

200200
if err != nil || response1 == nil {
201201
if restyResp1 != nil {
202202
log.Printf("[DEBUG] Retrieved error response %s", restyResp1.String())
203203
}
204204
diags = append(diags, diagErrorWithAlt(
205-
"Failure when executing 2 GetAccessPointConfigurationTaskResult", err,
206-
"Failure at GetAccessPointConfigurationTaskResult, unexpected response", ""))
205+
"Failure when executing 2 GetAccessPointConfigurationTaskResultV1", err,
206+
"Failure at GetAccessPointConfigurationTaskResultV1, unexpected response", ""))
207207
return diags
208208
}
209209

210210
log.Printf("[DEBUG] Retrieved response %+v", responseInterfaceToString(*response1))
211211

212-
vItems1 := flattenWirelessGetAccessPointConfigurationTaskResultItems(response1)
212+
vItems1 := flattenWirelessGetAccessPointConfigurationTaskResultV1Items(response1)
213213
if err := d.Set("items", vItems1); err != nil {
214214
diags = append(diags, diagError(
215-
"Failure when setting GetAccessPointConfigurationTaskResult response",
215+
"Failure when setting GetAccessPointConfigurationTaskResultV1 response",
216216
err))
217217
return diags
218218
}
@@ -224,43 +224,43 @@ func dataSourceAccesspointConfigurationDetailsByTaskIDRead(ctx context.Context,
224224
return diags
225225
}
226226

227-
func flattenWirelessGetAccessPointConfigurationTaskResultItems(items *catalystcentersdkgo.ResponseWirelessGetAccessPointConfigurationTaskResult) []map[string]interface{} {
227+
func flattenWirelessGetAccessPointConfigurationTaskResultV1Items(items *catalystcentersdkgo.ResponseWirelessGetAccessPointConfigurationTaskResultV1) []map[string]interface{} {
228228
if items == nil {
229229
return nil
230230
}
231231
var respItems []map[string]interface{}
232232
for _, item := range *items {
233233
respItem := make(map[string]interface{})
234-
respItem["instance_uuid"] = flattenWirelessGetAccessPointConfigurationTaskResultItemsInstanceUUID(item.InstanceUUID)
234+
respItem["instance_uuid"] = flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsInstanceUUID(item.InstanceUUID)
235235
respItem["instance_id"] = item.InstanceID
236-
respItem["auth_entity_id"] = flattenWirelessGetAccessPointConfigurationTaskResultItemsAuthEntityID(item.AuthEntityID)
236+
respItem["auth_entity_id"] = flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsAuthEntityID(item.AuthEntityID)
237237
respItem["display_name"] = item.DisplayName
238-
respItem["auth_entity_class"] = flattenWirelessGetAccessPointConfigurationTaskResultItemsAuthEntityClass(item.AuthEntityClass)
238+
respItem["auth_entity_class"] = flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsAuthEntityClass(item.AuthEntityClass)
239239
respItem["instance_tenant_id"] = item.InstanceTenantID
240240
respItem["ordered_list_oeindex"] = item.OrderedListOEIndex
241-
respItem["ordered_list_oeassoc_name"] = flattenWirelessGetAccessPointConfigurationTaskResultItemsOrderedListOEAssocName(item.OrderedListOEAssocName)
241+
respItem["ordered_list_oeassoc_name"] = flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsOrderedListOEAssocName(item.OrderedListOEAssocName)
242242
respItem["creation_order_index"] = item.CreationOrderIndex
243243
respItem["is_being_changed"] = boolPtrToString(item.IsBeingChanged)
244244
respItem["deploy_pending"] = item.DeployPending
245-
respItem["instance_created_on"] = flattenWirelessGetAccessPointConfigurationTaskResultItemsInstanceCreatedOn(item.InstanceCreatedOn)
246-
respItem["instance_updated_on"] = flattenWirelessGetAccessPointConfigurationTaskResultItemsInstanceUpdatedOn(item.InstanceUpdatedOn)
247-
respItem["change_log_list"] = flattenWirelessGetAccessPointConfigurationTaskResultItemsChangeLogList(item.ChangeLogList)
248-
respItem["instance_origin"] = flattenWirelessGetAccessPointConfigurationTaskResultItemsInstanceOrigin(item.InstanceOrigin)
249-
respItem["lazy_loaded_entities"] = flattenWirelessGetAccessPointConfigurationTaskResultItemsLazyLoadedEntities(item.LazyLoadedEntities)
245+
respItem["instance_created_on"] = flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsInstanceCreatedOn(item.InstanceCreatedOn)
246+
respItem["instance_updated_on"] = flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsInstanceUpdatedOn(item.InstanceUpdatedOn)
247+
respItem["change_log_list"] = flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsChangeLogList(item.ChangeLogList)
248+
respItem["instance_origin"] = flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsInstanceOrigin(item.InstanceOrigin)
249+
respItem["lazy_loaded_entities"] = flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsLazyLoadedEntities(item.LazyLoadedEntities)
250250
respItem["instance_version"] = item.InstanceVersion
251251
respItem["ap_name"] = item.ApName
252252
respItem["controller_name"] = item.ControllerName
253253
respItem["location_heirarchy"] = item.LocationHeirarchy
254254
respItem["mac_address"] = item.MacAddress
255255
respItem["status"] = item.Status
256256
respItem["status_details"] = item.StatusDetails
257-
respItem["internal_key"] = flattenWirelessGetAccessPointConfigurationTaskResultItemsInternalKey(item.InternalKey)
257+
respItem["internal_key"] = flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsInternalKey(item.InternalKey)
258258
respItems = append(respItems, respItem)
259259
}
260260
return respItems
261261
}
262262

263-
func flattenWirelessGetAccessPointConfigurationTaskResultItemsInstanceUUID(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultInstanceUUID) interface{} {
263+
func flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsInstanceUUID(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultV1InstanceUUID) interface{} {
264264
if item == nil {
265265
return nil
266266
}
@@ -270,7 +270,7 @@ func flattenWirelessGetAccessPointConfigurationTaskResultItemsInstanceUUID(item
270270

271271
}
272272

273-
func flattenWirelessGetAccessPointConfigurationTaskResultItemsAuthEntityID(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultAuthEntityID) interface{} {
273+
func flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsAuthEntityID(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultV1AuthEntityID) interface{} {
274274
if item == nil {
275275
return nil
276276
}
@@ -280,7 +280,7 @@ func flattenWirelessGetAccessPointConfigurationTaskResultItemsAuthEntityID(item
280280

281281
}
282282

283-
func flattenWirelessGetAccessPointConfigurationTaskResultItemsAuthEntityClass(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultAuthEntityClass) interface{} {
283+
func flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsAuthEntityClass(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultV1AuthEntityClass) interface{} {
284284
if item == nil {
285285
return nil
286286
}
@@ -290,7 +290,7 @@ func flattenWirelessGetAccessPointConfigurationTaskResultItemsAuthEntityClass(it
290290

291291
}
292292

293-
func flattenWirelessGetAccessPointConfigurationTaskResultItemsOrderedListOEAssocName(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultOrderedListOEAssocName) interface{} {
293+
func flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsOrderedListOEAssocName(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultV1OrderedListOEAssocName) interface{} {
294294
if item == nil {
295295
return nil
296296
}
@@ -300,7 +300,7 @@ func flattenWirelessGetAccessPointConfigurationTaskResultItemsOrderedListOEAssoc
300300

301301
}
302302

303-
func flattenWirelessGetAccessPointConfigurationTaskResultItemsInstanceCreatedOn(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultInstanceCreatedOn) interface{} {
303+
func flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsInstanceCreatedOn(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultV1InstanceCreatedOn) interface{} {
304304
if item == nil {
305305
return nil
306306
}
@@ -310,7 +310,7 @@ func flattenWirelessGetAccessPointConfigurationTaskResultItemsInstanceCreatedOn(
310310

311311
}
312312

313-
func flattenWirelessGetAccessPointConfigurationTaskResultItemsInstanceUpdatedOn(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultInstanceUpdatedOn) interface{} {
313+
func flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsInstanceUpdatedOn(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultV1InstanceUpdatedOn) interface{} {
314314
if item == nil {
315315
return nil
316316
}
@@ -320,7 +320,7 @@ func flattenWirelessGetAccessPointConfigurationTaskResultItemsInstanceUpdatedOn(
320320

321321
}
322322

323-
func flattenWirelessGetAccessPointConfigurationTaskResultItemsChangeLogList(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultChangeLogList) interface{} {
323+
func flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsChangeLogList(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultV1ChangeLogList) interface{} {
324324
if item == nil {
325325
return nil
326326
}
@@ -330,7 +330,7 @@ func flattenWirelessGetAccessPointConfigurationTaskResultItemsChangeLogList(item
330330

331331
}
332332

333-
func flattenWirelessGetAccessPointConfigurationTaskResultItemsInstanceOrigin(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultInstanceOrigin) interface{} {
333+
func flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsInstanceOrigin(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultV1InstanceOrigin) interface{} {
334334
if item == nil {
335335
return nil
336336
}
@@ -340,7 +340,7 @@ func flattenWirelessGetAccessPointConfigurationTaskResultItemsInstanceOrigin(ite
340340

341341
}
342342

343-
func flattenWirelessGetAccessPointConfigurationTaskResultItemsLazyLoadedEntities(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultLazyLoadedEntities) interface{} {
343+
func flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsLazyLoadedEntities(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultV1LazyLoadedEntities) interface{} {
344344
if item == nil {
345345
return nil
346346
}
@@ -350,7 +350,7 @@ func flattenWirelessGetAccessPointConfigurationTaskResultItemsLazyLoadedEntities
350350

351351
}
352352

353-
func flattenWirelessGetAccessPointConfigurationTaskResultItemsInternalKey(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultInternalKey) []map[string]interface{} {
353+
func flattenWirelessGetAccessPointConfigurationTaskResultV1ItemsInternalKey(item *catalystcentersdkgo.ResponseItemWirelessGetAccessPointConfigurationTaskResultV1InternalKey) []map[string]interface{} {
354354
if item == nil {
355355
return nil
356356
}

0 commit comments

Comments
 (0)