From 7a462da4f70d321dbe7a91fe80419a3a2601462a Mon Sep 17 00:00:00 2001 From: akinross Date: Mon, 13 May 2024 09:00:34 +0200 Subject: [PATCH 01/22] [ignore] Generator changes for migration of existing resources to plugin framework --- .../schema-git-commit-e21fb3e5.json | 38577 ++++++++++++++++ gen/generator.go | 517 +- gen/templates/resource.go.tmpl | 773 +- 3 files changed, 39819 insertions(+), 48 deletions(-) create mode 100644 gen/definitions/schema-git-commit-e21fb3e5.json diff --git a/gen/definitions/schema-git-commit-e21fb3e5.json b/gen/definitions/schema-git-commit-e21fb3e5.json new file mode 100644 index 000000000..ef3635907 --- /dev/null +++ b/gen/definitions/schema-git-commit-e21fb3e5.json @@ -0,0 +1,38577 @@ +{ + "format_version": "1.0", + "provider_schemas": { + "registry.terraform.io/ciscodevnet/aci": { + "provider": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "Global annotation for the provider. This can also be set as the ACI_ANNOTATION environment variable.", + "description_kind": "plain", + "optional": true + }, + "cert_name": { + "type": "string", + "description": "Certificate name for the User in Cisco ACI. This can also be set as the ACI_CERT_NAME environment variable.", + "description_kind": "plain", + "optional": true + }, + "insecure": { + "type": "string", + "description": "Allow insecure HTTPS client. This can also be set as the ACI_INSECURE environment variable. Defaults to `true`.", + "description_kind": "plain", + "optional": true + }, + "password": { + "type": "string", + "description": "Password for the APIC Account. This can also be set as the ACI_PASSWORD environment variable.", + "description_kind": "plain", + "optional": true + }, + "private_key": { + "type": "string", + "description": "Private key path for signature calculation. This can also be set as the ACI_PRIVATE_KEY environment variable.", + "description_kind": "plain", + "optional": true + }, + "proxy_creds": { + "type": "string", + "description": "Proxy server credentials in the form of username:password. This can also be set as the ACI_PROXY_CREDS environment variable.", + "description_kind": "plain", + "optional": true + }, + "proxy_url": { + "type": "string", + "description": "Proxy Server URL with port number. This can also be set as the ACI_PROXY_URL environment variable.", + "description_kind": "plain", + "optional": true + }, + "retries": { + "type": "string", + "description": "Number of retries for REST API calls. This can also be set as the ACI_RETRIES environment variable. Defaults to `2`.", + "description_kind": "plain", + "optional": true + }, + "url": { + "type": "string", + "description": "URL of the Cisco ACI web interface. This can also be set as the ACI_URL environment variable.", + "description_kind": "plain", + "optional": true + }, + "username": { + "type": "string", + "description": "Username for the APIC Account. This can also be set as the ACI_USERNAME environment variable.", + "description_kind": "plain", + "optional": true + }, + "validate_relation_dn": { + "type": "string", + "description": "Flag to validate if a object with entered relation Dn exists in the APIC. Defaults to `true`.", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "resource_schemas": { + "aci_aaa_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_aaa_domain_relationship": { + "version": 1, + "block": { + "attributes": { + "aaa_domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_aaep_to_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "attachable_access_entity_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_access_generic": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "attachable_access_entity_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_access_group": { + "version": 1, + "block": { + "attributes": { + "access_port_selector_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fex_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_access_port_block": { + "version": 1, + "block": { + "attributes": { + "access_port_selector_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_card": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_acc_bndl_subgrp": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "to_card": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_access_port_selector": { + "version": 1, + "block": { + "attributes": { + "access_port_selector_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_acc_base_grp": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_access_sub_port_block": { + "version": 1, + "block": { + "attributes": { + "access_port_selector_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_card": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_sub_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to_card": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to_sub_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_access_switch_policy_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_bfd_ipv4_inst_pol": { + "type": "string", + "description": "Create relation to bfd:Ipv4InstPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_bfd_ipv6_inst_pol": { + "type": "string", + "description": "Create relation to bfd:Ipv6InstPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_bfd_mh_ipv4_inst_pol": { + "type": "string", + "description": "Create relation to bfd:MhIpv4InstPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_bfd_mh_ipv6_inst_pol": { + "type": "string", + "description": "Create relation to bfd:MhIpv6InstPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_equipment_flash_config_pol": { + "type": "string", + "description": "Create relation to equipment:FlashConfigPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_fc_fabric_pol": { + "type": "string", + "description": "Create relation to fc:FabricPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_fc_inst_pol": { + "type": "string", + "description": "Create relation to fc:InstPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_iacl_leaf_profile": { + "type": "string", + "description": "Create relation to iacl:LeafProfile", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_l2_node_auth_pol": { + "type": "string", + "description": "Create relation to l2:NodeAuthPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_leaf_copp_profile": { + "type": "string", + "description": "Create relation to copp:LeafProfile", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_leaf_p_grp_to_cdp_if_pol": { + "type": "string", + "description": "Create relation to cdp:IfPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_leaf_p_grp_to_lldp_if_pol": { + "type": "string", + "description": "Create relation to lldp:IfPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_mon_node_infra_pol": { + "type": "string", + "description": "Create relation to mon:InfraPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_mst_inst_pol": { + "type": "string", + "description": "Create relation to stp:InstPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_netflow_node_pol": { + "type": "string", + "description": "Create relation to netflow:NodePol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_poe_inst_pol": { + "type": "string", + "description": "Create relation to poe:InstPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_topoctrl_fast_link_failover_inst_pol": { + "type": "string", + "description": "Create relation to topoctrl:FastLinkFailoverInstPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_topoctrl_fwd_scale_prof_pol": { + "type": "string", + "description": "Create relation to topoctrl:FwdScaleProfilePol", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_action_rule_additional_communities": { + "version": 1, + "block": { + "attributes": { + "action_rule_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "community": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "set_criteria": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_action_rule_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "multipath": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "next_hop_propagation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "set_as_path_prepend_last_as": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "set_communities": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "set_dampening": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "set_metric": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "set_metric_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "set_next_hop": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "set_preference": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "set_route_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "set_weight": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "set_as_path_prepend_as": { + "nesting_mode": "set", + "block": { + "attributes": { + "asn": { + "type": "string", + "description": "ASN must be between 0 and 2147483647", + "description_kind": "plain", + "required": true + }, + "order": { + "type": "string", + "description": "Order must be between 0 and 31", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_annotation": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Annotation object.", + "description_kind": "markdown", + "computed": true + }, + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "description": "The annotation resource for the 'tagAnnotation' class", + "description_kind": "markdown" + } + }, + "aci_any": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vz_rs_any_to_cons": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_vz_rs_any_to_cons_if": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_vz_rs_any_to_prov": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_application_epg": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "application_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "exception_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fwd_ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "has_mcast_source": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_attr_based_epg": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pc_enf_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_aepg_mon_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_bd": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_cons": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_cons_if": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_cust_qos_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_dpp_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_fc_path_att": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_intra_epg": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_path_att": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "deprecated": true, + "optional": true + }, + "relation_fv_rs_prot_by": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_prov": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_prov_def": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_sec_inherited": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_trust_ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "shutdown": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_fv_rs_node_att": { + "nesting_mode": "set", + "block": { + "attributes": { + "deployment_immediacy": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "node_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_application_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_ap_mon_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_attachable_access_entity_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_dom_p": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_authentication_properties": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "def_role_policy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ping_check": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "retries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_bd_dhcp_label": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bridge_domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "owner": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_dhcp_rs_dhcp_option_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_bfd_interface_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "detect_mult": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "echo_admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "echo_rx_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_rx_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_tx_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bfd_multihop_interface_policy": { + "version": 1, + "block": { + "attributes": { + "admin_state": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "detection_multiplier": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_receive_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_transmit_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bfd_multihop_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "interface_profile_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true, + "sensitive": true + }, + "key_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_bfd_rs_mh_if_pol": { + "type": "string", + "description": "Create relation to bfd:MhIfPol", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_bfd_multihop_node_policy": { + "version": 1, + "block": { + "attributes": { + "admin_state": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "detection_multiplier": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_rx_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_tx_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bgp_address_family_context": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "e_dist": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "i_dist": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "local_dist": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_ecmp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_ecmp_ibgp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bgp_best_path_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bgp_peer_connectivity_profile": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "addr_t_ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "admin_state": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "allowed_self_as_cnt": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "as_number": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "local_asn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "local_asn_propagate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_node_profile_dn": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "password": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true, + "sensitive": true + }, + "peer_ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "private_a_sctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_bgp_rs_peer_pfx_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ttl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "weight": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_bgp_rs_peer_to_profile": { + "nesting_mode": "set", + "block": { + "attributes": { + "direction": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description": "Create relation to rtctrlProfile", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_bgp_peer_prefix": { + "version": 1, + "block": { + "attributes": { + "action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_pfx": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "restart_time": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "thresh": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_bgp_route_control_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "route_control_profile_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain", + "deprecated": true + } + }, + "aci_bgp_route_summarization": { + "version": 2, + "block": { + "attributes": { + "address_type_controls": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "attrmap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bgp_timers": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "gr_ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hold_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ka_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_as_limit": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "stale_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bridge_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "arp_flood": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bridge_domain_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ep_clear": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ep_move_detect_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "host_based_routing": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "intersite_bum_traffic_allow": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "intersite_l2_stretch": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip_learning": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ipv6_mcast_allow": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "limit_ip_learn_to_subnets": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ll_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mcast_allow": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "multi_dst_pkt_act": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "optimize_wan_bandwidth": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_abd_pol_mon_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_bd_flood_to": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_bd_to_ep_ret": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_bd_to_fhs": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_bd_to_nd_p": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_bd_to_out": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_bd_to_profile": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_bd_to_relay_p": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_ctx": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_igmpsn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_mldsn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "unicast_route": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "unk_mac_ucast_act": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "unk_mcast_act": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "v6unk_mcast_act": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vmac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_fv_rs_bd_to_netflow_monitor_pol": { + "nesting_mode": "set", + "block": { + "attributes": { + "flt_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tn_netflow_monitor_pol_name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_bulk_epg_to_static_path": { + "version": 1, + "block": { + "attributes": { + "application_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "static_path": { + "nesting_mode": "set", + "block": { + "attributes": { + "deployment_immediacy": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "interface_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "primary_encap": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "min_items": 1 + } + }, + "description_kind": "plain" + } + }, + "aci_cdp_interface_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_account": { + "version": 1, + "block": { + "attributes": { + "access_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "account_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_credentials_dn": { + "type": "string", + "description": "Create relation to cloud:Credentials", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_cloud_rs_account_to_access_policy": { + "type": "string", + "description": "Create relation to cloud:AccessPolicy", + "description_kind": "plain", + "optional": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "vendor": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_ad": { + "version": 1, + "block": { + "attributes": { + "active_directory_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_applicationcontainer": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_aws_provider": { + "version": 1, + "block": { + "attributes": { + "access_key_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "account_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "email": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "http_proxy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_account_in_org": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_trusted": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provider_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "region": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "secret_access_key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_cidr_pool": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_context_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "primary": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_context_profile": { + "version": 1, + "block": { + "attributes": { + "access_policy_type": { + "type": "string", + "description": "Cloud context access policy type", + "description_kind": "plain", + "optional": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_brownfield": { + "type": "string", + "description": "Import Brownfield Virtual Network", + "description_kind": "plain", + "optional": true + }, + "cloud_vendor": { + "type": "string", + "description": "Name of the vendor", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hub_network": { + "type": "string", + "description": "hub network to enable transit gateway", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description": "Mo doc not defined in techpub!!!", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "primary_cidr": { + "type": "string", + "description": "Primary CIDR block", + "description_kind": "plain", + "required": true + }, + "region": { + "type": "string", + "description": "region", + "description_kind": "plain", + "required": true + }, + "relation_cloud_rs_ctx_to_flow_log": { + "type": "string", + "description": "Create relation to cloudAwsFlowLogPol", + "description_kind": "plain", + "optional": true + }, + "relation_cloud_rs_to_ctx": { + "type": "string", + "description": "Create relation to fvCtx", + "description_kind": "plain", + "required": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "type": { + "type": "string", + "description": "component type", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_credentials": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "client_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "email": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "http_proxy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_cloud_rs_ad": { + "type": "string", + "description": "Create relation to cloud:AD", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rsa_private_key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_domain_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "site_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_endpoint_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_expression": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_endpoint_selectorfor_external_epgs": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_external_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_shared": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_expression": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "subnet": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_epg": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_applicationcontainer_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "exception_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_cloud_rs_cloud_epg_ctx": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_cons": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_cons_if": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_cust_qos_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_intra_epg": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_prot_by": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_prov": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_sec_inherited": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_external_epg": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_applicationcontainer_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "exception_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_cloud_rs_cloud_epg_ctx": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_cons": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_cons_if": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_cust_qos_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_intra_epg": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_prot_by": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_prov": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_sec_inherited": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "route_reachability": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_external_network": { + "version": 1, + "block": { + "attributes": { + "all_regions": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_vendor": { + "type": "string", + "description": "Name of the vendor", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "host_router_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hub_network_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "regions": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "router_type": { + "type": "string", + "description": "Parameter used only for AWS cAPIC", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vpn_router_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_external_network_vpn_network": { + "version": 1, + "block": { + "attributes": { + "aci_cloud_external_network_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "remote_site_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "remote_site_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "ipsec_tunnel": { + "nesting_mode": "set", + "block": { + "attributes": { + "bgp_peer_asn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "ike_version": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "pre_shared_key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "public_ip_address": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "source_interfaces": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "subnet_pool_name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_ipsec_tunnel_subnet_pool": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "subnet_pool": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_l4_l7_native_load_balancer": { + "version": 1, + "block": { + "attributes": { + "aaa_domain_dn": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "active_active": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "allow_all": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auto_scaling": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_l4l7_load_balancer_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "context_aware": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "custom_resource_group": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "device_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "function_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "instance_count": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_copy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_instantiation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_static_ip": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4l7_device_application_security_group": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4l7_third_party_device": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "managed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_instance_count": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_instance_count": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "native_lb_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "package_model": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "promiscuous_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_cloud_rs_ldev_to_cloud_subnet": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "scheme": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "service_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "size": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sku": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "static_ip_addresses": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "target_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "trunking": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_l4_l7_third_party_device": { + "version": 1, + "block": { + "attributes": { + "aaa_domain_dn": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "active_active": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "context_aware": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "custom_resource_group": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "device_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "function_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "instance_count": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_copy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_instantiation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4l7_device_application_security_group": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4l7_third_party_device": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "managed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "package_model": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "promiscuous_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_cloud_rs_ldev_to_ctx": { + "type": "string", + "description": "Create relation to fv:Ctx", + "description_kind": "plain", + "required": true + }, + "service_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "trunking": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "interface_selectors": { + "nesting_mode": "set", + "block": { + "attributes": { + "allow_all": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "end_point_selectors": { + "nesting_mode": "set", + "block": { + "attributes": { + "match_expression": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_private_link_label": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_service_endpoint_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_service_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_expression": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_service_epg": { + "version": 1, + "block": { + "attributes": { + "access_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "azure_private_endpoint": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_application_container_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "cloud_service_epg_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "custom_service_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "deployment_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "label_match_criteria": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "preferred_group_member": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_cloud_rs_cloud_epg_ctx": { + "type": "string", + "description": "Create relation to fv:Ctx", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_cust_qos_pol": { + "type": "string", + "description": "Create relation to qos:CustomPol", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_graph_def": { + "type": [ + "set", + "string" + ], + "description": "Create relation to vz:GraphCont", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_intra_epg": { + "type": [ + "set", + "string" + ], + "description": "Create relation to vz:BrCP", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_prot_by": { + "type": [ + "set", + "string" + ], + "description": "Create relation to vz:Taboo", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_prov_def": { + "type": [ + "set", + "string" + ], + "description": "Create relation to vz:CtrctEPgCont", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_sec_inherited": { + "type": [ + "set", + "string" + ], + "description": "Create relation to fv:EPg", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_fv_rs_cons": { + "nesting_mode": "set", + "block": { + "attributes": { + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description": "Create relation to vzBrCP", + "description_kind": "plain" + } + }, + "relation_fv_rs_cons_if": { + "nesting_mode": "set", + "block": { + "attributes": { + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description": "Create relation to vzCPIf", + "description_kind": "plain" + } + }, + "relation_fv_rs_prov": { + "nesting_mode": "set", + "block": { + "attributes": { + "label_match_criteria": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description": "Create relation to vzBrCP", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_subnet": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_cidr_pool_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_cloud_rs_subnet_to_ctx": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_cloud_rs_subnet_to_flow_log": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "scope": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "subnet_group_label": { + "type": "string", + "description": "Only applicable to the GCP vendor", + "description_kind": "plain", + "optional": true + }, + "usage": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "zone": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_template_region_detail": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hub_networking": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_vpn_gateway": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_context_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "cloud_router_profile_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "num_instances": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_cloud_rs_to_direct_conn_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_cloud_rs_to_host_router_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_cloud_rs_to_vpn_gw_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_vrf_leak_routes": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "leak_to": { + "nesting_mode": "set", + "block": { + "attributes": { + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_concrete_device": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_device_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vm_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vmm_controller_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_concrete_interface": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "concrete_device_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_c_if_path_att": { + "type": "string", + "description": "Create relation to fabric:PathEp", + "description_kind": "plain", + "optional": true + }, + "vnic_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_configuration_export_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "format": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "include_secure_fields": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_snapshot_count": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_config_rs_export_destination": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true + }, + "relation_config_rs_export_scheduler": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_config_rs_remote_path": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_trig_rs_triggerable": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "snapshot": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_configuration_import_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fail_on_decrypt_errors": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "file_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "import_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "import_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_config_rs_import_source": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_config_rs_remote_path": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_trig_rs_triggerable": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "snapshot": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_connection": { + "version": 1, + "block": { + "attributes": { + "adj_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "conn_dir": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "conn_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "direct_connect": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_service_graph_template_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_abs_connection_conns": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_vns_rs_abs_copy_connection": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "unicast_route": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_console_authentication": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provider_group": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "realm": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "realm_sub_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_contract": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_entry_ids": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_ids": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vz_rs_graph_att": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "scope": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "filter": { + "nesting_mode": "list", + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "filter_entry": { + "nesting_mode": "list", + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "apply_to_frag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "arp_opc": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "d_from_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "d_to_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "entry_annotation": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true, + "computed": true + }, + "entry_description": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true, + "computed": true + }, + "entry_name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ether_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_entry_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "icmpv4_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "icmpv6_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "match_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prot": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "s_from_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "s_to_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "stateful": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tcp_rules": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_contract_subject": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "apply_both_directions": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "cons_match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "contract_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prov_match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vz_rs_sdwan_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vz_rs_subj_filt_att": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_vz_rs_subj_graph_att": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rev_flt_ports": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "consumer_to_provider": { + "nesting_mode": "set", + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vz_rs_in_term_graph_att": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_vz_rs_filt_att": { + "nesting_mode": "set", + "block": { + "attributes": { + "action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "directives": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "priority_override": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Create relation to vzFilter", + "description_kind": "plain" + } + } + }, + "description": "Set InTerm attributes", + "description_kind": "plain" + }, + "max_items": 1 + }, + "provider_to_consumer": { + "nesting_mode": "set", + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vz_rs_out_term_graph_att": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_vz_rs_filt_att": { + "nesting_mode": "set", + "block": { + "attributes": { + "action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "directives": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "priority_override": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Create relation to vzFilter", + "description_kind": "plain" + } + } + }, + "description": "Set OutTerm attributes", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "aci_contract_subject_filter": { + "version": 1, + "block": { + "attributes": { + "action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "contract_subject_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "directives": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "priority_override": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_contract_subject_one_way_filter": { + "version": 1, + "block": { + "attributes": { + "action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "contract_subject_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "directives": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "priority_override": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_coop_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_default_authentication": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fallback_check": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provider_group": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "realm": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "realm_sub_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_destination_of_redirected_traffic": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dest_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "ip2": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pod_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_redirect_health_group": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "service_redirect_policy_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_dhcp_option_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "dhcp_option": { + "nesting_mode": "set", + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "data": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dhcp_option_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_dhcp_relay_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "owner": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "relation_dhcp_rs_prov": { + "nesting_mode": "set", + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_duo_provider_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_choice": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ldap_group_map_ref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provider_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sec_fac_auth_methods": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_encryption_key": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "clear_encryption_key": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "passphrase": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "passphrase_key_derivation_version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "strong_encryption_enabled": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_end_point_retention_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bounce_age_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bounce_trig": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hold_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "local_ep_age_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "move_freq": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "remote_ep_age_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_controls": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hold_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rogue_ep_detect_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rogue_ep_detect_mult": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_ip_aging_profile": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_loop_protection": { + "version": 1, + "block": { + "attributes": { + "action": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "loop_detect_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "loop_detect_mult": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_security_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "application_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pc_enf_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_cust_qos_pol": { + "type": "string", + "description": "Create relation to qos:CustomPol", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_intra_epg": { + "type": [ + "set", + "string" + ], + "description": "Create relation to vz:BrCP", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_prot_by": { + "type": [ + "set", + "string" + ], + "description": "Create relation to vz:Taboo", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_scope": { + "type": "string", + "description": "Create relation to fv:Ctx", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_sec_inherited": { + "type": [ + "set", + "string" + ], + "description": "Create relation to fv:EPg", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "relation_fv_rs_cons": { + "nesting_mode": "set", + "block": { + "attributes": { + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description": "Create relation to vzBrCP", + "description_kind": "plain" + } + }, + "relation_fv_rs_cons_if": { + "nesting_mode": "set", + "block": { + "attributes": { + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description": "Create relation to vzCPIf", + "description_kind": "plain" + } + }, + "relation_fv_rs_prov": { + "nesting_mode": "set", + "block": { + "attributes": { + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description": "Create relation to vzBrCP", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_security_group_epg_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "endpoint_security_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_security_group_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "endpoint_security_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_expression": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_security_group_tag_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "endpoint_security_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_key": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "match_value": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "value_operator": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_tag_ip": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "computed": true + }, + "id_attribute": { + "type": "string", + "description": "The identifier of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description": "The IP address of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_name": { + "type": "string", + "description": "The VRF name of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "required": true + } + }, + "description": "The endpoint_tag_ip resource for the 'fvEpIpTag' class", + "description_kind": "markdown" + } + }, + "aci_endpoint_tag_mac": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bd_name": { + "type": "string", + "description": "The bridge domain name of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "required": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "computed": true + }, + "id_attribute": { + "type": "string", + "description": "The identifier of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "mac": { + "type": "string", + "description": "The MAC address of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "The endpoint_tag_mac resource for the 'fvEpMacTag' class", + "description_kind": "markdown" + } + }, + "aci_epg_to_contract": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "application_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "contract_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "contract_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_epg_to_contract_interface": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "application_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "contract_interface_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_epg_to_domain": { + "version": 1, + "block": { + "attributes": { + "allow_micro_seg": { + "type": "bool", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "application_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "binding_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "custom_epg_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "delimiter": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enhanced_lag_policy": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "epg_cos": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "epg_cos_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "instr_imedcy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lag_policy_name": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true, + "computed": true + }, + "netflow_dir": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "netflow_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "num_ports": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port_allocation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "primary_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "primary_encap_inner": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "res_imedcy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "secondary_encap_inner": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "switching_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "vmm_allow_promiscuous": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vmm_forged_transmits": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vmm_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "vmm_mac_changes": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_epg_to_static_path": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "application_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "instr_imedcy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "primary_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_epgs_using_function": { + "version": 1, + "block": { + "attributes": { + "access_generic_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "instr_imedcy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "primary_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_error_disable_recovery": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "edr_event_ids": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "err_dis_recov_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "edr_event": { + "nesting_mode": "list", + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "event": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "recover": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_external_management_network_instance_profile": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the External Management Network Instance Profile object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the External Management Network Instance Profile object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the External Management Network Instance Profile object.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the External Management Network Instance Profile object.", + "description_kind": "markdown", + "required": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the External Management Network Instance Profile object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "priority": { + "type": "string", + "description": "The QoS priority class identifier.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "relation_to_consumed_out_of_band_contracts": { + "nested_type": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the Relation To Consumed Out Of Band Contract object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "out_of_band_contract_name": { + "type": "string", + "description": "The name of the Out Of Band Contract object.", + "description_kind": "markdown", + "required": true + }, + "priority": { + "type": "string", + "description": "The Quality of service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.", + "description_kind": "markdown", + "optional": true, + "computed": true + } + }, + "nesting_mode": "set" + }, + "description": "An external management entity instance profile to an out-of-band binary contract profile. The instance profiles of external management entities can communicate with nodes that are part of out-of-band management endpoint group. To enable this communication, a contract is required between the instance profile and the out-of-band management endpoint group.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "The external_management_network_instance_profile resource for the 'mgmtInstP' class", + "description_kind": "markdown" + } + }, + "aci_external_management_network_subnet": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the External Management Network Subnet object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the External Management Network Subnet object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the External Management Network Subnet object.", + "description_kind": "markdown", + "computed": true + }, + "ip": { + "type": "string", + "description": "The external subnet IP address and subnet mask. This IP address is used for creating an external management entity. The subnet mask for the IP address to be imported from the outside into the fabric. The contracts associated with its parent instance profile (l3ext:InstP) are applied to the subnet.", + "description_kind": "markdown", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the External Management Network Subnet object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the External Management Network Subnet object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "The external_management_network_subnet resource for the 'mgmtSubnet' class", + "description_kind": "markdown" + } + }, + "aci_external_network_instance_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "exception_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3_outside_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_cons": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_cons_if": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_cust_qos_pol": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true, + "computed": true + }, + "relation_fv_rs_intra_epg": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "deprecated": true, + "optional": true, + "computed": true + }, + "relation_fv_rs_prot_by": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_prov": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_sec_inherited": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_l3ext_rs_inst_p_to_nat_mapping_epg": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true, + "computed": true + }, + "relation_l3ext_rs_l3_inst_p_to_dom_p": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_l3ext_rs_inst_p_to_profile": { + "nesting_mode": "set", + "block": { + "attributes": { + "direction": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tn_rtctrl_profile_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tn_rtctrl_profile_name": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true + } + }, + "description_kind": "plain" + }, + "max_items": 2 + } + }, + "description_kind": "plain" + } + }, + "aci_fabric_if_pol": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auto_neg": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fec_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "link_debounce": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "speed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_fabric_node_control": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "control": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "feature_sel": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_fabric_node_member": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ext_pool_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pod_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "role": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "serial": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_fabric_wide_settings": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "disable_ep_dampening": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "domain_validation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_mo_streaming": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_remote_leaf_direct": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enforce_subnet_check": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_opflexp_authenticate_clients": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_opflexp_use_ssl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "opflexp_authenticate_clients": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "opflexp_ssl_protocols": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "opflexp_use_ssl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "policy_sync_node_bringup": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "reallocate_gipo": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "restrict_infra_vlan_traffic": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "unicast_xr_ep_learn_disable": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "validate_overlapping_vlans": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_fc_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fc_rs_vsan_attr": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_fc_rs_vsan_attr_def": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fc_rs_vsan_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_fc_rs_vsan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_dom_vxlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vip_addr_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_fex_bundle_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fex_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_fex_bndl_grp_to_aggr_if": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_mon_fex_infra_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_fex_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_file_remote_path": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_type": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "host": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "identity_private_key_contents": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "identity_private_key_passphrase": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "protocol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_file_rs_a_remote_host_to_epg": { + "type": "string", + "description": "Create relation to fv:ATg", + "description_kind": "plain", + "optional": true + }, + "relation_file_rs_a_remote_host_to_epp": { + "type": "string", + "description": "Create relation to fv:AREpP", + "description_kind": "plain", + "optional": true + }, + "remote_path": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "remote_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "user_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "user_passwd": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_filter": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vz_rs_filt_graph_att": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vz_rs_fwd_r_flt_p_att": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true, + "computed": true + }, + "relation_vz_rs_rev_r_flt_p_att": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_filter_entry": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "apply_to_frag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "arp_opc": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "d_from_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "d_to_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ether_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "icmpv4_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "icmpv6_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prot": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "s_from_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "s_to_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "stateful": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tcp_rules": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_firmware_download_task": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_pass": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dnld_task_flip": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "identity_private_key_contents": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "identity_private_key_passphrase": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "identity_public_key_contents": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "load_catalog_if_exists_and_newer": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "password": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "polling_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "proto": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "url": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "user": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_firmware_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "firmware_group_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_firmware_rs_fwgrpp": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_firmware_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "effective_on_reboot": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ignore_compat": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "internal_label": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "version_check_override": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_function_node": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "conn_consumer_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "conn_provider_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "func_template_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "func_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_copy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_device_interface_consumer_attachment_notification": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_device_interface_consumer_connector_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_device_interface_consumer_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_device_interface_provider_attachment_notification": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_device_interface_provider_connector_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_device_interface_provider_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_service_graph_template_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "managed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_default_scope_to_term": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_vns_rs_node_to_abs_func_prof": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_vns_rs_node_to_cloud_l_dev": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_vns_rs_node_to_l_dev": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_vns_rs_node_to_m_func": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "routing_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sequence_number": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "share_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_global_security": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "block_duration": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "change_count": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "change_during_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "change_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_login_block": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "expiration_warn_time": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "history_count": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_failed_attempts": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_failed_attempts_window": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "maximum_validity_period": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "no_change_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pwd_strength_check": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_aaa_rs_to_user_ep": { + "type": "string", + "description": "Create relation to aaa:UserEp", + "description_kind": "plain", + "optional": true + }, + "session_record_flags": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ui_idle_timeout_seconds": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "webtoken_timeout_seconds": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_hsrp_group_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hello_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hold_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hsrp_group_policy_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "preempt_delay_min": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "preempt_delay_reload": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "preempt_delay_sync": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_hsrp_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "delay": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "reload_delay": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_igmp_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "control": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "group_timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "last_member_count": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "last_member_response_time": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "maximum_mulitcast_entries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "querier_timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "query_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "report_policy_route_map": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "reserved_mulitcast_entries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "response_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "robustness_variable": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "startup_query_count": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "startup_query_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "state_limit_route_map": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "static_report_route_map": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_imported_contract": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vz_rs_if": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_interface_blacklist": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fex_id": { + "type": "number", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "interface": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "node_id": { + "type": "number", + "description_kind": "plain", + "required": true + }, + "pod_id": { + "type": "number", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_interface_config": { + "version": 1, + "block": { + "attributes": { + "admin_state": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "breakout": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "interface": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node": { + "type": "number", + "description_kind": "plain", + "required": true + }, + "operational_associated_group": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "operational_associated_sub_group": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "pc_member": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "pc_port_dn": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "policy_group": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "port_dn": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "port_type": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "role": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_interface_fc_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "automaxspeed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fill_pattern": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rx_bb_credit": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "speed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "trunk_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_ip_sla_monitoring_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "http_uri": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "http_version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "request_data_size": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sla_detect_multiplier": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sla_frequency": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sla_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sla_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "threshold": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "traffic_class_value": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type_of_service": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_isis_domain_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "isis_level_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "isis_level_type": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "lsp_fast_flood": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsp_gen_init_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsp_gen_max_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsp_gen_sec_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mtu": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "redistrib_metric": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spf_comp_init_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spf_comp_max_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spf_comp_sec_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l2_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_extnw_rs_out": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_dom_vxlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_vip_addr_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l2_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "qinq": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vepa": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vlan_scope": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l2_outside": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_l2ext_rs_e_bd": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_l2ext_rs_l2_dom_att": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_l2out_extepg": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "exception_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l2_outside_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_cons": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_cons_if": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_cust_qos_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_intra_epg": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_prot_by": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_prov": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_sec_inherited": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_l2ext_rs_l2_inst_p_to_dom_p": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3_domain_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_extnw_rs_out": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_dom_vxlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_vip_addr_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3_ext_subnet": { + "version": 1, + "block": { + "attributes": { + "aggregate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "external_network_instance_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_l3ext_rs_subnet_to_rt_summ": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "scope": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_l3ext_rs_subnet_to_profile": { + "nesting_mode": "set", + "block": { + "attributes": { + "direction": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tn_rtctrl_profile_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tn_rtctrl_profile_name": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_l3_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bfd_isis": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3_outside": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enforce_rtctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mpls_enabled": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pim": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_l3ext_rs_ectx": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "relation_l3ext_rs_interleak_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_l3ext_rs_l3_dom_att": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "default_route_leak_policy": { + "nesting_mode": "set", + "block": { + "attributes": { + "always": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "criteria": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "scope": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + }, + "relation_l3ext_rs_dampening_pol": { + "nesting_mode": "set", + "block": { + "attributes": { + "af": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tn_rtctrl_profile_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tn_rtctrl_profile_name": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true + } + }, + "description_kind": "plain" + }, + "max_items": 2 + }, + "relation_l3extrs_redistribute_pol": { + "nesting_mode": "set", + "block": { + "attributes": { + "source": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description": "Create relation to rtctrlProfile", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_bfd_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "interface_profile_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_bfd_rs_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_bgp_external_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3_outside_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_bgp_protocol_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_node_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_bgp_rs_best_path_ctrl_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_bgp_rs_bgp_node_ctx_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_consumer_label": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the L3out Consumer Label object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the L3out Consumer Label object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the L3out Consumer Label object.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the L3out Consumer Label object.", + "description_kind": "markdown", + "required": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the L3out Consumer Label object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "owner": { + "type": "string", + "description": "The owner of the L3out Consumer Label object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "owner_key": { + "type": "string", + "description": "The key for enabling clients to own their data for entity correlation.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "owner_tag": { + "type": "string", + "description": "A tag for enabling clients to add their own data. For example, to indicate who created this object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tag": { + "type": "string", + "description": "Specifies the color of a policy label.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "The l3out_consumer_label resource for the 'l3extConsLbl' class", + "description_kind": "markdown" + } + }, + "aci_l3out_floating_svi": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "autostate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "encap_scope": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "if_inst_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ipv6_dad": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ll_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mtu": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_l3ext_rs_dyn_path_att": { + "nesting_mode": "set", + "block": { + "attributes": { + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "enhanced_lag_policy_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "floating_address": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "forged_transmit": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "mac_change": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "promiscuous_mode": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_hsrp_interface_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "config_issues": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "group_af": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "group_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "group_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip_obtain_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3out_hsrp_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_hsrp_rs_group_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_hsrp_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_hsrp_rs_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_hsrp_secondary_vip": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "config_issues": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "l3out_hsrp_interface_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_loopback_interface_profile": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_node_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_ospf_external_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "area_cost": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "area_ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "area_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "area_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3_outside_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "multipod_internal": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_ospf_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_key_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_ospf_rs_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_path_attachment": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "autostate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap_scope": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "if_inst_t": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "ipv6_dad": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ll_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mtu": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_path_attachment_secondary_ip": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dhcp_relay": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ipv6_dad": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3out_path_attachment_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_redistribute_policy": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the L3out Redistribute Policy object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the L3out Redistribute Policy object.", + "description_kind": "markdown", + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "route_control_profile_name": { + "type": "string", + "description": "The name of the Route Control Profile object.", + "description_kind": "markdown", + "required": true + }, + "source": { + "type": "string", + "description": "The source of the L3out Redistribute Policy object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "The l3out_redistribute_policy resource for the 'l3extRsRedistributePol' class", + "description_kind": "markdown" + } + }, + "aci_l3out_route_tag_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_static_route": { + "version": 1, + "block": { + "attributes": { + "aggregate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_node_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_ip_rs_route_track": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "rt_ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_static_route_next_hop": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "nexthop_profile_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "nh_addr": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_ip_rs_nexthop_route_track": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_ip_rs_nh_track_member": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "static_route_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_vpc_member": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ipv6_dad": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_port_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "ll_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "side": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_l4_l7_device": { + "version": 1, + "block": { + "attributes": { + "active": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "context_aware": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "device_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "function_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_copy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "managed": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "promiscuous_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_al_dev_to_phys_dom_p": { + "type": "string", + "description": "Create relation to phys:DomP", + "description_kind": "plain", + "optional": true + }, + "service_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "trunking": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_vns_rs_al_dev_to_dom_p": { + "nesting_mode": "set", + "block": { + "attributes": { + "domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "switching_mode": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description": "Create relation to vmmDomP", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "aci_l4_l7_logical_interface": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enhanced_lag_policy_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_device_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_c_if_att_n": { + "type": [ + "set", + "string" + ], + "description": "Create relation to vnsCIf", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_l4_l7_redirect_health_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_l4_l7_service_graph_template": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_service_graph_template_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "term_cons_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "term_cons_name": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "term_node_cons_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "term_node_prov_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "term_prov_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "term_prov_name": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "ui_template_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_lacp_member_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "priority": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "transmit_rate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_lacp_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_links": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_links": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_ldap_group_map": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_ldap_group_map_rule": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "groupdn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_ldap_group_map_rule_to_group_map": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ldap_group_map_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_ldap_provider": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "attribute": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "basedn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_ssl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor_server": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_password": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_user": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_aaa_rs_prov_to_epp": { + "type": "string", + "description": "Create relation to fv:AREpP", + "description_kind": "plain", + "optional": true + }, + "relation_aaa_rs_sec_prov_to_epg": { + "type": "string", + "description": "Create relation to fv:ATg", + "description_kind": "plain", + "optional": true + }, + "retries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rootdn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ssl_validation_level": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_access_bundle_policy_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lag_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_att_ent_p": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_cdp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_copp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_fc_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_h_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_l2_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_l2_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_l2_port_auth_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_l2_port_security_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_lacp_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_lldp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_macsec_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_mcp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_mon_if_infra_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_qos_dpp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_qos_egress_dpp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_qos_ingress_dpp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_qos_pfc_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_qos_sd_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_span_v_dest_grp": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_span_v_src_grp": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_stormctrl_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_stp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_infra_rs_netflow_monitor_pol": { + "nesting_mode": "set", + "block": { + "attributes": { + "flt_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_access_bundle_policy_sub_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_access_bundle_policy_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port_channel_member": { + "type": "string", + "description": "Create relation to lacp:IfPol", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_access_port_policy_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_att_ent_p": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_cdp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_copp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_dwdm_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_fc_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_h_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_l2_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_l2_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_l2_port_auth_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_l2_port_security_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_lldp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_macsec_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_mcp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_mon_if_infra_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_poe_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_qos_dpp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_qos_egress_dpp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_qos_ingress_dpp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_qos_pfc_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_qos_sd_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_span_v_dest_grp": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_span_v_src_grp": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_stormctrl_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_stp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_infra_rs_netflow_monitor_pol": { + "nesting_mode": "set", + "block": { + "attributes": { + "flt_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_breakout_port_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "brkout_map": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_mon_brkout_infra_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_selector_ids": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_block_ids": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_acc_card_p": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_acc_port_p": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "leaf_selector": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "switch_association_type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "node_block": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "to_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_acc_node_p_grp": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "switch_association_type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_lldp_interface_policy": { + "version": 1, + "block": { + "attributes": { + "admin_rx_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "admin_tx_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_local_user": { + "version": 1, + "block": { + "attributes": { + "account_status": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cert_attribute": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "clear_pwd_history": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "email": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "expiration": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "expires": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "first_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "last_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "otpenable": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "otpkey": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "phone": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pwd": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pwd_life_time": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pwd_update_required": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rbac_string": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "unix_user_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_logical_device_context": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "context": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrct_name_or_lbl": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "graph_name_or_lbl": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_name_or_lbl": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "relation_vns_rs_l_dev_ctx_to_l_dev": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "relation_vns_rs_l_dev_ctx_to_rtr_cfg": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_logical_interface_context": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "conn_name_or_lbl": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3_dest": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_device_context_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "permit_log": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_l_if_ctx_to_bd": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_vns_rs_l_if_ctx_to_cust_qos_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_vns_rs_l_if_ctx_to_inst_p": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_l_if_ctx_to_l_if": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_vns_rs_l_if_ctx_to_out": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_vns_rs_l_if_ctx_to_out_def": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_l_if_ctx_to_svc_e_pg_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_vns_rs_l_if_ctx_to_svc_redirect_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_logical_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_node_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_l3ext_rs_arp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_l3ext_rs_egress_qos_dpp_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_l3ext_rs_igmp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_l3ext_rs_ingress_qos_dpp_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_l3ext_rs_l_if_p_cust_qos_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_l3ext_rs_nd_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_l3ext_rs_pim_ip_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_l3ext_rs_pim_ipv6_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_l3ext_rs_l_if_p_to_netflow_monitor_pol": { + "nesting_mode": "set", + "block": { + "attributes": { + "flt_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tn_netflow_monitor_pol_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tn_netflow_monitor_pol_name": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_logical_node_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "config_issues": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3_outside_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_logical_node_to_fabric_node": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "config_issues": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_node_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "rtr_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rtr_id_loop_back": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_login_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provider_group": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "realm": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "realm_sub_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_login_domain_provider": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "order": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_maintenance_group_node": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pod_maintenance_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "to_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_maintenance_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "graceful": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ignore_compat": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "internal_label": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "notif_cond": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_maint_rs_pol_notif": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_maint_rs_pol_scheduler": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_trig_rs_triggerable": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "run_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "version_check_override": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_managed_node_connectivity_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_match_community_terms": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_rule_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "match_community_factors": { + "nesting_mode": "set", + "block": { + "attributes": { + "community": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "scope": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Create Community Factors", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_match_regex_community_terms": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "community_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_rule_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "regex": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_match_route_destination_rule": { + "version": 1, + "block": { + "attributes": { + "aggregate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "greater_than_mask": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "less_than_mask": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_rule_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_match_rule": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_mcp_instance_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "init_delay_time": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "loop_detect_mult": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "loop_protect_act": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tx_freq": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tx_freq_msec": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_mgmt_preference": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "interface_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_mgmt_zone": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "managed_node_connectivity_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_mgmt_rs_addr_inst": { + "type": "string", + "description": "Create relation to fvns:AddrInst", + "description_kind": "plain", + "optional": true + }, + "relation_mgmt_rs_in_b": { + "type": "string", + "description": "Create relation to mgmt:InB", + "description_kind": "plain", + "optional": true + }, + "relation_mgmt_rs_inb_epg": { + "type": "string", + "description": "Create relation to mgmt:InB", + "description_kind": "plain", + "optional": true + }, + "relation_mgmt_rs_oo_b": { + "type": "string", + "description": "Create relation to mgmt:OoB", + "description_kind": "plain", + "optional": true + }, + "relation_mgmt_rs_oob_epg": { + "type": "string", + "description": "Create relation to mgmt:OoB", + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_miscabling_protocol_interface_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_monitoring_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_multicast_pool": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "multicast_address_block": { + "nesting_mode": "set", + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dn": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "from": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_multicast_pool_block": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "multicast_pool_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_node_block": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "switch_association_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "to_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_node_block_firmware": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "firmware_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "from_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_node_mgmt_epg": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "exception_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "management_profile_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_cons": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_cons_if": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_cust_qos_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_intra_epg": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_prot_by": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_prov": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_sec_inherited": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_mgmt_rs_in_b_st_node": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_mgmt_rs_mgmt_bd": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_mgmt_rs_oo_b_ctx": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_mgmt_rs_oo_b_prov": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_mgmt_rs_oo_b_st_node": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_ospf_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cost": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dead_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hello_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "nw_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pfx_suppress": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rexmit_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "xmit_delay": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_ospf_route_summarization": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cost": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "inter_area_enabled": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_ospf_timers": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bw_ref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dist": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "gr_ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsa_arrival_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsa_gp_pacing_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsa_hold_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsa_max_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsa_start_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_ecmp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_lsa_action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_lsa_num": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_lsa_reset_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_lsa_sleep_cnt": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_lsa_sleep_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_lsa_thresh": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spf_hold_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spf_init_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spf_max_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_out_of_band_contract": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the Out Of Band Contract object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the Out Of Band Contract object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Out Of Band Contract object.", + "description_kind": "markdown", + "computed": true + }, + "intent": { + "type": "string", + "description": "The Install Rules or Estimate Number of Rules.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the Out Of Band Contract object.", + "description_kind": "markdown", + "required": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the Out Of Band Contract object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "owner_key": { + "type": "string", + "description": "The key for enabling clients to own their data for entity correlation.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "owner_tag": { + "type": "string", + "description": "A tag for enabling clients to add their own data. For example, to indicate who created this object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "priority": { + "type": "string", + "description": "The priority of the Out Of Band Contract object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "scope": { + "type": "string", + "description": "Represents the scope of this contract. If the scope is set as application-profile, the epg can only communicate with epgs in the same application-profile.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description": "The target DSCP value of the Out Of Band Contract object.", + "description_kind": "markdown", + "optional": true, + "computed": true + } + }, + "description": "The out_of_band_contract resource for the 'vzOOBBrCP' class", + "description_kind": "markdown" + } + }, + "aci_pbr_l1_l2_destination": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "destination_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pod_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "policy_based_redirect_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "relation_vns_rs_l1_l2_redirect_health_group": { + "type": "string", + "description": "Create relation to vns:RedirectHealthGroup", + "description_kind": "plain", + "optional": true + }, + "relation_vns_rs_to_c_if": { + "type": "string", + "description": "Create relation to vns:CIf", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_physical_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_dom_vxlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_vip_addr_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_pim_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true, + "sensitive": true + }, + "auth_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "control_state": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "designated_router_delay": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "designated_router_priority": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hello_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "inbound_join_prune_filter_policy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "join_prune_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "neighbor_filter_policy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "outbound_join_prune_filter_policy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_pim_route_map_entry": { + "version": 0, + "block": { + "attributes": { + "action": { + "type": "string", + "description": "The route action of the Pim Route Map Entry object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description": "The annotation of the Pim Route Map Entry object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the Pim Route Map Entry object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "group_ip": { + "type": "string", + "description": "The group ip of the Pim Route Map Entry object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Pim Route Map Entry object.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the Pim Route Map Entry object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the Pim Route Map Entry object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "order": { + "type": "string", + "description": "PIM route map entry order.", + "description_kind": "markdown", + "required": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "rendezvous_point_ip": { + "type": "string", + "description": "The rendezvous point ip of the Pim Route Map Entry object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "source_ip": { + "type": "string", + "description": "The source ip of the Pim Route Map Entry object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "The pim_route_map_entry resource for the 'pimRouteMapEntry' class", + "description_kind": "markdown" + } + }, + "aci_pim_route_map_policy": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the Pim Route Map Policy object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the Pim Route Map Policy object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Pim Route Map Policy object.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the Pim Route Map Policy object.", + "description_kind": "markdown", + "required": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the Pim Route Map Policy object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "owner_key": { + "type": "string", + "description": "The key for enabling clients to own their data for entity correlation.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "owner_tag": { + "type": "string", + "description": "A tag for enabling clients to add their own data. For example, to indicate who created this object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "The pim_route_map_policy resource for the 'pimRouteMapPol' class", + "description_kind": "markdown" + } + }, + "aci_pod_maintenance_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fwtype": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pod_maintenance_group_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_maint_rs_mgrpp": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_port_security_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "maximum": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "violation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_port_tracking": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "delay": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "include_apic_ports": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "minlinks": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_power_supply_redundancy_policy": { + "version": 1, + "block": { + "attributes": { + "administrative_state": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_qos_instance_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "etrap_age_timer": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "etrap_bw_thresh": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "etrap_byte_ct": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "etrap_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_flush_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_flush_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "uburst_spine_queues": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "uburst_tor_queues": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_radius_provider": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_protocol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor_server": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_password": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_user": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_aaa_rs_prov_to_epp": { + "type": "string", + "description": "Create relation to fv:AREpP", + "description_kind": "plain", + "optional": true + }, + "relation_aaa_rs_sec_prov_to_epg": { + "type": "string", + "description": "Create relation to fv:ATg", + "description_kind": "plain", + "optional": true + }, + "retries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_radius_provider_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_ranges": { + "version": 1, + "block": { + "attributes": { + "alloc_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "role": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "vlan_pool_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_recurring_window": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "concur_cap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "day": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hour": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "minute": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_upg_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "proc_break": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "proc_cap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "scheduler_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "time_cap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_relation_to_consumed_out_of_band_contract": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the Relation To Consumed Out Of Band Contract object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Relation To Consumed Out Of Band Contract object.", + "description_kind": "markdown", + "computed": true + }, + "out_of_band_contract_name": { + "type": "string", + "description": "The name of the Out Of Band Contract object.", + "description_kind": "markdown", + "required": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "priority": { + "type": "string", + "description": "The Quality of service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "The relation_to_consumed_out_of_band_contract resource for the 'mgmtRsOoBCons' class", + "description_kind": "markdown" + } + }, + "aci_rest": { + "version": 1, + "block": { + "attributes": { + "class_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "content": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "dn": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "path": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "payload": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_rest_managed": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the ACI object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "class_name": { + "type": "string", + "description": "Which class object is being created, eg. fvTenant. (Make sure there is no colon in the classname)", + "description_kind": "markdown", + "required": true + }, + "content": { + "type": [ + "map", + "string" + ], + "description": "Map of key-value pairs those needed to be passed to the Model object as parameters. Make sure the key name matches the name with the object parameter in ACI.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "dn": { + "type": "string", + "description": "Distinguished name of object being managed including its relative name, e.g. uni/tn-EXAMPLE_TENANT.", + "description_kind": "markdown", + "required": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the object.", + "description_kind": "markdown", + "computed": true + } + }, + "block_types": { + "child": { + "nesting_mode": "set", + "block": { + "attributes": { + "class_name": { + "type": "string", + "description": "Class name of child object.", + "description_kind": "markdown", + "required": true + }, + "content": { + "type": [ + "map", + "string" + ], + "description": "Map of key-value pairs which represents the attributes for the child object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "rn": { + "type": "string", + "description": "The relative name of the child object.", + "description_kind": "markdown", + "required": true + } + }, + "description": "List of children.", + "description_kind": "markdown" + } + } + }, + "description": "Manages ACI Model Objects via REST API calls. This resource can only manage a single API object and its direct children. It is able to read the state and therefore reconcile configuration drift.", + "description_kind": "markdown" + } + }, + "aci_route_control_context": { + "version": 1, + "block": { + "attributes": { + "action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "order": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_rtctrl_rs_ctx_p_to_subj_p": { + "type": [ + "set", + "string" + ], + "description": "Create relation to rtctrl:SubjP", + "description_kind": "plain", + "optional": true + }, + "route_control_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "set_rule": { + "type": "string", + "description": "Create relation to rtctrl:AttrP", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_route_control_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "route_control_profile_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_rsa_provider": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_protocol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor_server": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_password": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_user": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_aaa_rs_prov_to_epp": { + "type": "string", + "description": "Create relation to fv:AREpP", + "description_kind": "plain", + "optional": true + }, + "relation_aaa_rs_sec_prov_to_epg": { + "type": "string", + "description": "Create relation to fv:ATg", + "description_kind": "plain", + "optional": true + }, + "retries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_saml_provider": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "entity_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "gui_banner_message": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "https_proxy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id_p": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "metadata_url": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor_server": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_password": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_user": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_aaa_rs_prov_to_epp": { + "type": "string", + "description": "Create relation to fv:AREpP", + "description_kind": "plain", + "optional": true + }, + "relation_aaa_rs_sec_prov_to_epg": { + "type": "string", + "description": "Create relation to fv:ATg", + "description_kind": "plain", + "optional": true + }, + "retries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sig_alg": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "want_assertions_encrypted": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "want_assertions_signed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "want_requests_signed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "want_response_signed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_saml_provider_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_service_redirect_backup_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_service_redirect_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "anycast_enabled": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dest_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hashing_algorithm": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_threshold_percent": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_threshold_percent": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "program_local_pod_only": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_ipsla_monitoring_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "resilient_hash_enabled": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "threshold_down_action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "threshold_enable": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_snmp_community": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_snmp_user": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "authorization_key": { + "type": "string", + "description_kind": "plain", + "required": true, + "sensitive": true + }, + "authorization_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "privacy_key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true, + "sensitive": true + }, + "privacy_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "snmp_policy_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_span_destination_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_span_source_group": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_span_rs_src_grp_to_filter_grp": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_span_sourcedestination_group_match_label": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "span_source_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_spanning_tree_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_spine_access_port_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_sp_acc_grp": { + "type": "string", + "description": "Create relation to infra:SpAccGrp", + "description_kind": "plain", + "optional": true + }, + "spine_access_port_selector_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "spine_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_spine_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_spine_interface_profile_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spine_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_spine_port_policy_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_att_ent_p": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_cdp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_copp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_h_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_macsec_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_spine_port_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spine_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain", + "deprecated": true + } + }, + "aci_spine_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_block_ids": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_sp_acc_port_p": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "spine_selector_ids": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "spine_selector": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "switch_association_type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "node_block": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "to_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_spine_switch_association": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_spine_acc_node_p_grp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spine_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "spine_switch_association_type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_spine_switch_policy_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_iacl_spine_profile": { + "type": "string", + "description": "Create relation to iacl:SpineProfile", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_spine_bfd_ipv4_inst_pol": { + "type": "string", + "description": "Create relation to bfd:Ipv4InstPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_spine_bfd_ipv6_inst_pol": { + "type": "string", + "description": "Create relation to bfd:Ipv6InstPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_spine_copp_profile": { + "type": "string", + "description": "Create relation to copp:SpineProfile", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_spine_p_grp_to_cdp_if_pol": { + "type": "string", + "description": "Create relation to cdp:IfPol", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_spine_p_grp_to_lldp_if_pol": { + "type": "string", + "description": "Create relation to lldp:IfPol", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_static_node_mgmt_address": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "gw": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "management_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "t_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "v6_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "v6_gw": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_subnet": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "anycast_mac": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "ip_data_plane_learning": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "next_hop_addr": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "preferred": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_bd_subnet_to_out": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_bd_subnet_to_profile": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_nd_pfx_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "scope": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "virtual": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "msnlb": { + "nesting_mode": "set", + "block": { + "attributes": { + "group": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "aci_taboo_contract": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_tacacs_accounting": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_tacacs_accounting_destination": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_protocol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "host": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_file_rs_a_remote_host_to_epg": { + "type": "string", + "description": "Create relation to fv:ATg", + "description_kind": "plain", + "optional": true + }, + "relation_file_rs_a_remote_host_to_epp": { + "type": "string", + "description": "Create relation to fv:AREpP", + "description_kind": "plain", + "optional": true + }, + "tacacs_accounting_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_tacacs_provider": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_protocol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor_server": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_password": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_user": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_aaa_rs_prov_to_epp": { + "type": "string", + "description": "Create relation to fv:AREpP", + "description_kind": "plain", + "optional": true + }, + "relation_aaa_rs_sec_prov_to_epg": { + "type": "string", + "description": "Create relation to fv:ATg", + "description_kind": "plain", + "optional": true + }, + "retries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_tacacs_provider_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_tacacs_source": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "incl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_sev": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_tacacs_rs_dest_group": { + "type": "string", + "description": "Create relation to tacacs:Group", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_tag": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Tag object.", + "description_kind": "markdown", + "computed": true + }, + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "description": "The tag resource for the 'tagTag' class", + "description_kind": "markdown" + } + }, + "aci_tenant": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_tenant_mon_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_tn_deny_rule": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_tenant_to_cloud_account": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_account_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_trigger_scheduler": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_user_security_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "local_user_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_user_security_domain_role": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "priv_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "user_domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_vlan_encapsulationfor_vxlan_traffic": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "attachable_access_entity_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_vlan_pool": { + "version": 1, + "block": { + "attributes": { + "alloc_mode": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_vmm_controller": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dvs_version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "host_or_ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "inventory_trig_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "msft_config_err_msg": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "msft_config_issues": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "n1kv_stats_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vmm_rs_acc": { + "type": "string", + "description": "Create relation to vmm:UsrAccP", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_ctrlr_p_mon_pol": { + "type": "string", + "description": "Create relation to mon:InfraPol", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_mcast_addr_ns": { + "type": "string", + "description": "Create relation to fvns:McastAddrInstP", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_mgmt_e_pg": { + "type": "string", + "description": "Create relation to fv:EPg", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_to_ext_dev_mgr": { + "type": [ + "set", + "string" + ], + "description": "Create relation to extdev:MgrP", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_vxlan_ns": { + "type": "string", + "description": "Create relation to fvns:VxlanInstP", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_vxlan_ns_def": { + "type": "string", + "description": "Create relation to fvns:AInstP", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "root_cont_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "scope": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "seq_num": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "stats_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vmm_domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "vxlan_depl_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_vmm_rs_vmm_ctrlr_p": { + "nesting_mode": "set", + "block": { + "attributes": { + "epg_depl_pref": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description": "Create relation to vmmCtrlrP", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_vmm_credential": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pwd": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "usr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vmm_domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_vmm_domain": { + "version": 1, + "block": { + "attributes": { + "access_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "arp_learning": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ave_time_out": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "config_infra_pg": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl_knob": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "delimiter": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_ave": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_vm_folder": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enf_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ep_inventory_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ep_ret_time": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hv_avail_monitor": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mcast_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_encap_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provider_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "relation_infra_rs_dom_vxlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vip_addr_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_default_cdp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vmm_rs_default_fw_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vmm_rs_default_l2_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vmm_rs_default_lacp_lag_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vmm_rs_default_lldp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vmm_rs_default_stp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vmm_rs_dom_mcast_addr_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_pref_enhanced_lag_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_vpc_domain_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dead_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_vpc_explicit_protection_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "switch1": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "switch2": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "vpc_domain_policy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vpc_explicit_protection_group_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_vrf": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bd_enforced_enable": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip_data_plane_learning": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "knw_mcast_act": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pc_enf_dir": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pc_enf_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_bgp_ctx_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_ctx_mcast_to": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_ctx_mon_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_fv_rs_ctx_to_ep_ret": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_ctx_to_ext_route_tag_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_ospf_ctx_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_vrf_validation_pol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "relation_fv_rs_ctx_to_bgp_ctx_af_pol": { + "nesting_mode": "set", + "block": { + "attributes": { + "af": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tn_bgp_ctx_af_pol_name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "relation_fv_rs_ctx_to_eigrp_ctx_af_pol": { + "nesting_mode": "set", + "block": { + "attributes": { + "af": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tn_eigrp_ctx_af_pol_name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "relation_fv_rs_ctx_to_ospf_ctx_pol": { + "nesting_mode": "set", + "block": { + "attributes": { + "af": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tn_ospf_ctx_pol_name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_vrf_fallback_route_group": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the VRF Fallback Route Group object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the VRF Fallback Route Group object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the VRF Fallback Route Group object.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the VRF Fallback Route Group object.", + "description_kind": "markdown", + "required": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the VRF Fallback Route Group object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_fallback_route_group_members": { + "nested_type": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "fallback_member": { + "type": "string", + "description": "The address of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "optional": true, + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "The vrf_fallback_route_group resource for the 'fvFBRGroup' class", + "description_kind": "markdown" + } + }, + "aci_vrf_fallback_route_group_member": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "fallback_member": { + "type": "string", + "description": "The address of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "required": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "required": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "The vrf_fallback_route_group_member resource for the 'fvFBRMember' class", + "description_kind": "markdown" + } + }, + "aci_vrf_leak_epg_bd_subnet": { + "version": 1, + "block": { + "attributes": { + "allow_l3out_advertisement": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "leak_to": { + "nesting_mode": "set", + "block": { + "attributes": { + "allow_l3out_advertisement": { + "type": "string", + "description": "Must be set as true for the Cloud APIC", + "description_kind": "plain", + "optional": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_vrf_snmp_context": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_vrf_snmp_context_community": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_snmp_context_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain", + "deprecated": true + } + }, + "aci_vrf_to_bgp_address_family_context": { + "version": 1, + "block": { + "attributes": { + "address_family": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bgp_address_family_context_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_vsan_pool": { + "version": 1, + "block": { + "attributes": { + "alloc_mode": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_vswitch_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vmm_rs_vswitch_override_cdp_if_pol": { + "type": "string", + "description": "Create relation to cdp:IfPol", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_vswitch_override_fw_pol": { + "type": "string", + "description": "Create relation to nws:FwPol", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_vswitch_override_lacp_pol": { + "type": "string", + "description": "Create relation to lacp:LagPol", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_vswitch_override_lldp_if_pol": { + "type": "string", + "description": "Create relation to lldp:IfPol", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_vswitch_override_mcp_if_pol": { + "type": "string", + "description": "Create relation to mcp:IfPol", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_vswitch_override_mtu_pol": { + "type": "string", + "description": "Create relation to l2:InstPol", + "description_kind": "plain", + "optional": true + }, + "relation_vmm_rs_vswitch_override_stp_pol": { + "type": "string", + "description": "Create relation to stp:IfPol", + "description_kind": "plain", + "optional": true + }, + "vmm_domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "relation_vmm_rs_vswitch_exporter_pol": { + "nesting_mode": "set", + "block": { + "attributes": { + "active_flow_time_out": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "idle_flow_time_out": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "sampling_rate": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description": "Create relation to netflowVmmExporterPol", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_vxlan_pool": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_x509_certificate": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "data": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "local_user_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + } + }, + "data_source_schemas": { + "aci_aaa_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_aaa_domain_relationship": { + "version": 1, + "block": { + "attributes": { + "aaa_domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_aaep_to_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "attachable_access_entity_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "domain_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_access_generic": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "attachable_access_entity_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_access_group": { + "version": 1, + "block": { + "attributes": { + "access_port_selector_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fex_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_access_port_block": { + "version": 1, + "block": { + "attributes": { + "access_port_selector_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_card": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_acc_bndl_subgrp": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "to_card": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_access_port_selector": { + "version": 1, + "block": { + "attributes": { + "access_port_selector_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_acc_base_grp": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_access_sub_port_block": { + "version": 1, + "block": { + "attributes": { + "access_port_selector_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_card": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_sub_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to_card": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to_sub_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_access_switch_policy_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_bfd_ipv4_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_bfd_ipv6_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_bfd_mh_ipv4_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_bfd_mh_ipv6_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_equipment_flash_config_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_fc_fabric_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_fc_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_iacl_leaf_profile": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_l2_node_auth_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_leaf_copp_profile": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_leaf_p_grp_to_cdp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_leaf_p_grp_to_lldp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_mon_node_infra_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_mst_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_netflow_node_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_poe_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_topoctrl_fast_link_failover_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_topoctrl_fwd_scale_prof_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_action_rule_additional_communities": { + "version": 1, + "block": { + "attributes": { + "action_rule_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "community": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "set_criteria": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_action_rule_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "multipath": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "next_hop_propagation": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "set_as_path_prepend_last_as": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "set_communities": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "set_dampening": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "set_metric": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "set_metric_type": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "set_next_hop": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "set_preference": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "set_route_tag": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "set_weight": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "set_as_path_prepend_as": { + "nesting_mode": "set", + "block": { + "attributes": { + "asn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "order": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_annotation": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Annotation object.", + "description_kind": "markdown", + "computed": true + }, + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "description": "The annotation datasource for the 'tagAnnotation' class", + "description_kind": "markdown" + } + }, + "aci_any": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vz_rs_any_to_cons": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_vz_rs_any_to_cons_if": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_vz_rs_any_to_prov": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_application_epg": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "application_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "exception_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fwd_ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "has_mcast_source": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_attr_based_epg": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pc_enf_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "shutdown": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_application_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_attachable_access_entity_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_dom_p": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_authentication_properties": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "def_role_policy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ping_check": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "retries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_autonomous_system_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "asn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_bd_dhcp_label": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bridge_domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "owner": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_bfd_interface_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "detect_mult": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "echo_admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "echo_rx_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_rx_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_tx_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bfd_multihop_interface_policy": { + "version": 1, + "block": { + "attributes": { + "admin_state": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "detection_multiplier": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_receive_interval": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "min_transmit_interval": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bfd_multihop_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "interface_profile_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "key_id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "logical_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_bfd_rs_mh_if_pol": { + "type": "string", + "description": "Create relation to bfd:MhIfPol", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_bfd_multihop_node_policy": { + "version": 1, + "block": { + "attributes": { + "admin_state": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "detection_multiplier": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_rx_interval": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "min_tx_interval": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bgp_address_family_context": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "e_dist": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "i_dist": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "local_dist": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_ecmp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_ecmp_ibgp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bgp_best_path_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bgp_peer_connectivity_profile": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "addr_t_ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "allowed_self_as_cnt": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "as_number": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "local_asn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "local_asn_propagate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_node_profile_dn": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "password": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "peer_ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "private_a_sctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ttl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "weight": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_bgp_peer_prefix": { + "version": 1, + "block": { + "attributes": { + "action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_pfx": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "restart_time": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "thresh": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_bgp_route_control_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "route_control_profile_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain", + "deprecated": true + } + }, + "aci_bgp_route_summarization": { + "version": 2, + "block": { + "attributes": { + "address_type_controls": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "attrmap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bgp_timers": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "gr_ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hold_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ka_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_as_limit": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "stale_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_bridge_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "arp_flood": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bridge_domain_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ep_clear": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ep_move_detect_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "host_based_routing": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "intersite_bum_traffic_allow": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "intersite_l2_stretch": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip_learning": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ipv6_mcast_allow": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "limit_ip_learn_to_subnets": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ll_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mcast_allow": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "multi_dst_pkt_act": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "optimize_wan_bandwidth": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "unicast_route": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "unk_mac_ucast_act": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "unk_mcast_act": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "v6unk_mcast_act": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vmac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cdp_interface_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_client_end_point": { + "version": 1, + "block": { + "attributes": { + "allow_empty_result": { + "type": "bool", + "description_kind": "plain", + "optional": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vlan": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "fvcep_objects": { + "nesting_mode": "list", + "block": { + "attributes": { + "application_profile_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "base_epg": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "endpoint_path": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "epg_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "esg_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "instance_profile_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ips": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l2out_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vlan": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_account": { + "version": 1, + "block": { + "attributes": { + "access_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "account_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "vendor": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_ad": { + "version": 1, + "block": { + "attributes": { + "active_directory_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_applicationcontainer": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_availability_zone": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_providers_region_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_aws_provider": { + "version": 1, + "block": { + "attributes": { + "access_key_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "account_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "email": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "http_proxy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_account_in_org": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_trusted": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provider_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "region": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "secret_access_key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_cidr_pool": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_context_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "primary": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_context_profile": { + "version": 1, + "block": { + "attributes": { + "access_policy_type": { + "type": "string", + "description": "Cloud context access policy type", + "description_kind": "plain", + "optional": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_brownfield": { + "type": "string", + "description": "Import Brownfield Virtual Network", + "description_kind": "plain", + "optional": true + }, + "cloud_vendor": { + "type": "string", + "description": "Name of the vendor", + "description_kind": "plain", + "optional": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hub_network": { + "type": "string", + "description": "hub network to enable transit gateway", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "primary_cidr": { + "type": "string", + "description": "Primary CIDR block", + "description_kind": "plain", + "optional": true + }, + "region": { + "type": "string", + "description": "region", + "description_kind": "plain", + "optional": true + }, + "relation_cloud_rs_ctx_to_flow_log": { + "type": "string", + "description": "Create relation to cloudAwsFlowLogPol", + "description_kind": "plain", + "optional": true + }, + "relation_cloud_rs_to_ctx": { + "type": "string", + "description": "Create relation to fvCtx", + "description_kind": "plain", + "optional": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "type": { + "type": "string", + "description": "component type", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_credentials": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "client_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "email": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "http_proxy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rsa_private_key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_domain_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "site_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_endpoint_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_expression": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_endpoint_selectorfor_external_epgs": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_external_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_shared": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_expression": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "subnet": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_epg": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_applicationcontainer_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "exception_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_external_epg": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_applicationcontainer_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "exception_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "route_reachability": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_external_network": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_vendor": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hub_network_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "regions": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "router_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_external_network_vpn_network": { + "version": 1, + "block": { + "attributes": { + "aci_cloud_external_network_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "remote_site_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "remote_site_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "ipsec_tunnel": { + "nesting_mode": "set", + "block": { + "attributes": { + "bgp_peer_asn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "ike_version": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "pre_shared_key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "public_ip_address": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "source_interfaces": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "subnet_pool_name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_ipsec_tunnel_subnet_pool": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "subnet_pool": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_l4_l7_native_load_balancer": { + "version": 1, + "block": { + "attributes": { + "aaa_domain_dn": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "active_active": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "allow_all": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "auto_scaling": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "cloud_l4l7_load_balancer_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "context_aware": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "custom_resource_group": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "device_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "function_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "instance_count": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "is_copy": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "is_instantiation": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "is_static_ip": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "l4l7_device_application_security_group": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "l4l7_third_party_device": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "managed": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "max_instance_count": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "min_instance_count": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "native_lb_name": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "package_model": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "promiscuous_mode": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_cloud_rs_ldev_to_cloud_subnet": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "scheme": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "service_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "size": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "sku": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "static_ip_addresses": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "target_mode": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "trunking": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_l4_l7_third_party_device": { + "version": 1, + "block": { + "attributes": { + "aaa_domain_dn": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "active_active": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "context_aware": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "custom_resource_group": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "device_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "function_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "instance_count": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "interface_selectors": { + "type": [ + "set", + [ + "object", + { + "allow_all": "string", + "end_point_selectors": [ + "set", + [ + "object", + { + "match_expression": "string", + "name": "string" + } + ] + ], + "name": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "is_copy": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "is_instantiation": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "l4l7_device_application_security_group": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "l4l7_third_party_device": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "managed": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "package_model": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "promiscuous_mode": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_cloud_rs_ldev_to_ctx": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "service_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "target_mode": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "trunking": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_private_link_label": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_provider_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vendor": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_providers_region": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_provider_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_service_endpoint_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_service_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_expression": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_service_epg": { + "version": 1, + "block": { + "attributes": { + "access_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "azure_private_endpoint": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "cloud_application_container_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "cloud_service_epg_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "custom_service_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "deployment_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "label_match_criteria": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "preferred_group_member": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_cloud_rs_cloud_epg_ctx": { + "type": "string", + "description": "Query fv:Ctx relationship object", + "description_kind": "plain", + "computed": true + }, + "relation_fv_rs_cons": { + "type": [ + "set", + [ + "object", + { + "prio": "string", + "target_dn": "string" + } + ] + ], + "description": "Query vzBrCP relationship object", + "description_kind": "plain", + "computed": true + }, + "relation_fv_rs_cons_if": { + "type": [ + "set", + [ + "object", + { + "prio": "string", + "target_dn": "string" + } + ] + ], + "description": "Query vzCPIf relationship object", + "description_kind": "plain", + "computed": true + }, + "relation_fv_rs_cust_qos_pol": { + "type": "string", + "description": "Query qos:CustomPol relationship object", + "description_kind": "plain", + "computed": true + }, + "relation_fv_rs_graph_def": { + "type": [ + "set", + "string" + ], + "description": "Query vz:GraphCont relationship object", + "description_kind": "plain", + "computed": true + }, + "relation_fv_rs_intra_epg": { + "type": [ + "set", + "string" + ], + "description": "Query vz:BrCP relationship object", + "description_kind": "plain", + "computed": true + }, + "relation_fv_rs_prot_by": { + "type": [ + "set", + "string" + ], + "description": "Query vz:Taboo relationship object", + "description_kind": "plain", + "computed": true + }, + "relation_fv_rs_prov": { + "type": [ + "set", + [ + "object", + { + "label_match_criteria": "string", + "prio": "string", + "target_dn": "string" + } + ] + ], + "description": "Query vzBrCP relationship object", + "description_kind": "plain", + "computed": true + }, + "relation_fv_rs_prov_def": { + "type": [ + "set", + "string" + ], + "description": "Query vz:CtrctEPgCont relationship object", + "description_kind": "plain", + "computed": true + }, + "relation_fv_rs_sec_inherited": { + "type": [ + "set", + "string" + ], + "description": "Query fv:EPg relationship object", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_subnet": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_cidr_pool_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_cloud_rs_subnet_to_ctx": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_cloud_rs_subnet_to_flow_log": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "scope": { + "type": [ + "list", + "string" + ], + "description": "Use the sorted scope list to handle identical changes", + "description_kind": "plain", + "computed": true + }, + "subnet_group_label": { + "type": "string", + "description": "Only applicable to the GCP vendor", + "description_kind": "plain", + "computed": true + }, + "usage": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "zone": { + "type": "string", + "description": "Only applicable to the AWS vendor", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_template_region_detail": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hub_networking": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_vpn_gateway": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_context_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "cloud_router_profile_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "num_instances": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_cloud_vrf_leak_routes": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "leak_to": { + "nesting_mode": "set", + "block": { + "attributes": { + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_concrete_device": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_device_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vm_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vmm_controller_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_concrete_interface": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "concrete_device_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_c_if_path_att": { + "type": "string", + "description": "Create relation to fabric:PathEp", + "description_kind": "plain", + "optional": true + }, + "vnic_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_configuration_export_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "format": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "include_secure_fields": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_snapshot_count": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "snapshot": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_configuration_import_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fail_on_decrypt_errors": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "file_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "import_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "import_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "snapshot": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_connection": { + "version": 1, + "block": { + "attributes": { + "adj_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "conn_dir": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "conn_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "direct_connect": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_service_graph_template_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "unicast_route": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_console_authentication": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provider_group": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "realm": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "realm_sub_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_contract": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "scope": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_contract_subject": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "apply_both_directions": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "cons_match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "contract_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prov_match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rev_flt_ports": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "consumer_to_provider": { + "nesting_mode": "set", + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vz_rs_in_term_graph_att": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_vz_rs_filt_att": { + "nesting_mode": "set", + "block": { + "attributes": { + "action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "directives": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "priority_override": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Represent a relation to vzFilter", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "provider_to_consumer": { + "nesting_mode": "set", + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vz_rs_out_term_graph_att": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_vz_rs_filt_att": { + "nesting_mode": "set", + "block": { + "attributes": { + "action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "directives": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "priority_override": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Represent a relation to vzFilter", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_contract_subject_filter": { + "version": 1, + "block": { + "attributes": { + "action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "contract_subject_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "directives": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "priority_override": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_contract_subject_one_way_filter": { + "version": 1, + "block": { + "attributes": { + "action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "contract_subject_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "directives": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "priority_override": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tn_vz_filter_name": { + "type": "string", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_coop_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_default_authentication": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fallback_check": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provider_group": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "realm": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "realm_sub_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_destination_of_redirected_traffic": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dest_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "ip2": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pod_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_redirect_health_group": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "service_redirect_policy_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_dhcp_option": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "data": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dhcp_option_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dhcp_option_policy_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_dhcp_option_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_dhcp_relay_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "owner": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_duo_provider_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_choice": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ldap_group_map_ref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provider_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sec_fac_auth_methods": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_encryption_key": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "passphrase_key_derivation_version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "strong_encryption_enabled": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_end_point_retention_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bounce_age_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bounce_trig": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hold_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "local_ep_age_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "move_freq": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "remote_ep_age_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_controls": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hold_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rogue_ep_detect_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rogue_ep_detect_mult": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_ip_aging_profile": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_loop_protection": { + "version": 1, + "block": { + "attributes": { + "action": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "loop_detect_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "loop_detect_mult": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_security_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "application_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pc_enf_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_security_group_epg_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "endpoint_security_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_security_group_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "endpoint_security_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_expression": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_security_group_tag_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "endpoint_security_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_key": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "match_value": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "value_operator": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_endpoint_tag_ip": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "computed": true + }, + "id_attribute": { + "type": "string", + "description": "The identifier of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "computed": true + }, + "ip": { + "type": "string", + "description": "The IP address of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "computed": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "vrf_name": { + "type": "string", + "description": "The VRF name of the Endpoint Tag Ip object.", + "description_kind": "markdown", + "required": true + } + }, + "description": "The endpoint_tag_ip datasource for the 'fvEpIpTag' class", + "description_kind": "markdown" + } + }, + "aci_endpoint_tag_mac": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "bd_name": { + "type": "string", + "description": "The bridge domain name of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "required": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "computed": true + }, + "id_attribute": { + "type": "string", + "description": "The identifier of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "computed": true + }, + "mac": { + "type": "string", + "description": "The MAC address of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "computed": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the Endpoint Tag Mac object.", + "description_kind": "markdown", + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + } + }, + "description": "The endpoint_tag_mac datasource for the 'fvEpMacTag' class", + "description_kind": "markdown" + } + }, + "aci_epg_to_contract": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "application_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "contract_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "contract_name": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true + }, + "contract_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_epg_to_contract_interface": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "application_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "contract_interface_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_epg_to_domain": { + "version": 1, + "block": { + "attributes": { + "allow_micro_seg": { + "type": "bool", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "application_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "binding_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "custom_epg_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "delimiter": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enhanced_lag_policy": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "epg_cos": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "epg_cos_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "instr_imedcy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lag_policy_name": { + "type": "string", + "description_kind": "plain", + "deprecated": true, + "optional": true, + "computed": true + }, + "netflow_dir": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "netflow_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "num_ports": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port_allocation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "primary_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "primary_encap_inner": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "res_imedcy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "secondary_encap_inner": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "switching_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_epg_to_static_path": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "application_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "instr_imedcy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "primary_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_epgs_using_function": { + "version": 1, + "block": { + "attributes": { + "access_generic_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "instr_imedcy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "primary_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_error_disable_recovery": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "err_dis_recov_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "edr_event": { + "nesting_mode": "list", + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "event": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "recover": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_external_management_network_instance_profile": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the External Management Network Instance Profile object.", + "description_kind": "markdown", + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the External Management Network Instance Profile object.", + "description_kind": "markdown", + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the External Management Network Instance Profile object.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the External Management Network Instance Profile object.", + "description_kind": "markdown", + "required": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the External Management Network Instance Profile object.", + "description_kind": "markdown", + "computed": true + }, + "priority": { + "type": "string", + "description": "The QoS priority class identifier.", + "description_kind": "markdown", + "computed": true + }, + "relation_to_consumed_out_of_band_contracts": { + "nested_type": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the Relation To Consumed Out Of Band Contract object.", + "description_kind": "markdown", + "computed": true + }, + "out_of_band_contract_name": { + "type": "string", + "description": "The name of the Out Of Band Contract object.", + "description_kind": "markdown", + "computed": true + }, + "priority": { + "type": "string", + "description": "The Quality of service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description": "An external management entity instance profile to an out-of-band binary contract profile. The instance profiles of external management entities can communicate with nodes that are part of out-of-band management endpoint group. To enable this communication, a contract is required between the instance profile and the out-of-band management endpoint group.", + "description_kind": "markdown", + "computed": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + } + }, + "description": "The external_management_network_instance_profile datasource for the 'mgmtInstP' class", + "description_kind": "markdown" + } + }, + "aci_external_management_network_subnet": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the External Management Network Subnet object.", + "description_kind": "markdown", + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the External Management Network Subnet object.", + "description_kind": "markdown", + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the External Management Network Subnet object.", + "description_kind": "markdown", + "computed": true + }, + "ip": { + "type": "string", + "description": "The external subnet IP address and subnet mask. This IP address is used for creating an external management entity. The subnet mask for the IP address to be imported from the outside into the fabric. The contracts associated with its parent instance profile (l3ext:InstP) are applied to the subnet.", + "description_kind": "markdown", + "required": true + }, + "name": { + "type": "string", + "description": "The name of the External Management Network Subnet object.", + "description_kind": "markdown", + "computed": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the External Management Network Subnet object.", + "description_kind": "markdown", + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + } + }, + "description": "The external_management_network_subnet datasource for the 'mgmtSubnet' class", + "description_kind": "markdown" + } + }, + "aci_external_network_instance_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "exception_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3_outside_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_cons": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_cons_if": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_prot_by": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_prov": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_fv_rs_sec_inherited": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_l3ext_rs_inst_p_to_profile": { + "nesting_mode": "set", + "block": { + "attributes": { + "direction": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tn_rtctrl_profile_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_fabric_if_pol": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auto_neg": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fec_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "link_debounce": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "speed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_fabric_node": { + "version": 1, + "block": { + "attributes": { + "ad_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "address": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "apic_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_node_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "fabric_pod_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "fabric_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "role": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_fabric_node_control": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "control": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "feature_sel": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_fabric_node_member": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ext_pool_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pod_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "role": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "serial": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_fabric_path_ep": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "node_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "pod_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "vpc": { + "type": "bool", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_fabric_wide_settings": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "disable_ep_dampening": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "domain_validation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_mo_streaming": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_remote_leaf_direct": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enforce_subnet_check": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_opflexp_authenticate_clients": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_opflexp_use_ssl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "opflexp_authenticate_clients": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "opflexp_ssl_protocols": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "opflexp_use_ssl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "policy_sync_node_bringup": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "reallocate_gipo": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "restrict_infra_vlan_traffic": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "unicast_xr_ep_learn_disable": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "validate_overlapping_vlans": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_fc_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_fex_bundle_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fex_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_fex_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_file_remote_path": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "host": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "protocol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "remote_path": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "remote_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "user_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_filter": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_filter_entry": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "apply_to_frag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "arp_opc": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "d_from_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "d_to_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ether_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "icmpv4_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "icmpv6_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prot": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "s_from_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "s_to_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "stateful": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tcp_rules": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_firmware_download_task": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_pass": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dnld_task_flip": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "identity_private_key_contents": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "identity_private_key_passphrase": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "identity_public_key_contents": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "load_catalog_if_exists_and_newer": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "password": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "polling_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "proto": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "url": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "user": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_firmware_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "firmware_group_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_firmware_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "effective_on_reboot": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ignore_compat": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "internal_label": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "version_check_override": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_function_node": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "conn_consumer_dn": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "conn_provider_dn": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "func_template_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "func_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_copy": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "l4_l7_device_interface_consumer_attachment_notification": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "l4_l7_device_interface_consumer_connector_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "l4_l7_device_interface_consumer_name": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "l4_l7_device_interface_provider_attachment_notification": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "l4_l7_device_interface_provider_connector_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "l4_l7_device_interface_provider_name": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "l4_l7_service_graph_template_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "managed": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_vns_rs_default_scope_to_term": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_vns_rs_node_to_abs_func_prof": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_vns_rs_node_to_cloud_l_dev": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_vns_rs_node_to_l_dev": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_vns_rs_node_to_m_func": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "routing_mode": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "sequence_number": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "share_encap": { + "type": "string", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_global_security": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "block_duration": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "change_count": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "change_during_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "change_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_login_block": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "expiration_warn_time": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "history_count": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_failed_attempts": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_failed_attempts_window": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "maximum_validity_period": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "no_change_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pwd_strength_check": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "session_record_flags": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ui_idle_timeout_seconds": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "webtoken_timeout_seconds": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_hsrp_group_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hello_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hold_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hsrp_group_policy_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "preempt_delay_min": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "preempt_delay_reload": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "preempt_delay_sync": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_hsrp_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "delay": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "reload_delay": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_igmp_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "control": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "group_timeout": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "last_member_count": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "last_member_response_time": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "maximum_mulitcast_entries": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "querier_timeout": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "query_interval": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "report_policy_route_map": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "reserved_mulitcast_entries": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "response_interval": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "robustness_variable": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "startup_query_count": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "startup_query_interval": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "state_limit_route_map": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "static_report_route_map": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_imported_contract": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_interface_blacklist": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fex_id": { + "type": "number", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "interface": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "node_id": { + "type": "number", + "description_kind": "plain", + "required": true + }, + "pod_id": { + "type": "number", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_interface_config": { + "version": 1, + "block": { + "attributes": { + "admin_state": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "breakout": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "interface": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node": { + "type": "number", + "description_kind": "plain", + "required": true + }, + "operational_associated_group": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "operational_associated_sub_group": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "pc_member": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "pc_port_dn": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "policy_group": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "port_dn": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "port_type": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "role": { + "type": "string", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_interface_fc_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "automaxspeed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fill_pattern": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rx_bb_credit": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "speed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "trunk_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_ip_sla_monitoring_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "http_uri": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "http_version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "request_data_size": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sla_detect_multiplier": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sla_frequency": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sla_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sla_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "threshold": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "traffic_class_value": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type_of_service": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_isis_domain_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "isis_level_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "isis_level_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsp_fast_flood": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsp_gen_init_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsp_gen_max_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsp_gen_sec_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mtu": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "redistrib_metric": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spf_comp_init_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spf_comp_max_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spf_comp_sec_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l2_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l2_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "qinq": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vepa": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vlan_scope": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l2_outside": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_l2out_extepg": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "exception_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l2_outside_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3_domain_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_extnw_rs_out": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_dom_vxlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vip_addr_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3_ext_subnet": { + "version": 1, + "block": { + "attributes": { + "aggregate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "external_network_instance_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_l3ext_rs_subnet_to_rt_summ": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "scope": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_l3ext_rs_subnet_to_profile": { + "nesting_mode": "set", + "block": { + "attributes": { + "direction": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tn_rtctrl_profile_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tn_rtctrl_profile_name": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_l3_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bfd_isis": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3_outside": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "default_route_leak_policy": { + "type": [ + "set", + [ + "object", + { + "always": "string", + "annotation": "string", + "criteria": "string", + "scope": [ + "set", + "string" + ] + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enforce_rtctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mpls_enabled": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pim": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "relation_l3ext_rs_dampening_pol": { + "type": [ + "set", + [ + "object", + { + "af": "string", + "tn_rtctrl_profile_dn": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "relation_l3ext_rs_ectx": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_l3ext_rs_interleak_pol": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_l3ext_rs_l3_dom_att": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_l3extrs_redistribute_pol": { + "type": [ + "set", + [ + "object", + { + "source": "string", + "target_dn": "string" + } + ] + ], + "description": "Create relation to rtctrlProfile", + "description_kind": "plain", + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_bfd_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "interface_profile_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_bgp_external_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3_outside_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_bgp_protocol_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_node_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_consumer_label": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the L3out Consumer Label object.", + "description_kind": "markdown", + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the L3out Consumer Label object.", + "description_kind": "markdown", + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the L3out Consumer Label object.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the L3out Consumer Label object.", + "description_kind": "markdown", + "required": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the L3out Consumer Label object.", + "description_kind": "markdown", + "computed": true + }, + "owner": { + "type": "string", + "description": "The owner of the L3out Consumer Label object.", + "description_kind": "markdown", + "computed": true + }, + "owner_key": { + "type": "string", + "description": "The key for enabling clients to own their data for entity correlation.", + "description_kind": "markdown", + "computed": true + }, + "owner_tag": { + "type": "string", + "description": "A tag for enabling clients to add their own data. For example, to indicate who created this object.", + "description_kind": "markdown", + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tag": { + "type": "string", + "description": "Specifies the color of a policy label.", + "description_kind": "markdown", + "computed": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + } + }, + "description": "The l3out_consumer_label datasource for the 'l3extConsLbl' class", + "description_kind": "markdown" + } + }, + "aci_l3out_floating_svi": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "autostate": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "encap_scope": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "if_inst_t": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "ipv6_dad": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "ll_addr": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "logical_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "mtu": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "node_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "relation_l3ext_rs_dyn_path_att": { + "type": [ + "set", + [ + "object", + { + "encap": "string", + "enhanced_lag_policy_dn": "string", + "floating_address": "string", + "forged_transmit": "string", + "mac_change": "string", + "promiscuous_mode": "string", + "tdn": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_hsrp_interface_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "config_issues": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "group_af": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "group_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "group_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip_obtain_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3out_hsrp_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_hsrp_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_hsrp_secondary_vip": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "config_issues": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "l3out_hsrp_interface_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_loopback_interface_profile": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_node_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_ospf_external_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "area_cost": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "area_ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "area_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "area_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3_outside_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "multipod_internal": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_ospf_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_key_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_path_attachment": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "autostate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap_scope": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "if_inst_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ipv6_dad": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ll_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mtu": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_path_attachment_secondary_ip": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dhcp_relay": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ipv6_dad": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3out_path_attachment_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_redistribute_policy": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the L3out Redistribute Policy object.", + "description_kind": "markdown", + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the L3out Redistribute Policy object.", + "description_kind": "markdown", + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "route_control_profile_name": { + "type": "string", + "description": "The name of the Route Control Profile object.", + "description_kind": "markdown", + "required": true + }, + "source": { + "type": "string", + "description": "The source of the L3out Redistribute Policy object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + } + }, + "description": "The l3out_redistribute_policy datasource for the 'l3extRsRedistributePol' class", + "description_kind": "markdown" + } + }, + "aci_l3out_route_tag_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_static_route": { + "version": 1, + "block": { + "attributes": { + "aggregate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_node_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rt_ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_static_route_next_hop": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "nexthop_profile_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "nh_addr": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "static_route_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_l3out_vpc_member": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ipv6_dad": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_port_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "ll_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "side": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_l4_l7_deployed_graph_connector_vlan": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "delete_pbr_scenario": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_context_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "member_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "router_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_l4_l7_device": { + "version": 1, + "block": { + "attributes": { + "active": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "context_aware": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "device_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "function_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "is_copy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "managed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "promiscuous_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_al_dev_to_phys_dom_p": { + "type": "string", + "description": "Create relation to phys:DomP", + "description_kind": "plain", + "optional": true + }, + "service_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "trunking": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "relation_vns_rs_al_dev_to_dom_p": { + "nesting_mode": "set", + "block": { + "attributes": { + "domain_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "switching_mode": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description": "Create relation to vmmDomP", + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "aci_l4_l7_logical_interface": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enhanced_lag_policy_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_device_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_c_if_att_n": { + "type": [ + "set", + "string" + ], + "description": "Create relation to vnsCIf", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_l4_l7_redirect_health_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_l4_l7_service_graph_template": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l4_l7_service_graph_template_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "ui_template_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_lacp_member_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "priority": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "transmit_rate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_lacp_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_links": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_links": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_ldap_group_map": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_ldap_group_map_rule": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "groupdn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_ldap_group_map_rule_to_group_map": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ldap_group_map_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_ldap_provider": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "attribute": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "basedn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_ssl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "filter": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor_server": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_user": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "retries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rootdn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ssl_validation_level": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_access_bundle_policy_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lag_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_att_ent_p": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_cdp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_copp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_fc_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_h_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_l2_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_l2_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_l2_port_auth_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_l2_port_security_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_lacp_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_lldp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_macsec_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_mcp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_mon_if_infra_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_qos_dpp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_qos_egress_dpp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_qos_ingress_dpp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_qos_pfc_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_qos_sd_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_span_v_dest_grp": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_span_v_src_grp": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_stormctrl_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_stp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "relation_infra_rs_netflow_monitor_pol": { + "nesting_mode": "set", + "block": { + "attributes": { + "flt_type": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "target_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_access_bundle_policy_sub_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_access_bundle_policy_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port_channel_member": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_access_port_policy_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_breakout_port_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "brkout_map": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_selector_ids": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_block_ids": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_acc_card_p": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_acc_port_p": { + "type": [ + "set", + "string" + ], + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "leaf_selector": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "switch_association_type": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "block_types": { + "node_block": { + "nesting_mode": "list", + "block": { + "attributes": { + "description": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "from_": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "to_": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_leaf_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "leaf_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "switch_association_type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_lldp_interface_policy": { + "version": 1, + "block": { + "attributes": { + "admin_rx_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "admin_tx_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_local_user": { + "version": 1, + "block": { + "attributes": { + "account_status": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cert_attribute": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "clear_pwd_history": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "email": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "expiration": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "expires": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "first_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "last_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "otpenable": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "otpkey": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "phone": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pwd_life_time": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pwd_update_required": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rbac_string": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "unix_user_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_logical_device_context": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "context": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrct_name_or_lbl": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "graph_name_or_lbl": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_name_or_lbl": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_logical_interface_context": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "conn_name_or_lbl": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3_dest": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_device_context_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "permit_log": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_logical_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_node_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_l3ext_rs_arp_if_pol": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_l3ext_rs_egress_qos_dpp_pol": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_l3ext_rs_igmp_if_pol": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_l3ext_rs_ingress_qos_dpp_pol": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_l3ext_rs_l_if_p_cust_qos_pol": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_l3ext_rs_l_if_p_to_netflow_monitor_pol": { + "type": [ + "set", + [ + "object", + { + "flt_type": "string", + "tn_netflow_monitor_pol_dn": "string", + "tn_netflow_monitor_pol_name": "string" + } + ] + ], + "description_kind": "plain", + "computed": true + }, + "relation_l3ext_rs_nd_if_pol": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_l3ext_rs_pim_ip_if_pol": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "relation_l3ext_rs_pim_ipv6_if_pol": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "tag": { + "type": "string", + "description_kind": "plain", + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_logical_node_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "config_issues": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "l3_outside_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "target_dscp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_logical_node_to_fabric_node": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "config_issues": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "logical_node_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "rtr_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rtr_id_loop_back": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_login_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provider_group": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "realm": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "realm_sub_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_login_domain_provider": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "order": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_maintenance_group_node": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pod_maintenance_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "to_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_maintenance_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "graceful": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ignore_compat": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "internal_label": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "notif_cond": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "run_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "version_check_override": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_managed_node_connectivity_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_match_community_terms": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_rule_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "match_community_factors": { + "nesting_mode": "set", + "block": { + "attributes": { + "community": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "scope": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description": "Create Community Factors", + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_match_regex_community_terms": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "community_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_rule_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "regex": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_match_route_destination_rule": { + "version": 1, + "block": { + "attributes": { + "aggregate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "greater_than_mask": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "less_than_mask": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "match_rule_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_match_rule": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_mcp_instance_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "init_delay_time": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "loop_detect_mult": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "loop_protect_act": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tx_freq": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tx_freq_msec": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_mgmt_preference": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "interface_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_mgmt_zone": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "managed_node_connectivity_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_miscabling_protocol_interface_policy": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_monitoring_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_multicast_pool": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "block_types": { + "multicast_address_block": { + "nesting_mode": "set", + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_multicast_pool_block": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "multicast_pool_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_node_block": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "switch_association_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "to_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_node_block_firmware": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "firmware_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "from_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to_": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_node_mgmt_epg": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "exception_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "flood_on_encap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "management_profile_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "match_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_gr_memb": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_ospf_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cost": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dead_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hello_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "nw_t": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pfx_suppress": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "prio": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rexmit_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "xmit_delay": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_ospf_route_summarization": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cost": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "inter_area_enabled": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_ospf_timers": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bw_ref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dist": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "gr_ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsa_arrival_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsa_gp_pacing_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsa_hold_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsa_max_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lsa_start_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_ecmp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_lsa_action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_lsa_num": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_lsa_reset_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_lsa_sleep_cnt": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_lsa_sleep_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_lsa_thresh": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spf_hold_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spf_init_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spf_max_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_out_of_band_contract": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the Out Of Band Contract object.", + "description_kind": "markdown", + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the Out Of Band Contract object.", + "description_kind": "markdown", + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Out Of Band Contract object.", + "description_kind": "markdown", + "computed": true + }, + "intent": { + "type": "string", + "description": "The Install Rules or Estimate Number of Rules.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the Out Of Band Contract object.", + "description_kind": "markdown", + "required": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the Out Of Band Contract object.", + "description_kind": "markdown", + "computed": true + }, + "owner_key": { + "type": "string", + "description": "The key for enabling clients to own their data for entity correlation.", + "description_kind": "markdown", + "computed": true + }, + "owner_tag": { + "type": "string", + "description": "A tag for enabling clients to add their own data. For example, to indicate who created this object.", + "description_kind": "markdown", + "computed": true + }, + "priority": { + "type": "string", + "description": "The priority of the Out Of Band Contract object.", + "description_kind": "markdown", + "computed": true + }, + "scope": { + "type": "string", + "description": "Represents the scope of this contract. If the scope is set as application-profile, the epg can only communicate with epgs in the same application-profile.", + "description_kind": "markdown", + "computed": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "target_dscp": { + "type": "string", + "description": "The target DSCP value of the Out Of Band Contract object.", + "description_kind": "markdown", + "computed": true + } + }, + "description": "The out_of_band_contract datasource for the 'vzOOBBrCP' class", + "description_kind": "markdown" + } + }, + "aci_pbr_l1_l2_destination": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "destination_name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pod_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "policy_based_redirect_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "relation_vns_rs_l1_l2_redirect_health_group": { + "type": "string", + "description": "Create relation to vns:RedirectHealthGroup", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_vns_rs_to_c_if": { + "type": "string", + "description": "Create relation to vns:CIf", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_physical_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_dom_vxlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vip_addr_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_vlan_ns_def": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_pim_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "control_state": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "designated_router_delay": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "designated_router_priority": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "hello_interval": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "inbound_join_prune_filter_policy": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "join_prune_interval": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "neighbor_filter_policy": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "outbound_join_prune_filter_policy": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_pim_route_map_entry": { + "version": 0, + "block": { + "attributes": { + "action": { + "type": "string", + "description": "The route action of the Pim Route Map Entry object.", + "description_kind": "markdown", + "computed": true + }, + "annotation": { + "type": "string", + "description": "The annotation of the Pim Route Map Entry object.", + "description_kind": "markdown", + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the Pim Route Map Entry object.", + "description_kind": "markdown", + "computed": true + }, + "group_ip": { + "type": "string", + "description": "The group ip of the Pim Route Map Entry object.", + "description_kind": "markdown", + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Pim Route Map Entry object.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the Pim Route Map Entry object.", + "description_kind": "markdown", + "computed": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the Pim Route Map Entry object.", + "description_kind": "markdown", + "computed": true + }, + "order": { + "type": "string", + "description": "PIM route map entry order.", + "description_kind": "markdown", + "required": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "rendezvous_point_ip": { + "type": "string", + "description": "The rendezvous point ip of the Pim Route Map Entry object.", + "description_kind": "markdown", + "computed": true + }, + "source_ip": { + "type": "string", + "description": "The source ip of the Pim Route Map Entry object.", + "description_kind": "markdown", + "computed": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + } + }, + "description": "The pim_route_map_entry datasource for the 'pimRouteMapEntry' class", + "description_kind": "markdown" + } + }, + "aci_pim_route_map_policy": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the Pim Route Map Policy object.", + "description_kind": "markdown", + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the Pim Route Map Policy object.", + "description_kind": "markdown", + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Pim Route Map Policy object.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the Pim Route Map Policy object.", + "description_kind": "markdown", + "required": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the Pim Route Map Policy object.", + "description_kind": "markdown", + "computed": true + }, + "owner_key": { + "type": "string", + "description": "The key for enabling clients to own their data for entity correlation.", + "description_kind": "markdown", + "computed": true + }, + "owner_tag": { + "type": "string", + "description": "A tag for enabling clients to add their own data. For example, to indicate who created this object.", + "description_kind": "markdown", + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + } + }, + "description": "The pim_route_map_policy datasource for the 'pimRouteMapPol' class", + "description_kind": "markdown" + } + }, + "aci_pod_maintenance_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fwtype": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pod_maintenance_group_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_port_security_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "maximum": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "violation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_port_tracking": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "delay": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "include_apic_ports": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "minlinks": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_power_supply_redundancy_policy": { + "version": 1, + "block": { + "attributes": { + "administrative_state": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_qos_instance_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "etrap_age_timer": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "etrap_bw_thresh": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "etrap_byte_ct": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "etrap_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_flush_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_flush_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "uburst_spine_queues": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "uburst_tor_queues": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_radius_provider": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_protocol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor_server": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_user": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "retries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_radius_provider_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_ranges": { + "version": 1, + "block": { + "attributes": { + "alloc_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "from": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "role": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "to": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "vlan_pool_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_recurring_window": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "concur_cap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "day": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hour": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "minute": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_upg_interval": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "proc_break": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "proc_cap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "scheduler_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "time_cap": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_relation_to_consumed_out_of_band_contract": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the Relation To Consumed Out Of Band Contract object.", + "description_kind": "markdown", + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Relation To Consumed Out Of Band Contract object.", + "description_kind": "markdown", + "computed": true + }, + "out_of_band_contract_name": { + "type": "string", + "description": "The name of the Out Of Band Contract object.", + "description_kind": "markdown", + "required": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "priority": { + "type": "string", + "description": "The Quality of service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.", + "description_kind": "markdown", + "computed": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + } + }, + "description": "The relation_to_consumed_out_of_band_contract datasource for the 'mgmtRsOoBCons' class", + "description_kind": "markdown" + } + }, + "aci_rest": { + "version": 1, + "block": { + "attributes": { + "class_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "content": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "path": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "children": { + "nesting_mode": "set", + "block": { + "attributes": { + "child_class_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "child_content": { + "type": [ + "map", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_rest_managed": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the ACI object.", + "description_kind": "markdown", + "computed": true + }, + "class_name": { + "type": "string", + "description": "Which class object is being created. (Make sure there is no colon in the classname)", + "description_kind": "markdown", + "computed": true + }, + "content": { + "type": [ + "map", + "string" + ], + "description": "Map of key-value pairs those needed to be passed to the Model object as parameters. Make sure the key name matches the name with the object parameter in ACI.", + "description_kind": "markdown", + "computed": true + }, + "dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object. e.g. uni/tn-EXAMPLE_TENANT", + "description_kind": "markdown", + "required": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the object.", + "description_kind": "markdown", + "computed": true + } + }, + "block_types": { + "child": { + "nesting_mode": "set", + "block": { + "attributes": { + "class_name": { + "type": "string", + "description": "Class name of child object.", + "description_kind": "markdown", + "computed": true + }, + "content": { + "type": [ + "map", + "string" + ], + "description": "Map of key-value pairs which represents the attributes for the child object.", + "description_kind": "markdown", + "computed": true + }, + "rn": { + "type": "string", + "description": "The relative name of the child object.", + "description_kind": "markdown", + "computed": true + } + }, + "description": "List of children.", + "description_kind": "markdown" + } + } + }, + "description": "The _rest_managed datasource for the 'AciRestManaged' class", + "description_kind": "markdown" + } + }, + "aci_route_control_context": { + "version": 1, + "block": { + "attributes": { + "action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "order": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "route_control_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "set_rule": { + "type": "string", + "description": "Create relation to rtctrl:AttrP", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_route_control_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "route_control_profile_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_rsa_provider": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_protocol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "key": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor_server": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_password": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_user": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "retries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_saml_certificate": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "certificate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "certificate_validty": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "expiry_status": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "regenerate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_saml_provider": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "entity_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "gui_banner_message": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "https_proxy": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id_p": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "metadata_url": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor_server": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_user": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "retries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "sig_alg": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tp": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "want_assertions_encrypted": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "want_assertions_signed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "want_requests_signed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "want_response_signed": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_saml_provider_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_service_redirect_backup_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_service_redirect_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "anycast_enabled": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dest_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hashing_algorithm": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "max_threshold_percent": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_threshold_percent": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "program_local_pod_only": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "resilient_hash_enabled": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "threshold_down_action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "threshold_enable": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_snmp_community": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_snmp_user": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "authorization_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "privacy_type": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "snmp_policy_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_span_destination_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_span_source_group": { + "version": 1, + "block": { + "attributes": { + "admin_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_span_sourcedestination_group_match_label": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "span_source_group_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_spanning_tree_interface_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_spine_access_port_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "relation_infra_rs_sp_acc_grp": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "spine_access_port_selector_type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "spine_interface_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_spine_interface_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_spine_interface_profile_selector": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spine_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_spine_port_policy_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_spine_port_selector": { + "version": 1, + "block": { + "attributes": { + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spine_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "tdn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain", + "deprecated": true + } + }, + "aci_spine_profile": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_spine_switch_association": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "spine_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "spine_switch_association_type": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_spine_switch_policy_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "relation_infra_rs_iacl_spine_profile": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_spine_bfd_ipv4_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_spine_bfd_ipv6_inst_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_spine_copp_profile": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_spine_p_grp_to_cdp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "relation_infra_rs_spine_p_grp_to_lldp_if_pol": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_static_node_mgmt_address": { + "version": 1, + "block": { + "attributes": { + "addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "gw": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "management_epg_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "t_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "type": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "v6_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "v6_gw": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_subnet": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "anycast_mac": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "ctrl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "ip_data_plane_learning": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "next_hop_addr": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "preferred": { + "type": "string", + "description_kind": "plain", + "computed": true + }, + "scope": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "computed": true + }, + "virtual": { + "type": "string", + "description_kind": "plain", + "computed": true + } + }, + "block_types": { + "msnlb": { + "nesting_mode": "set", + "block": { + "attributes": { + "group": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "mac": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + }, + "max_items": 1 + } + }, + "description_kind": "plain" + } + }, + "aci_system": { + "version": 1, + "block": { + "attributes": { + "address": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "boot_strap_tate": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "child_action": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "config_issues": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "control_plane_mtu": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "current_time": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enforce_subnet_check": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "etep_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_domain": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "fabric_mac": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "inb_mgmt_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "inb_mgmt_addr6": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "inb_mgmt_addr6_mask": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "inb_mgmt_addr_mask": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "inb_mgmt_gateway": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "inb_mgmt_gateway6": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "last_reboot_time": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "last_reset_reason": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "lc_own": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mod_ts": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mon_pol_dn": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "node_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "oob_mgmt_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "oob_mgmt_addr6": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "oob_mgmt_addr6_mask": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "oob_mgmt_addr_mask": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "oob_mgmt_gateway": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "oob_mgmt_gateway6": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pod_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "remote_network_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "remote_node": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rl_oper_pod_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rl_routable_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "rldirect_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "role": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "serial": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "server_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "site_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "state": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "system_id": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "system_uptime": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tep_pool": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "unicast_xr_ep_learn_disable": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "virtual_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_taboo_contract": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_tacacs_accounting": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_tacacs_accounting_destination": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_protocol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "host": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "tacacs_accounting_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_tacacs_provider": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "auth_protocol": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitor_server": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "monitoring_user": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "retries": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "timeout": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_tacacs_provider_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_tacacs_source": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "incl": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "min_sev": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "parent_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + }, + "aci_tag": { + "version": 0, + "block": { + "attributes": { + "id": { + "type": "string", + "description": "The distinguished name (DN) of the Tag object.", + "description_kind": "markdown", + "computed": true + }, + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "required": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "description": "The tag datasource for the 'tagTag' class", + "description_kind": "markdown" + } + }, + "aci_tenant": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_tenant_to_cloud_account": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "cloud_account_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_trigger_scheduler": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_user_security_domain": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "local_user_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_user_security_domain_role": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "priv_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "user_domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_vlan_encapsulationfor_vxlan_traffic": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "attachable_access_entity_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_vlan_pool": { + "version": 1, + "block": { + "attributes": { + "alloc_mode": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_vmm_controller": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dvs_version": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "host_or_ip": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "inventory_trig_st": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "msft_config_err_msg": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "msft_config_issues": { + "type": [ + "list", + "string" + ], + "description_kind": "plain", + "optional": true, + "computed": true + }, + "n1kv_stats_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "port": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "root_cont_name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "scope": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "seq_num": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "stats_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vmm_domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "vxlan_depl_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_vmm_credential": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pwd": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "usr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vmm_domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_vmm_domain": { + "version": 1, + "block": { + "attributes": { + "access_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "arp_learning": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ave_time_out": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "config_infra_pg": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ctrl_knob": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "delimiter": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_ave": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_tag": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enable_vm_folder": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "encap_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "enf_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ep_inventory_type": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ep_ret_time": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "hv_avail_monitor": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mcast_addr": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pref_encap_mode": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "provider_profile_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_vpc_domain_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "dead_intvl": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_vpc_explicit_protection_group": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "vpc_explicit_protection_group_id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_vrf": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bd_enforced_enable": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip_data_plane_learning": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "knw_mcast_act": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pc_enf_dir": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "pc_enf_pref": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "tenant_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_vrf_fallback_route_group": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the VRF Fallback Route Group object.", + "description_kind": "markdown", + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the VRF Fallback Route Group object.", + "description_kind": "markdown", + "computed": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the VRF Fallback Route Group object.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the VRF Fallback Route Group object.", + "description_kind": "markdown", + "required": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the VRF Fallback Route Group object.", + "description_kind": "markdown", + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "vrf_fallback_route_group_members": { + "nested_type": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "computed": true + }, + "fallback_member": { + "type": "string", + "description": "The address of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "computed": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + } + }, + "description": "The vrf_fallback_route_group datasource for the 'fvFBRGroup' class", + "description_kind": "markdown" + } + }, + "aci_vrf_fallback_route_group_member": { + "version": 0, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description": "The annotation of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "computed": true + }, + "annotations": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + }, + "description": { + "type": "string", + "description": "The description of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "computed": true + }, + "fallback_member": { + "type": "string", + "description": "The address of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "required": true + }, + "id": { + "type": "string", + "description": "The distinguished name (DN) of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "computed": true + }, + "name": { + "type": "string", + "description": "The name of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "computed": true + }, + "name_alias": { + "type": "string", + "description": "The name alias of the VRF Fallback Route Group Member object.", + "description_kind": "markdown", + "computed": true + }, + "parent_dn": { + "type": "string", + "description": "The distinguished name (DN) of the parent object.", + "description_kind": "markdown", + "required": true + }, + "tags": { + "nested_type": { + "attributes": { + "key": { + "type": "string", + "description": "The key used to uniquely identify this configuration object.", + "description_kind": "markdown", + "computed": true + }, + "value": { + "type": "string", + "description": "The value of the property.", + "description_kind": "markdown", + "computed": true + } + }, + "nesting_mode": "set" + }, + "description_kind": "plain", + "computed": true + } + }, + "description": "The vrf_fallback_route_group_member datasource for the 'fvFBRMember' class", + "description_kind": "markdown" + } + }, + "aci_vrf_leak_epg_bd_subnet": { + "version": 1, + "block": { + "attributes": { + "allow_l3out_advertisement": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "ip": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "block_types": { + "leak_to": { + "nesting_mode": "set", + "block": { + "attributes": { + "allow_l3out_advertisement": { + "type": "string", + "description_kind": "plain", + "optional": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "optional": true + } + }, + "description_kind": "plain" + } + } + }, + "description_kind": "plain" + } + }, + "aci_vrf_snmp_context": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_vrf_snmp_context_community": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_snmp_context_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain", + "deprecated": true + } + }, + "aci_vrf_to_bgp_address_family_context": { + "version": 1, + "block": { + "attributes": { + "address_family": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "bgp_address_family_context_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vrf_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_vsan_pool": { + "version": 1, + "block": { + "attributes": { + "alloc_mode": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_vswitch_policy": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "vmm_domain_dn": { + "type": "string", + "description_kind": "plain", + "required": true + } + }, + "description_kind": "plain" + } + }, + "aci_vxlan_pool": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + }, + "aci_x509_certificate": { + "version": 1, + "block": { + "attributes": { + "annotation": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "data": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "description": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "id": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + }, + "local_user_dn": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name": { + "type": "string", + "description_kind": "plain", + "required": true + }, + "name_alias": { + "type": "string", + "description_kind": "plain", + "optional": true, + "computed": true + } + }, + "description_kind": "plain" + } + } + } + } + } +} diff --git a/gen/generator.go b/gen/generator.go index 20666c6fe..e738ce9d1 100644 --- a/gen/generator.go +++ b/gen/generator.go @@ -31,6 +31,7 @@ package main import ( "bytes" + "cmp" "crypto/tls" "encoding/json" "fmt" @@ -79,31 +80,154 @@ const pubhupDevnetBaseUrl = "https://pubhub.devnetcloud.com/media/model-doc-late // The map contains a key which is the name of the function used in the template and a value which is the function itself // The functions itself are defined in the current file var templateFuncs = template.FuncMap{ - "snakeCase": Underscore, - "validatorString": ValidatorString, - "containsString": ContainsString, - "listToString": ListToString, - "overwriteProperty": GetOverwriteAttributeName, - "overwritePropertyValue": GetOverwriteAttributeValue, - "createTestValue": func(val string) string { return fmt.Sprintf("test_%s", val) }, - "createNonExistingValue": func(val string) string { return fmt.Sprintf("non_existing_%s", val) }, - "getParentTestDependencies": GetParentTestDependencies, - "getTargetTestDependencies": GetTargetTestDependencies, - "getDefaultValues": GetDefaultValues, - "fromInterfacesToString": FromInterfacesToString, - "containsNoneAttributeValue": ContainsNoneAttributeValue, - "definedInMap": DefinedInMap, - "add": func(val1, val2 int) int { return val1 + val2 }, - "substract": func(val1, val2 int) int { return val1 - val2 }, - "isInterfaceSlice": IsInterfaceSlice, - "lookupTestValue": LookupTestValue, - "lookupChildTestValue": LookupChildTestValue, - "createParentDnValue": CreateParentDnValue, - "getResourceName": GetResourceName, - "getResourceNameAsDescription": GetResourceNameAsDescription, - "capitalize": Capitalize, - "getTestConfigVariableName": GetTestConfigVariableName, - "getDevnetDocForClass": GetDevnetDocForClass, + "snakeCase": Underscore, + "validatorString": ValidatorString, + "containsString": ContainsString, + "listToString": ListToString, + "overwriteProperty": GetOverwriteAttributeName, + "overwritePropertyValue": GetOverwriteAttributeValue, + "createTestValue": func(val string) string { return fmt.Sprintf("test_%s", val) }, + "createNonExistingValue": func(val string) string { return fmt.Sprintf("non_existing_%s", val) }, + "getParentTestDependencies": GetParentTestDependencies, + "getTargetTestDependencies": GetTargetTestDependencies, + "getDefaultValues": GetDefaultValues, + "fromInterfacesToString": FromInterfacesToString, + "containsNoneAttributeValue": ContainsNoneAttributeValue, + "definedInMap": DefinedInMap, + "getValueFromMap": GetValueFromMap, + "add": func(val1, val2 int) int { return val1 + val2 }, + "substract": func(val1, val2 int) int { return val1 - val2 }, + "isInterfaceSlice": IsInterfaceSlice, + "lookupTestValue": LookupTestValue, + "lookupChildTestValue": LookupChildTestValue, + "createParentDnValue": CreateParentDnValue, + "getResourceName": GetResourceName, + "getResourceNameAsDescription": GetResourceNameAsDescription, + "capitalize": Capitalize, + "decapitalize": Decapitalize, + "getTestConfigVariableName": GetTestConfigVariableName, + "getDevnetDocForClass": GetDevnetDocForClass, + "getMigrationType": GetMigrationType, + "isLegacyAttribute": IsLegacyAttribute, + "isLegacyChild": IsLegacyChild, + "getLegacyChildAttribute": GetLegacyChildAttribute, + "getConflictingAttributeName": GetConflictingAttributeName, + "getPropertyNameForLegacyAttribute": GetPropertyNameForLegacyAttribute, + "isNewAttributeStringType": IsNewAttributeStringType, + "isNewNamedClassAttribute": IsNewNamedClassAttribute, + "getChildAttributesFromBlocks": GetChildAttributesFromBlocks, + "getNewChildAttributes": GetNewChildAttributes, +} + +func GetMigrationType(valueType []string) string { + if len(valueType) == 2 && valueType[0] == "set" && valueType[1] == "string" { + return "Set" + } else if len(valueType) == 2 && valueType[0] == "list" && valueType[1] == "string" { + return "List" + } + return "String" +} + +func GetValueFromMap(key string, searchMap map[string]string) string { + if value, ok := searchMap[key]; ok { + return value + } + return "" +} + +func IsLegacyAttribute(name string, legacyAttributes map[string]LegacyAttribute) bool { + if _, ok := legacyAttributes[name]; ok { + return true + } + return false +} + +func IsLegacyChild(child string, children []string) bool { + if slices.Contains(children, child) { + return true + } + return false +} + +func IsNewAttributeStringType(attributeName string) bool { + if len(strings.Split(attributeName, ".")) == 1 { + return true + } + return false +} + +func IsNewNamedClassAttribute(attributeName string) bool { + if strings.HasSuffix(attributeName, "_name") { + return true + } + return false +} + +func GetConflictingAttributeName(attributeName string) string { + return strings.Split(attributeName, ".")[0] +} + +func GetPropertyNameForLegacyAttribute(name string, legacyAttributes map[string]LegacyAttribute) string { + for _, legacyAttribute := range legacyAttributes { + if legacyAttribute.ReplacedBy.AttributeName == name { + return legacyAttribute.AttributeName + } + } + return "" +} + +func GetLegacyChildAttribute(className, overwriteProperty string, property Property, legacyAttributes map[string]LegacyAttribute, legacyBlocks []LegacyBlock) string { + + for _, legacyBlock := range legacyBlocks { + if legacyBlock.ClassName == className { + for _, legacyAttribute := range legacyBlock.Attributes { + if strings.Contains(legacyAttribute.ReplacedBy.AttributeName, overwriteProperty) { + return legacyAttribute.Name + } + } + return "" + } + } + + for _, legacyAttribute := range legacyAttributes { + if strings.Contains(legacyAttribute.ReplacedBy.AttributeName, overwriteProperty) { + return Capitalize(className) + } + } + return "" +} + +func GetChildAttributesFromBlocks(className string, legacyBlocks []LegacyBlock) map[string]LegacyAttribute { + legacyAttributes := map[string]LegacyAttribute{} + for _, legacyBlock := range legacyBlocks { + if legacyBlock.ClassName == className { + legacyAttributes = legacyBlock.Attributes + } + } + return legacyAttributes +} + +func GetNewChildAttributes(legacyAttributes map[string]LegacyAttribute, properties map[string]Property) []Property { + result := []Property{} + for _, property := range properties { + found := false + for _, attribute := range legacyAttributes { + if property.Name == attribute.Name { + found = true + break + } + } + if !found && property.Name != "Annotation" { + result = append(result, property) + } + } + + // return result sorted to guarantee consistent output + slices.SortFunc(result, func(a, b Property) int { + return cmp.Compare(a.Name, b.Name) + }) + + return result } // Global variables used for unique resource name setting based on label from meta data @@ -131,6 +255,10 @@ func Capitalize(s string) string { return fmt.Sprintf("%s%s", strings.ToUpper(s[:1]), s[1:]) } +func Decapitalize(s string) string { + return fmt.Sprintf("%s%s", strings.ToLower(s[:1]), s[1:]) +} + func ContainsString(s, sub string) bool { if strings.Contains(s, sub) { return true @@ -343,22 +471,32 @@ func getDefinitions() Definitions { panic(err) } for _, file := range files { - if path.Ext(file.Name()) != ".yaml" { - continue - } - definitionMap := make(map[string]interface{}) - definition, err := os.ReadFile(fmt.Sprintf("%s/%s", definitionsPath, file.Name())) - if err != nil { - panic(err) - } - err = yaml.Unmarshal([]byte(definition), &definitionMap) - if err != nil { - panic(err) - } - if file.Name() == "classes.yaml" { - definitions.Classes = definitionMap - } else if file.Name() == "properties.yaml" { - definitions.Properties = definitionMap + if path.Ext(file.Name()) == ".yaml" { + definitionMap := make(map[string]interface{}) + definition, err := os.ReadFile(fmt.Sprintf("%s/%s", definitionsPath, file.Name())) + if err != nil { + panic(err) + } + err = yaml.Unmarshal([]byte(definition), &definitionMap) + if err != nil { + panic(err) + } + if file.Name() == "classes.yaml" { + definitions.Classes = definitionMap + } else if file.Name() == "properties.yaml" { + definitions.Properties = definitionMap + } + } else if path.Ext(file.Name()) == ".json" && strings.Contains(file.Name(), "schema-git-commit-") { + definitionMap := make(map[string]interface{}) + definition, err := os.ReadFile(fmt.Sprintf("%s/%s", definitionsPath, file.Name())) + if err != nil { + panic(err) + } + err = json.Unmarshal([]byte(definition), &definitionMap) + if err != nil { + panic(err) + } + definitions.Migration = definitionMap } } return definitions @@ -676,6 +814,11 @@ type Model struct { DnFormats []interface{} Properties map[string]Property NamedProperties map[string]Property + LegacyAttributes map[string]LegacyAttribute + LegacyBlocks []LegacyBlock + LegacySchemaVersion int + LegacyChildren []string + MigrationClassTypes map[string]string Children map[string]Model Configuration map[string]interface{} TestVars map[string]interface{} @@ -698,6 +841,28 @@ type Model struct { Include bool } +type LegacyBlock struct { + Name string + NestingMode string + ClassName string + Attributes map[string]LegacyAttribute +} + +type LegacyAttribute struct { + Name string + AttributeName string + ValueType []string + ReplacedBy ReplacementAttribute + Optional bool + Computed bool + Required bool +} + +type ReplacementAttribute struct { + ClassName string + AttributeName string +} + // A Property represents a ACI class property // All information is retrieved directly or deduced from the metadata type Property struct { @@ -726,6 +891,7 @@ type Property struct { type Definitions struct { Classes map[string]interface{} Properties map[string]interface{} + Migration map[string]interface{} } // Reads the class details from the meta file and sets all details to the Model @@ -798,6 +964,14 @@ func (m *Model) setClassModel(metaPath string, child bool, definitions Definitio m.HasChild = false } } + + if isMigrationResource(m.PkgName, definitions) { + m.SetMigrationClassTypes(definitions) + m.SetLegacyChildren(definitions) + m.SetMigrationVersion(definitions) + m.SetLegacyAttributes(definitions) + } + } func (m *Model) SetClassLabel(classDetails interface{}, child bool) { @@ -1173,6 +1347,192 @@ func (m *Model) SetClassProperties(classDetails interface{}) { } } +func (m *Model) SetMigrationClassTypes(definitions Definitions) { + + migrationClassTypes := map[string]string{} + resource_name := fmt.Sprintf("%s_%s", providerName, resourceNames[m.PkgName]) + legacyResource := definitions.Migration["provider_schemas"].(map[string]interface{})["registry.terraform.io/ciscodevnet/aci"].(map[string]interface{})["resource_schemas"].(map[string]interface{})[resource_name] + blockTypes := legacyResource.(map[string]interface{})["block"].(map[string]interface{})["block_types"].(map[string]interface{}) + for blockName, blockDetails := range blockTypes { + className := m.GetClassFromMigrationClassMapping(definitions, blockName, false) + attributeType := fmt.Sprintf("block,%s", blockDetails.(map[string]interface{})["nesting_mode"].(string)) + migrationClassTypes[className] = attributeType + } + + attributes := legacyResource.(map[string]interface{})["block"].(map[string]interface{})["attributes"].(map[string]interface{}) + for attributeName, attributeValue := range attributes { + className := m.GetClassFromMigrationClassMapping(definitions, attributeName, true) + if className != m.PkgName { + switch v := attributeValue.(map[string]interface{})["type"].(type) { + case string: + migrationClassTypes[className] = v + case []interface{}: + attributeTypes := []string{} + for _, value := range v { + attributeTypes = append(attributeTypes, value.(string)) + } + migrationClassTypes[className] = strings.Join(attributeTypes, ",") + } + } + } + + m.MigrationClassTypes = migrationClassTypes +} + +func (m *Model) SetLegacyChildren(definitions Definitions) { + + legacyChildren := []string{} + if v, ok := definitions.Classes[m.PkgName]; ok { + for key, value := range v.(map[interface{}]interface{}) { + if key.(string) == "migration_blocks" { + for className := range value.(map[interface{}]interface{}) { + if className.(string) != m.PkgName { + legacyChildren = append(legacyChildren, className.(string)) + } + } + } + } + } + m.LegacyChildren = legacyChildren +} + +func (m *Model) SetMigrationVersion(definitions Definitions) { + m.LegacySchemaVersion = 1 + if v, ok := definitions.Classes[m.PkgName]; ok { + for key, value := range v.(map[interface{}]interface{}) { + if key.(string) == "migration_version" { + m.LegacySchemaVersion = value.(int) + } + } + } +} + +func (m *Model) SetLegacyAttributes(definitions Definitions) { + + m.LegacyAttributes = make(map[string]LegacyAttribute) + resourceName := fmt.Sprintf("%s_%s", providerName, GetResourceName(m.PkgName, definitions)) + + legacyResource := definitions.Migration["provider_schemas"].(map[string]interface{})["registry.terraform.io/ciscodevnet/aci"].(map[string]interface{})["resource_schemas"].(map[string]interface{})[resourceName] + + if legacyResource != nil { + + attributeNames := []string{} + for _, property := range m.Properties { + attributeNames = append(attributeNames, property.SnakeCaseName) + } + + blockTypes := legacyResource.(map[string]interface{})["block"].(map[string]interface{})["block_types"].(map[string]interface{}) + for blockName, blockDetails := range blockTypes { + block := LegacyBlock{ + Name: blockName, + NestingMode: blockDetails.(map[string]interface{})["nesting_mode"].(string), + Attributes: make(map[string]LegacyAttribute), + } + block.ClassName = m.GetClassForBlockName(definitions, block.Name) + attributes := blockDetails.(map[string]interface{})["block"].(map[string]interface{})["attributes"].(map[string]interface{}) + for attributeName, attributeValue := range attributes { + legacyAttribute, propertyName := m.GetLegacyAttribute(attributeName, block.ClassName, attributeValue, definitions) + + if legacyAttribute.AttributeName == "target_dn" { + legacyAttribute.Name = "TargetDn" + } + + childClass := m.Children[block.ClassName] + for _, property := range childClass.Properties { + if legacyAttribute.AttributeName == property.SnakeCaseName { + legacyAttribute.Name = property.Name + break + } + } + block.Attributes[propertyName] = legacyAttribute + } + m.LegacyBlocks = append(m.LegacyBlocks, block) + } + + // sort LegacyBlocks to guarantee consistent output + slices.SortFunc(m.LegacyBlocks, func(a, b LegacyBlock) int { + return cmp.Compare(a.ClassName, b.ClassName) + }) + + attributes := legacyResource.(map[string]interface{})["block"].(map[string]interface{})["attributes"].(map[string]interface{}) + for attributeName, attributeValue := range attributes { + legacyAttribute, propertyName := m.GetLegacyAttribute(attributeName, m.GetClassFromMigrationClassMapping(definitions, attributeName, true), attributeValue, definitions) + if attributeName == propertyName { + legacyAttribute.Name = fmt.Sprintf("Deprecated_%s", legacyAttribute.Name) + } + if legacyAttribute.ReplacedBy.ClassName != "" && legacyAttribute.ReplacedBy.ClassName != m.PkgName { + legacyAttribute.Name = Capitalize(legacyAttribute.ReplacedBy.ClassName) + } + m.LegacyAttributes[propertyName] = legacyAttribute + } + + } + +} + +func (m *Model) GetLegacyAttribute(attributeName, className string, attributeValue interface{}, definitions Definitions) (LegacyAttribute, string) { + optional := false + if attributeValue.(map[string]interface{})["optional"] != nil { + optional = attributeValue.(map[string]interface{})["optional"].(bool) + } + + computed := false + if attributeValue.(map[string]interface{})["computed"] != nil { + computed = attributeValue.(map[string]interface{})["computed"].(bool) + } + + required := false + if attributeValue.(map[string]interface{})["required"] != nil { + required = attributeValue.(map[string]interface{})["required"].(bool) + } + + valueType := []string{} + if value, found := attributeValue.(map[string]interface{})["type"].(string); found { + valueType = []string{value} + } else { + for _, value := range attributeValue.(map[string]interface{})["type"].([]interface{}) { + valueType = append(valueType, value.(string)) + } + } + + replacedBy := m.GetOverwriteAttributeMigration(definitions, attributeName, className) + + var propertyName string + if replacedBy != nil { + propertyName = GetOverwriteAttributeName(m.PkgName, replacedBy.(ReplacementAttribute).AttributeName, definitions) + } else { + propertyName = attributeName + } + + if propertyName == "id_attribute" || propertyName == "id" { + propertyName = "Id" + } else if propertyName == "parent_dn" { + propertyName = "ParentDn" + } else { + for _, property := range m.Properties { + if GetOverwriteAttributeName(m.PkgName, property.SnakeCaseName, definitions) == propertyName { + propertyName = property.Name + break + } + } + } + + legacyAttribute := LegacyAttribute{ + Name: propertyName, + AttributeName: attributeName, + ValueType: valueType, + Optional: optional, + Computed: computed, + Required: required, + } + + if replacedBy != nil { + legacyAttribute.ReplacedBy = replacedBy.(ReplacementAttribute) + } + + return legacyAttribute, propertyName +} + /* Determine if a property comment from meta data should be overwritten by a comment overwrite in the properties.yaml file Precendence order is: @@ -1462,6 +1822,80 @@ func SetModelTargetValues(PkgName string, model *Model, classModels map[string]M model.TargetResourceName = GetResourceName(model.TargetResourceClassName, definitions) } +func (m *Model) GetClassForBlockName(definitions Definitions, blockName string) string { + if v, ok := definitions.Classes[m.PkgName]; ok { + for key, value := range v.(map[interface{}]interface{}) { + if key.(string) == "migration_blocks" { + for className, classValues := range value.(map[interface{}]interface{}) { + for migrationKey := range classValues.(map[interface{}]interface{}) { + if migrationKey.(string) == blockName { + return className.(string) + } + } + } + } + } + } + panic(fmt.Sprintf("Class name not found for block %s", blockName)) +} + +func (m *Model) GetClassFromMigrationClassMapping(definitions Definitions, attributeName string, set bool) string { + if v, ok := definitions.Classes[m.PkgName]; ok { + for key, value := range v.(map[interface{}]interface{}) { + if key.(string) == "migration_blocks" { + for className, attributes := range value.(map[interface{}]interface{}) { + if set { + if className.(string) != m.PkgName && len(attributes.(map[interface{}]interface{})) == 1 { + for name := range attributes.(map[interface{}]interface{}) { + if name.(string) == attributeName { + return className.(string) + } + } + } + } else { + for name := range attributes.(map[interface{}]interface{}) { + if name.(string) == attributeName { + return className.(string) + } + } + } + } + } + } + } + return m.PkgName +} + +func (m *Model) GetOverwriteAttributeMigration(definitions Definitions, attributeName, className string) interface{} { + if v, ok := definitions.Classes[m.PkgName]; ok { + for key, value := range v.(map[interface{}]interface{}) { + if key.(string) == "migration_blocks" { + for classNameDefinition, classValues := range value.(map[interface{}]interface{}) { + if classNameDefinition.(string) == className { + for migrationKey, migrationValue := range classValues.(map[interface{}]interface{}) { + if strings.Contains(migrationKey.(string), attributeName) { + return ReplacementAttribute{AttributeName: migrationValue.(string), ClassName: className} + } + } + } + } + } + } + } + return nil +} + +func isMigrationResource(classPkgName string, definitions Definitions) bool { + if v, ok := definitions.Classes[classPkgName]; ok { + for key := range v.(map[interface{}]interface{}) { + if key.(string) == "migration_blocks" { + return true + } + } + } + return false +} + // Set variables that are used during the rendering of the example and documentation templates func setDocumentationData(m *Model, definitions Definitions) { UiLocations := []string{} @@ -1513,7 +1947,6 @@ func setDocumentationData(m *Model, definitions Definitions) { if len(resourcesNotFound) != 0 && len(resourcesFound) < docsParentDnAmount { if len(resourcesNotFound) > docsParentDnAmount-len(resourcesFound) { - // TODO catch default classes and add to documentation resourcesNotFound = resourcesNotFound[0:(docsParentDnAmount - len(resourcesFound))] m.DocumentationParentDns = append(m.DocumentationParentDns, fmt.Sprintf("Too many classes to display, see model documentation for all possible classes of %s.", GetDevnetDocForClass(m.PkgName))) } else { diff --git a/gen/templates/resource.go.tmpl b/gen/templates/resource.go.tmpl index b0fb7d736..59b73d9d8 100644 --- a/gen/templates/resource.go.tmpl +++ b/gen/templates/resource.go.tmpl @@ -21,6 +21,9 @@ import ( {{- if .HasValidValues}} "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" {{- end}} + {{- if .LegacyAttributes}} + "github.com/hashicorp/terraform-plugin-framework/attr" + {{- end}} "github.com/hashicorp/terraform-plugin-framework/diag" "github.com/hashicorp/terraform-plugin-framework/path" "github.com/hashicorp/terraform-plugin-framework/resource" @@ -72,6 +75,14 @@ type {{.ResourceClassName}}ResourceModel struct { {{- range .Children}} {{ .ResourceClassName }} types.Set `tfsdk:"{{- .ResourceName}}"` {{- end}} + {{- if .LegacyAttributes}} + {{- range .LegacyAttributes}}{{- if ne .ReplacedBy.AttributeName "" }} + Deprecated{{ .Name }} types.{{getMigrationType .ValueType}} `tfsdk:"{{.AttributeName}}"` + {{- end }}{{- end }} + {{- range .LegacyBlocks}} + Deprecated{{ capitalize .ClassName }} types.Set `tfsdk:"{{.Name}}"` + {{- end }} + {{- end }} } {{- range .Children}} @@ -99,6 +110,629 @@ type {{.ResourceClassName}}Identifier struct { } {{- end}} +{{ if .LegacyAttributes}} +{{- range .LegacyBlocks}} +var deprecated{{ capitalize .ClassName }}Type = types.ObjectType{ + AttrTypes: map[string]attr.Type{ + {{- range .Attributes}} + {{- if eq (getMigrationType .ValueType) "String"}} + "{{.AttributeName}}": basetypes.StringType{}, + {{- end}} + {{- end}} + }, +} +{{ end}} + +type {{.ResourceClassName}}ResourceModelV{{.LegacySchemaVersion}} struct { + {{- range .LegacyAttributes}} + {{ .Name }} types.{{getMigrationType .ValueType}} `tfsdk:"{{.AttributeName}}"` + {{- end }} + {{- range .LegacyBlocks}} + {{ capitalize .ClassName }} types.Set `tfsdk:"{{.Name}}"` + {{- end }} +} + + {{ range .LegacyBlocks}} +type {{ capitalize .ClassName }}{{$.ResourceClassName}}ResourceModelV{{$.LegacySchemaVersion}} struct { + {{- range .Attributes}} + {{ .Name }} types.{{getMigrationType .ValueType}} `tfsdk:"{{.AttributeName}}"` + {{- end}} +} + {{ end}} + +func (r *{{.ResourceClassName}}Resource) UpgradeState(ctx context.Context) map[int64]resource.StateUpgrader { + return map[int64]resource.StateUpgrader{ + {{.LegacySchemaVersion}}: { + PriorSchema: &schema.Schema{ + Attributes: map[string]schema.Attribute{ + {{- range .LegacyAttributes}} + {{- if eq (getMigrationType .ValueType) "String"}} + "{{.AttributeName}}": schema.StringAttribute{ + Required: {{.Required}}, + Optional: {{.Optional}}, + Computed: {{.Computed}}, + }, + {{- end}} + {{- if eq (getMigrationType .ValueType) "Set"}} + "{{.AttributeName}}": schema.SetAttribute{ + Required: {{.Required}}, + Optional: {{.Optional}}, + Computed: {{.Computed}}, + ElementType: types.StringType, + }, + {{- end}} + {{- if eq (getMigrationType .ValueType) "List"}} + "{{.AttributeName}}": schema.ListAttribute{ + Required: {{.Required}}, + Optional: {{.Optional}}, + Computed: {{.Computed}}, + ElementType: types.StringType, + }, + {{- end}} + {{- end}} + }, + Blocks: map[string]schema.Block{ + {{- range .LegacyBlocks}} + "{{ .Name }}": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + {{- range .Attributes}} + {{- if eq (getMigrationType .ValueType) "String"}} + "{{.AttributeName}}": schema.StringAttribute{ + Required: {{.Required}}, + Optional: {{.Optional}}, + Computed: {{.Computed}}, + }, + {{- end}} + {{- if eq (getMigrationType .ValueType) "Set"}} + "{{.AttributeName}}": schema.SetAttribute{ + Required: {{.Required}}, + Optional: {{.Optional}}, + Computed: {{.Computed}}, + ElementType: types.StringType, + }, + {{- end}} + {{- if eq (getMigrationType .ValueType) "List"}} + "{{.AttributeName}}": schema.ListAttribute{ + Required: {{.Required}}, + Optional: {{.Optional}}, + Computed: {{.Computed}}, + ElementType: types.StringType, + }, + {{- end}} + {{- end}} + }, + }, + }, + {{- end }} + }, + }, + StateUpgrader: func(ctx context.Context, req resource.UpgradeStateRequest, resp *resource.UpgradeStateResponse) { + var priorStateData {{.ResourceClassName}}ResourceModelV{{.LegacySchemaVersion}} + + resp.Diagnostics.Append(req.State.Get(ctx, &priorStateData)...) + + if resp.Diagnostics.HasError() { + return + } + + upgradedStateData := {{.ResourceClassName}}ResourceModel{ + Id: priorStateData.Id, + {{- if .HasParent}} + ParentDn: priorStateData.ParentDn, + {{- end}} + {{- range .Properties}} + {{- if isLegacyAttribute .Name $.LegacyAttributes}} + {{ .Name }}: priorStateData.{{ .Name }}, + {{- else if ne .ValueType "bitmask"}} + {{ .Name }}: basetypes.NewStringNull(), + {{- else if eq .ValueType "bitmask"}} + {{ .Name }}: types.SetNull(types.StringType), + {{- end}} + {{- end}} + {{- range .LegacyAttributes}}{{- if ne .ReplacedBy.AttributeName "" }} + {{- if eq (getMigrationType .ValueType) "String"}} + Deprecated{{ .Name }}: priorStateData.{{ .Name }}, + {{- end }}{{- end }} + {{- end }} + } + + {{ range .Children}} + {{- if isLegacyChild .PkgName $.LegacyChildren}}{{ $PkgName := .PkgName}} + {{.ResourceClassName}}List := make([]{{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel, 0) + {{- $childClassType := getValueFromMap .PkgName $.MigrationClassTypes}} + {{- if eq $childClassType "string" }} + {{.ResourceClassName}} := {{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel{ + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute $PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if eq $AttributeName ""}} + {{ .Name }}: basetypes.NewStringNull(), + {{- else}} + {{- if isNewNamedClassAttribute $Overwrite }} + {{ .Name }}: basetypes.NewStringValue(GetMOName(priorStateData.{{ $AttributeName }}.ValueString())), + {{- else}} + {{ .Name }}: priorStateData.{{ $AttributeName }}, + {{- end}} + {{- end}} + {{- end}} + } + {{.ResourceClassName}}List = append({{.ResourceClassName}}List, {{.ResourceClassName}}) + {{.ResourceClassName}}Type := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + "{{$Overwrite}}": basetypes.StringType{}, + {{- end}} + }, + } + {{.ResourceClassName}}Set, _ := types.SetValueFrom(ctx, {{.ResourceClassName}}Type, {{.ResourceClassName}}List) + upgradedStateData.{{.ResourceClassName}} = {{.ResourceClassName}}Set + {{- else if eq $childClassType "block,set" }} + var priorStateData{{.ResourceClassName}}List []{{ .ResourceClassName }}{{$.ResourceClassName}}ResourceModelV{{$.LegacySchemaVersion}} + priorStateData.{{.ResourceClassName}}.ElementsAs(ctx, &priorStateData{{.ResourceClassName}}List, false) + for _, priorStateData{{.ResourceClassName}} := range priorStateData{{.ResourceClassName}}List { + {{ .ResourceClassName }} := {{ .ResourceClassName }}{{$.ResourceClassName}}ResourceModel { + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute $PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if eq $AttributeName ""}} + {{ .Name }}: basetypes.NewStringNull(), + {{- else}} + {{ .Name }}: priorStateData{{.ResourceClassName}}.{{ $AttributeName }}, + {{- end}} + {{- end}} + } + {{.ResourceClassName}}List = append({{.ResourceClassName}}List, {{ .ResourceClassName }}) + } + {{.ResourceClassName}}Type := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + "{{$Overwrite}}": basetypes.StringType{}, + {{- end}} + }, + } + {{.ResourceClassName}}Set, _ := types.SetValueFrom(ctx, {{.ResourceClassName}}Type, {{.ResourceClassName}}List) + upgradedStateData.{{.ResourceClassName}} = {{.ResourceClassName}}Set + {{- else if eq $childClassType "set,string" }} + var priorStateData{{.ResourceClassName}}List []string + priorStateData.{{.ResourceClassName}}.ElementsAs(ctx, &priorStateData{{.ResourceClassName}}List, false) + for _, priorStateData{{.ResourceClassName}} := range priorStateData{{.ResourceClassName}}List { + {{ .ResourceClassName }} := {{ .ResourceClassName }}{{$.ResourceClassName}}ResourceModel { + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute $PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if eq $AttributeName ""}} + {{ .Name }}: basetypes.NewStringNull(), + {{- else}} + {{- if isNewNamedClassAttribute $Overwrite }} + {{ .Name }}: basetypes.NewStringValue(GetMOName(priorStateData{{ .ResourceClassName }})), + {{- else}} + {{ .Name }}: basetypes.NewStringValue(priorStateData{{ .ResourceClassName }}), + {{- end}} + {{- end}} + {{- end}} + } + {{.ResourceClassName}}List = append({{.ResourceClassName}}List, {{ .ResourceClassName }}) + } + {{.ResourceClassName}}Type := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + "{{$Overwrite}}": basetypes.StringType{}, + {{- end}} + }, + } + {{.ResourceClassName}}Set, _ := types.SetValueFrom(ctx, {{.ResourceClassName}}Type, {{.ResourceClassName}}List) + upgradedStateData.{{.ResourceClassName}} = {{.ResourceClassName}}Set + {{- end}} + + {{ else}} + upgradedStateData.{{ .ResourceClassName }} = types.SetNull( + types.ObjectType{ + AttrTypes: map[string]attr.Type{ + {{- range .Properties}} + {{- if ne .ValueType "bitmask"}} + "{{overwriteProperty .PkgName .SnakeCaseName $.Definitions}}": basetypes.StringType{}, + {{- end}} + {{- end}} + }, + }, + ) + {{ end}} + {{- end}} + + {{- range .LegacyAttributes}}{{- if ne .ReplacedBy.AttributeName "" }} + {{- if or (eq (getMigrationType .ValueType) "Set") (eq (getMigrationType .ValueType) "List")}} + var deprecated{{ .Name }}List []string + priorStateData.{{ .Name }}.ElementsAs(ctx, &deprecated{{ .Name }}List, false) + Deprecated{{ .Name }}Set, _ := types.SetValueFrom(ctx, types.StringType, deprecated{{ .Name }}List) + upgradedStateData.Deprecated{{ .Name }} = Deprecated{{ .Name }}Set + {{ end }}{{- end }} + {{- end }} + + {{ range .LegacyBlocks}} + var {{ capitalize .ClassName }}V1List []{{ capitalize .ClassName }}{{$.ResourceClassName}}ResourceModelV{{$.LegacySchemaVersion}} + priorStateData.{{ capitalize .ClassName }}.ElementsAs(ctx, &{{ capitalize .ClassName }}V1List, false) + {{ capitalize .ClassName }}V1Set, _ := types.SetValueFrom(ctx, deprecated{{ capitalize .ClassName }}Type, {{ capitalize .ClassName }}V1List) + upgradedStateData.Deprecated{{ capitalize .ClassName }} = {{ capitalize .ClassName }}V1Set + {{ end}} + + resp.Diagnostics.Append(resp.State.Set(ctx, upgradedStateData)...) + }, + }, + } +} + +func set{{ .ResourceClassName }}LegacyAttributes(ctx context.Context, diags *diag.Diagnostics, data *{{.ResourceClassName}}ResourceModel, classReadInfo []interface{}) { + {{- if .HasParent}} + data.DeprecatedParentDn = data.ParentDn + {{- end}} + attributes := classReadInfo[0].(map[string]interface{})["attributes"].(map[string]interface{}) + for attributeName, attributeValue := range attributes { + {{- range .LegacyAttributes}}{{- if ne .ReplacedBy.AttributeName "" }} + {{- if and (isNewAttributeStringType .ReplacedBy.AttributeName) (ne .Name "ParentDn")}} + if attributeName == "{{decapitalize .Name}}" { + data.Deprecated{{.Name}} = basetypes.NewStringValue(attributeValue.(string)) + } + {{- end }}{{- end }} + {{- end }} + } + + {{- if .HasChild}} + {{- range $.Children}}{{- if isLegacyChild .PkgName $.LegacyChildren}} + {{- $childClassType := getValueFromMap .PkgName $.MigrationClassTypes}} + {{- if eq $childClassType "set,string" }} + Deprecated{{.ResourceClassName}}{{$.ResourceClassName}}List := make([]string, 0) + {{- end }} + {{- end }}{{- end }} + + _, ok := classReadInfo[0].(map[string]interface{})["children"] + if ok { + children := classReadInfo[0].(map[string]interface{})["children"].([]interface{}) + for _, child := range children { + for childClassName, childClassDetails := range child.(map[string]interface{}) { + childAttributes := childClassDetails.(map[string]interface{})["attributes"].(map[string]interface{}) + {{- range .Children}}{{- if isLegacyChild .PkgName $.LegacyChildren}} + {{- $childClassType := getValueFromMap .PkgName $.MigrationClassTypes}}{{- if eq $childClassType "string" }} + if childClassName == "{{ .PkgName }}" { + for childAttributeName, childAttributeValue := range childAttributes { + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if eq $AttributeName (capitalize .PkgName)}} + if childAttributeName == "tDn" { + data.Deprecated{{.ResourceClassName}} = basetypes.NewStringValue(childAttributeValue.(string)) + } + {{- else if ne $AttributeName ""}} + if childAttributeName == "{{.PropertyName}}" { + data.Deprecated{{.ResourceClassName}} = basetypes.NewStringValue(childAttributeValue.(string)) + } + {{- end}} + {{- end}} + } + } + {{- else if eq $childClassType "set,string" }} + if childClassName == "{{ .PkgName }}" { + for childAttributeName, childAttributeValue := range childAttributes { + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if eq $AttributeName (capitalize .PkgName)}} + if childAttributeName == "tDn" { + Deprecated{{.ResourceClassName}}{{$.ResourceClassName}}List = append(Deprecated{{.ResourceClassName}}{{$.ResourceClassName}}List, childAttributeValue.(string)) + } + {{- else if ne $AttributeName ""}} + if childAttributeName == "{{.PropertyName}}" { + Deprecated{{.ResourceClassName}}{{$.ResourceClassName}}List = append(Deprecated{{.ResourceClassName}}{{$.ResourceClassName}}List, childAttributeValue.(string)) + } // {{$AttributeName}} + {{- end}} + {{- end}} + } + } + {{- end }} + {{- end }}{{- end }} + } + } + + {{- range .Children}}{{- if isLegacyChild .PkgName $.LegacyChildren}} + {{- $childClassType := getValueFromMap .PkgName $.MigrationClassTypes}} + {{- if eq $childClassType "set,string" }} + {{ .PkgName }}Set, _ := types.SetValueFrom(ctx, data.Deprecated{{ .ResourceClassName }}.ElementType(ctx), Deprecated{{.ResourceClassName}}{{$.ResourceClassName}}List) + data.Deprecated{{ .ResourceClassName }} = {{ .PkgName }}Set + {{- else if eq $childClassType "block,set" }} + data.Deprecated{{ .ResourceClassName }} = types.SetNull(deprecated{{ .ResourceClassName }}Type) + {{- end}} + {{- end}}{{- end}} + } + {{- end }} +} + +func (r *{{.ResourceClassName}}Resource) ModifyPlan(ctx context.Context, req resource.ModifyPlanRequest, resp *resource.ModifyPlanResponse) { + if !req.Plan.Raw.IsNull() { + var planData, stateData, configData *{{.ResourceClassName}}ResourceModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &planData)...) + resp.Diagnostics.Append(req.State.Get(ctx, &stateData)...) + resp.Diagnostics.Append(req.Config.Get(ctx, &configData)...) + + if resp.Diagnostics.HasError() { + return + } + + {{ range .LegacyAttributes}}{{$SetName := .Name}} + {{- if and (ne .ReplacedBy.AttributeName "") (eq (getMigrationType .ValueType) "String") (isNewAttributeStringType .ReplacedBy.AttributeName) }} + if !configData.{{ .Name }}.IsNull() { + planData.Deprecated{{ .Name }} = configData.{{ .Name }} + } else if !configData.Deprecated{{ .Name }}.IsNull() { + planData.{{ .Name }} = configData.Deprecated{{ .Name }} + } else if stateData != nil { // used to replace use state for unknown + planData.Deprecated{{ .Name }} = stateData.Deprecated{{ .Name }} + } + {{- else if and (ne .ReplacedBy.AttributeName "") (eq (getMigrationType .ValueType) "String") }} + if !configData.{{ .Name }}.IsNull() && stateData != nil { + {{- range $.Children}} + {{- if isLegacyChild .PkgName $.LegacyChildren}} + {{- if eq $SetName (capitalize .PkgName)}} + var attributeValues []{{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel + configData.{{.ResourceClassName}}.ElementsAs(ctx, &attributeValues, false) + for _, attributeValue := range attributeValues { + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if ne $AttributeName ""}} + if GetMOName(stateData.Deprecated{{.ResourceClassName}}.ValueString()) == attributeValue.{{ .Name }}.ValueString() { + planData.Deprecated{{.ResourceClassName}} = stateData.Deprecated{{.ResourceClassName}} + } + {{- end}} + {{- end}} + } + {{- end }} + {{- end }} + {{- end }} + } else if !configData.Deprecated{{ .Name }}.IsNull() { + {{- range $.Children}} + {{- if isLegacyChild .PkgName $.LegacyChildren}} + {{- if eq $SetName (capitalize .PkgName)}} + {{.ResourceClassName}}List := make([]{{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel, 0) + {{.ResourceClassName}} := {{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel{ + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if eq .Name "Annotation"}} + {{ .Name }}: planData.Annotation, + {{- else if eq $AttributeName ""}} + {{ .Name }}: basetypes.NewStringNull(), + {{- else}} + {{ .Name }}: {{- if isNewNamedClassAttribute $Overwrite }}basetypes.NewStringValue(GetMOName(configData.Deprecated{{ $AttributeName }}.ValueString())){{- else }}configData.Deprecated{{ .Name }}{{- end }}, + {{- end}} + {{- end}} + } + {{.ResourceClassName}}List = append({{.ResourceClassName}}List, {{.ResourceClassName}}) + {{.ResourceClassName}}Type := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + "{{$Overwrite}}": basetypes.StringType{}, + {{- end}} + }, + } + {{.ResourceClassName}}Set, _ := types.SetValueFrom(ctx, {{.ResourceClassName}}Type, {{.ResourceClassName}}List) + planData.{{.ResourceClassName}} = {{.ResourceClassName}}Set + {{- end }} + {{- end }} + {{- end }} + } else if stateData != nil { // used to replace use state for unknown + {{- range $.Children}} + {{- if isLegacyChild .PkgName $.LegacyChildren}} + {{- if eq $SetName (capitalize .PkgName)}} + planData.Deprecated{{.ResourceClassName}} = stateData.Deprecated{{.ResourceClassName}} + {{- end }} + {{- end }} + {{- end }} + } + {{- else if ne .ReplacedBy.AttributeName "" }} + if !configData.{{ .Name }}.IsNull() && stateData != nil { + {{- range $.Children}} + {{- if isLegacyChild .PkgName $.LegacyChildren}} + {{- if eq $SetName (capitalize .PkgName)}} + var attributeValues []{{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel + var newAttributeValues, stateAttributeValues []string + configData.{{.ResourceClassName}}.ElementsAs(ctx, &attributeValues, false) + stateData.Deprecated{{.ResourceClassName}}.ElementsAs(ctx, &stateAttributeValues, false) + for _, attributeValue := range attributeValues { + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if ne $AttributeName ""}} + newAttributeValues = append(newAttributeValues, attributeValue.{{ .Name }}.ValueString()) + {{- end }} + {{- end }} + } + + if len(newAttributeValues) == len(stateAttributeValues) { + allMatchState := true + for _, stateAttributeValue := range stateAttributeValues { + if !ContainsString(newAttributeValues, GetMOName(stateAttributeValue)) { + allMatchState = false + break + } + } + if allMatchState { + {{.ResourceClassName}}Set, _ := types.SetValueFrom(ctx, basetypes.StringType{}, stateAttributeValues) + planData.Deprecated{{.ResourceClassName}} = {{.ResourceClassName}}Set + } + } + {{- end }} + {{- end }} + {{- end }} + } else if !configData.Deprecated{{ .Name }}.IsNull() && stateData != nil { + {{- range $.Children}} + {{- if isLegacyChild .PkgName $.LegacyChildren}} + {{- if eq $SetName (capitalize .PkgName)}} + {{.ResourceClassName}}List := make([]{{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel, 0) + var attributeValues []string + var newAttributeValues []{{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel + configData.Deprecated{{.ResourceClassName}}.ElementsAs(ctx, &attributeValues, false) + stateData.{{.ResourceClassName}}.ElementsAs(ctx, &newAttributeValues, false) + for _, attributeValue := range attributeValues { + {{.ResourceClassName}}Value := {{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel{} + foundAttributeValue := false + for _, newAttributeValue := range newAttributeValues { + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if ne $AttributeName ""}} + if newAttributeValue.{{ .Name }}.ValueString() == {{- if isNewNamedClassAttribute $Overwrite }}GetMOName(attributeValue){{- else}}attributeValue{{- end}} { + {{.ResourceClassName}}Value = newAttributeValue + foundAttributeValue = true + break + } + {{- end}} + {{- end}} + } + {{ .ResourceClassName }} := {{ .ResourceClassName }}{{$.ResourceClassName}}ResourceModel { + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if ne $AttributeName ""}} + {{ .Name }}: {{- if isNewNamedClassAttribute $Overwrite }}basetypes.NewStringValue(GetMOName(attributeValue)){{- else}}basetypes.NewStringValue(attributeValue){{- end}}, + {{- end}} + {{- end}} + } + + if foundAttributeValue { + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if eq $AttributeName ""}} + {{ .ResourceClassName }}.{{ .Name }} = {{.ResourceClassName}}Value.{{ .Name }} + {{- end}} + {{- end}} + } else { + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if eq .Name "Annotation"}} + {{ .ResourceClassName }}.{{ .Name }} = planData.Annotation + {{- else if ne .DefaultValue ""}} + {{ .ResourceClassName }}.{{ .Name }} = basetypes.NewStringValue("{{ .DefaultValue }}") // Default to default value from meta when not found + {{- end}} + {{- end}} + } + {{.ResourceClassName}}List = append({{.ResourceClassName}}List, {{ .ResourceClassName }}) + } + {{.ResourceClassName}}Type := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + "{{$Overwrite}}": basetypes.StringType{}, + {{- end}} + }, + } + {{.ResourceClassName}}Set, _ := types.SetValueFrom(ctx, {{.ResourceClassName}}Type, {{.ResourceClassName}}List) + planData.{{.ResourceClassName}} = {{.ResourceClassName}}Set + {{- end }} + {{- end }} + {{- end }} + } else if stateData != nil { // used to replace use state for unknown + {{- range $.Children}} + {{- if isLegacyChild .PkgName $.LegacyChildren}} + {{- if eq $SetName (capitalize .PkgName)}} + planData.Deprecated{{.ResourceClassName}} = stateData.Deprecated{{.ResourceClassName}} + {{- end }} + {{- end }} + {{- end }} + } + {{- end }} + {{ end }} + + {{ range .LegacyBlocks}}{{$ClassName := .ClassName}}{{$Attributes := .Attributes}} + planData.Deprecated{{ capitalize .ClassName }} = types.SetNull(deprecated{{ capitalize .ClassName }}Type) + if !configData.Deprecated{{ capitalize .ClassName }}.IsNull() && stateData != nil { + {{- range $.Children}} + {{- if isLegacyChild .PkgName $.LegacyChildren}} + {{- if eq $ClassName .PkgName}} + {{ .ResourceClassName }}List := make([]{{ .ResourceClassName }}{{$.ResourceClassName}}ResourceModel, 0) + var attributeValues []{{ .ResourceClassName }}{{$.ResourceClassName}}ResourceModelV1 + var newAttributeValues []{{ .ResourceClassName }}{{$.ResourceClassName}}ResourceModel + configData.Deprecated{{.ResourceClassName}}.ElementsAs(ctx, &attributeValues, false) + stateData.{{.ResourceClassName}}.ElementsAs(ctx, &newAttributeValues, false) + for _, attributeValue := range attributeValues { + {{- $NewProperties := getNewChildAttributes (getChildAttributesFromBlocks $ClassName $.LegacyBlocks) .Properties}} + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if and (ne $AttributeName "") .IsRequired }} + planned{{ .ResourceClassName }} := {{ .ResourceClassName }}{{$.ResourceClassName}}ResourceModel{} + foundAttributeValue := false + for _, newAttributeValue := range newAttributeValues { + if newAttributeValue.{{ .Name }}.ValueString() == {{- if isNewNamedClassAttribute $Overwrite }}GetMOName(attributeValue.{{ $AttributeName }}.ValueString()){{- else}}attributeValue{{- end}} { + planned{{ .ResourceClassName }} = newAttributeValue + foundAttributeValue = true + break + } + } + {{- end}} + {{- end}} + + {{ .ResourceClassName }} := {{ .ResourceClassName }}{{$.ResourceClassName}}ResourceModel { + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if eq .Name "Annotation"}} + {{ .Name }}: planData.Annotation, + {{- else if and (ne $AttributeName "") (not (isNewNamedClassAttribute $Overwrite)) }} + {{ .Name }}: attributeValue.{{ .Name }}, + {{- end}} + {{- end}} + } + + if foundAttributeValue { + {{- range $NewProperties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{ .ResourceClassName }}.{{ .Name }} = planned{{ .ResourceClassName }}.{{ .Name }} + {{- end}} + } else { + {{- range $NewProperties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} + {{- if isNewNamedClassAttribute $Overwrite }} + {{ .ResourceClassName }}.{{ .Name }} = basetypes.NewStringValue(GetMOName(attributeValue.{{ $AttributeName }}.ValueString())) + {{- else if ne .DefaultValue ""}} + {{ .ResourceClassName }}.{{ .Name }} = basetypes.NewStringValue("{{.DefaultValue}}") // Default to default value from meta when not found + {{- else}} + {{ .ResourceClassName }}.{{ .Name }} = attributeValue.{{ .Name }} + {{- end}} + {{- end}} + } + + {{.ResourceClassName}}List = append({{.ResourceClassName}}List, {{ .ResourceClassName }}) + } + + {{.ResourceClassName}}Type := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + {{- range .Properties}} + {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + "{{$Overwrite}}": basetypes.StringType{}, + {{- end}} + }, + } + {{.ResourceClassName}}Set, _ := types.SetValueFrom(ctx, {{.ResourceClassName}}Type, {{.ResourceClassName}}List) + planData.{{.ResourceClassName}} = {{.ResourceClassName}}Set + + {{- end }} + {{- end }} + {{- end }} + } + {{ end }} + + resp.Diagnostics.Append(resp.Plan.Set(ctx, &planData)...) + } +} +{{- end}} + func (r *{{.ResourceClassName}}Resource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { tflog.Debug(ctx, "Start metadata of resource: aci_{{.ResourceName}}") resp.TypeName = req.ProviderTypeName + "_{{.ResourceName}}" @@ -110,8 +744,57 @@ func (r *{{.ResourceClassName}}Resource) Schema(ctx context.Context, req resourc resp.Schema = schema.Schema{ // This description is used by the documentation generator and the language server. MarkdownDescription: "The {{.ResourceName}} resource for the '{{.PkgName}}' class", + {{- if .LegacyAttributes}} + Version: {{add .LegacySchemaVersion 1}}, + {{- end}} Attributes: map[string]schema.Attribute{ + {{- if .LegacyAttributes}} + // Deprecated attributes + {{- range .LegacyAttributes}} + {{- if ne .ReplacedBy.AttributeName "" }} + {{- if eq (getMigrationType .ValueType) "String"}} + "{{.AttributeName}}": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute '{{.AttributeName}}' will be deprecated soon, please use '{{.ReplacedBy.AttributeName}}' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("{{getConflictingAttributeName .ReplacedBy.AttributeName}}"), + }...), + }, + }, + {{- end}} + {{- if eq (getMigrationType .ValueType) "Set"}} + "{{.AttributeName}}": schema.SetAttribute{ + Optional: true, + Computed: true, + ElementType: types.StringType, + DeprecationMessage: "Attribute '{{.AttributeName}}' will be deprecated soon, please use '{{.ReplacedBy.AttributeName}}' instead", + Validators: []validator.Set{ + setvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("{{getConflictingAttributeName .ReplacedBy.AttributeName}}"), + }...), + }, + }, + {{- end}} + {{- if eq (getMigrationType .ValueType) "List"}} + "{{.AttributeName}}": schema.ListAttribute{ + Optional: true, + Computed: true, + ElementType: types.StringType, + DeprecationMessage: "Attribute '{{.AttributeName}}' will be deprecated soon, please use '{{.ReplacedBy.AttributeName}}' instead", + Validators: []validator.List{ + listvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("{{getConflictingAttributeName .ReplacedBy.AttributeName}}"), + }...), + }, + }, + {{- end}} + {{- end}} + {{- end}} + // End of deprecated attributes + {{- end}} "id": schema.StringAttribute{ Computed: true, MarkdownDescription: "The distinguished name (DN) of the {{getResourceNameAsDescription .ResourceName $.Definitions}} object.", @@ -121,7 +804,11 @@ func (r *{{.ResourceClassName}}Resource) Schema(ctx context.Context, req resourc }, {{- if .HasParent}} "parent_dn": schema.StringAttribute{ - {{- if getDefaultValues .PkgName "parent_dn" $.Definitions}} + {{- $LegacyAttributeName := getPropertyNameForLegacyAttribute "parent_dn" $.LegacyAttributes}} + {{- if ne $LegacyAttributeName ""}} + Optional: true, + Computed: true, + {{- else if getDefaultValues .PkgName "parent_dn" $.Definitions}} Optional: true, Computed: true, Default: stringdefault.StaticString("{{getDefaultValues .PkgName "parent_dn" $.Definitions}}"), @@ -133,31 +820,45 @@ func (r *{{.ResourceClassName}}Resource) Schema(ctx context.Context, req resourc stringplanmodifier.UseStateForUnknown(), stringplanmodifier.RequiresReplace(), }, + {{- if ne $LegacyAttributeName ""}} + Validators: []validator.String{ + stringvalidator.AtLeastOneOf(path.Expressions{ + path.MatchRoot("{{$LegacyAttributeName}}"), + }...), + }, + {{- end}} }, {{- end}} {{- range .Properties}} + {{- $OverwritePropertyName := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- $LegacyAttributeName := getPropertyNameForLegacyAttribute $OverwritePropertyName $.LegacyAttributes}} {{- if eq .ValueType "bitmask"}} - "{{overwriteProperty .PkgName .SnakeCaseName $.Definitions}}": schema.SetAttribute{ + "{{$OverwritePropertyName}}": schema.SetAttribute{ MarkdownDescription: `{{.Comment}}`, Optional: true, Computed: true, PlanModifiers: []planmodifier.Set{ setplanmodifier.UseStateForUnknown(), }, - {{- if .ValidValues}} + {{- if .ValidValues}} Validators: []validator.Set{ setvalidator.SizeAtMost({{ len .ValidValues }}), setvalidator.ValueStringsAre( stringvalidator.OneOf({{- validatorString .ValidValues}}), ), }, - {{- end}} + {{- end}} ElementType: types.StringType, }, {{- else}} - "{{overwriteProperty .PkgName .SnakeCaseName $.Definitions}}": schema.StringAttribute{ + "{{$OverwritePropertyName}}": schema.StringAttribute{ {{- if or .IsNaming .IsRequired}} + {{- if ne $LegacyAttributeName ""}} + Optional: true, + Computed: true, + {{- else}} Required: true, + {{- end}} {{- else }} Optional: true, Computed: true, @@ -171,9 +872,16 @@ func (r *{{.ResourceClassName}}Resource) Schema(ctx context.Context, req resourc {{- if eq .Name "Annotation"}} Default: stringdefault.StaticString(globalAnnotation), {{- end}} - {{- if .ValidValues}} + {{- if or .ValidValues (ne $LegacyAttributeName "")}} Validators: []validator.String{ + {{- if .ValidValues}} stringvalidator.OneOf({{- validatorString .ValidValues}}), + {{- end}} + {{- if and (ne $LegacyAttributeName "") (or .IsNaming .IsRequired)}} + stringvalidator.AtLeastOneOf(path.Expressions{ + path.MatchRoot("{{$LegacyAttributeName}}"), + }...), + {{- end}} }, {{- end}} MarkdownDescription: `{{.Comment}}`, @@ -239,6 +947,56 @@ func (r *{{.ResourceClassName}}Resource) Schema(ctx context.Context, req resourc }, {{- end}} }, + {{- if .LegacyAttributes}} + Blocks: map[string]schema.Block{ + {{- range .LegacyBlocks}} + "{{ .Name }}": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + {{- range .Attributes}} + {{- if eq (getMigrationType .ValueType) "String"}} + "{{.AttributeName}}": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute '{{.AttributeName}}' will be deprecated soon, please use '{{.ReplacedBy.AttributeName}}' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("{{getConflictingAttributeName .ReplacedBy.AttributeName}}"), + }...), + }, + }, + {{- end}} + {{- if eq (getMigrationType .ValueType) "Set"}} + "{{.AttributeName}}": schema.SetAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute '{{.AttributeName}}' will be deprecated soon, please use '{{.ReplacedBy.AttributeName}}' instead", + Validators: []validator.Set{ + setvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("{{getConflictingAttributeName .ReplacedBy.AttributeName}}"), + }...), + }, + }, + {{- end}} + {{- if eq (getMigrationType .ValueType) "List"}} + "{{.AttributeName}}": schema.ListAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute '{{.AttributeName}}' will be deprecated soon, please use '{{.ReplacedBy.AttributeName}}' instead", + Validators: []validator.List{ + listvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("{{getConflictingAttributeName .ReplacedBy.AttributeName}}"), + }...), + }, + }, + {{- end}} + {{- end}} + }, + }, + }, + {{- end }} + }, + {{- end}} } tflog.Debug(ctx, "End schema of resource: aci_{{.ResourceName}}") } @@ -550,6 +1308,9 @@ func getAndSet{{.ResourceClassName}}Attributes(ctx context.Context, diags *diag. data.{{ .ResourceClassName }} = {{ .PkgName }}Set {{- end}} {{- end}} + {{- if .LegacyAttributes}} + set{{ .ResourceClassName }}LegacyAttributes(ctx, diags, data, classReadInfo) + {{- end}} } else { diags.AddError( "too many results in response", From 2990bd052e3199b1881df8c54ed35db31c9d71f2 Mon Sep 17 00:00:00 2001 From: akinross Date: Mon, 13 May 2024 09:04:36 +0200 Subject: [PATCH 02/22] [ignore] Removal of legacy docs, examples and code for aci_esg resource and datasource --- aci/data_source_aci_fvesg.go | 61 -- aci/provider.go | 2 - aci/resource_aci_fvesg.go | 815 ------------------ aci/resource_aci_fvesg_test.go | 112 --- .../aci_endpoint_security_group.tf | 39 - .../aci_endpoint_security_group/aci_tenant.tf | 9 - .../aci_endpoint_security_group/contract.tf | 32 - examples/aci_endpoint_security_group/main.tf | 14 - examples/aci_endpoint_security_group/rest.tf | 39 - examples/aci_endpoint_security_group/vrf.tf | 4 - .../d/endpoint_security_group.html.markdown | 45 - .../r/endpoint_security_group.html.markdown | 106 --- 12 files changed, 1278 deletions(-) delete mode 100644 aci/data_source_aci_fvesg.go delete mode 100644 aci/resource_aci_fvesg.go delete mode 100644 aci/resource_aci_fvesg_test.go delete mode 100644 examples/aci_endpoint_security_group/aci_endpoint_security_group.tf delete mode 100644 examples/aci_endpoint_security_group/aci_tenant.tf delete mode 100644 examples/aci_endpoint_security_group/contract.tf delete mode 100644 examples/aci_endpoint_security_group/main.tf delete mode 100644 examples/aci_endpoint_security_group/rest.tf delete mode 100644 examples/aci_endpoint_security_group/vrf.tf delete mode 100644 legacy-docs/docs/d/endpoint_security_group.html.markdown delete mode 100644 legacy-docs/docs/r/endpoint_security_group.html.markdown diff --git a/aci/data_source_aci_fvesg.go b/aci/data_source_aci_fvesg.go deleted file mode 100644 index 5c5fa4dcf..000000000 --- a/aci/data_source_aci_fvesg.go +++ /dev/null @@ -1,61 +0,0 @@ -package aci - -import ( - "context" - "fmt" - - "github.com/ciscoecosystem/aci-go-client/v2/client" - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" -) - -func dataSourceAciEndpointSecurityGroup() *schema.Resource { - return &schema.Resource{ - ReadContext: dataSourceAciEndpointSecurityGroupRead, - SchemaVersion: 1, - Schema: AppendBaseAttrSchema(AppendNameAliasAttrSchema(map[string]*schema.Schema{ - "application_profile_dn": { - Type: schema.TypeString, - Required: true, - }, - "annotation": { - Type: schema.TypeString, - Computed: true, - }, - "match_t": { - Type: schema.TypeString, - Computed: true, - }, - "name": { - Type: schema.TypeString, - Required: true, - }, - "pc_enf_pref": { - Type: schema.TypeString, - Computed: true, - }, - "pref_gr_memb": { - Type: schema.TypeString, - Computed: true, - }, - })), - } -} - -func dataSourceAciEndpointSecurityGroupRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - aciClient := m.(*client.Client) - name := d.Get("name").(string) - ApplicationProfileDn := d.Get("application_profile_dn").(string) - rn := fmt.Sprintf("esg-%s", name) - dn := fmt.Sprintf("%s/%s", ApplicationProfileDn, rn) - fvESg, err := getRemoteEndpointSecurityGroup(aciClient, dn) - if err != nil { - return diag.FromErr(err) - } - d.SetId(dn) - _, err = setEndpointSecurityGroupAttributes(fvESg, d) - if err != nil { - return diag.FromErr(err) - } - return nil -} diff --git a/aci/provider.go b/aci/provider.go index e5a5644c6..f10b26380 100644 --- a/aci/provider.go +++ b/aci/provider.go @@ -236,7 +236,6 @@ func Provider() *schema.Provider { "aci_l3out_static_route_next_hop": resourceAciL3outStaticRouteNextHop(), "aci_l3out_vpc_member": resourceAciL3outVPCMember(), "aci_endpoint_security_group_selector": resourceAciEndpointSecurityGroupSelector(), - "aci_endpoint_security_group": resourceAciEndpointSecurityGroup(), "aci_endpoint_security_group_epg_selector": resourceAciEndpointSecurityGroupEPgSelector(), "aci_endpoint_security_group_tag_selector": resourceAciEndpointSecurityGroupTagSelector(), "aci_bfd_interface_policy": resourceAciBFDInterfacePolicy(), @@ -491,7 +490,6 @@ func Provider() *schema.Provider { "aci_l3out_static_route_next_hop": dataSourceAciL3outStaticRouteNextHop(), "aci_l3out_vpc_member": dataSourceAciL3outVPCMember(), "aci_endpoint_security_group_selector": dataSourceAciEndpointSecurityGroupSelector(), - "aci_endpoint_security_group": dataSourceAciEndpointSecurityGroup(), "aci_endpoint_security_group_epg_selector": dataSourceAciEndpointSecurityGroupEPgSelector(), "aci_endpoint_security_group_tag_selector": dataSourceAciEndpointSecurityGroupTagSelector(), "aci_bfd_interface_policy": dataSourceAciBFDInterfacePolicy(), diff --git a/aci/resource_aci_fvesg.go b/aci/resource_aci_fvesg.go deleted file mode 100644 index 1771ff819..000000000 --- a/aci/resource_aci_fvesg.go +++ /dev/null @@ -1,815 +0,0 @@ -package aci - -import ( - "context" - "fmt" - "log" - - "github.com/ciscoecosystem/aci-go-client/v2/client" - "github.com/ciscoecosystem/aci-go-client/v2/models" - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" -) - -func resourceAciEndpointSecurityGroup() *schema.Resource { - return &schema.Resource{ - CreateContext: resourceAciEndpointSecurityGroupCreate, - UpdateContext: resourceAciEndpointSecurityGroupUpdate, - ReadContext: resourceAciEndpointSecurityGroupRead, - DeleteContext: resourceAciEndpointSecurityGroupDelete, - - Importer: &schema.ResourceImporter{ - State: resourceAciEndpointSecurityGroupImport, - }, - - SchemaVersion: 1, - Schema: AppendBaseAttrSchema(AppendNameAliasAttrSchema(map[string]*schema.Schema{ - - "application_profile_dn": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - }, - "match_t": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ValidateFunc: validation.StringInSlice([]string{ - "All", - "AtleastOne", - "AtmostOne", - "None", - }, false), - }, - "name": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - }, - "pc_enf_pref": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ValidateFunc: validation.StringInSlice([]string{ - "enforced", - "unenforced", - }, false), - }, - "pref_gr_memb": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ValidateFunc: validation.StringInSlice([]string{ - "exclude", - "include", - }, false), - }, - "relation_fv_rs_cons": { - Type: schema.TypeSet, - Optional: true, - Description: "Create relation to vzBrCP", - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{"prio": { - Optional: true, - Type: schema.TypeString, - ValidateFunc: validation.StringInSlice([]string{ - "level1", - "level2", - "level3", - "level4", - "level5", - "level6", - "unspecified", - }, false), - }, - "target_dn": { - Required: true, - Type: schema.TypeString, - }, - }, - }, - }, - "relation_fv_rs_cons_if": { - Type: schema.TypeSet, - Optional: true, - Description: "Create relation to vzCPIf", - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{"prio": { - Optional: true, - Type: schema.TypeString, - ValidateFunc: validation.StringInSlice([]string{ - "level1", - "level2", - "level3", - "level4", - "level5", - "level6", - "unspecified", - }, false), - }, - "target_dn": { - Required: true, - Type: schema.TypeString, - }, - }, - }, - }, - "relation_fv_rs_cust_qos_pol": { - Type: schema.TypeString, - Optional: true, - Description: "Create relation to qos:CustomPol", - Deprecated: "Remove `relation_fv_rs_cust_qos_pol` configuration as it is not used by ESG configuration. The attribute will be removed in the next major version of the provider.", - }, - "relation_fv_rs_intra_epg": { - Type: schema.TypeSet, - Elem: &schema.Schema{Type: schema.TypeString}, - Optional: true, - Description: "Create relation to vz:BrCP", - Set: schema.HashString, - }, - "relation_fv_rs_prot_by": { - Type: schema.TypeSet, - Elem: &schema.Schema{Type: schema.TypeString}, - Optional: true, - Description: "Create relation to vz:Taboo", - Set: schema.HashString, - }, - "relation_fv_rs_prov": { - Type: schema.TypeSet, - Optional: true, - Description: "Create relation to vzBrCP", - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "match_t": { - Optional: true, - Type: schema.TypeString, - ValidateFunc: validation.StringInSlice([]string{ - "All", - "AtleastOne", - "AtmostOne", - "None", - }, false), - }, "prio": { - Optional: true, - Type: schema.TypeString, - ValidateFunc: validation.StringInSlice([]string{ - "level1", - "level2", - "level3", - "level4", - "level5", - "level6", - "unspecified", - }, false), - }, - "target_dn": { - Required: true, - Type: schema.TypeString, - }, - }, - }, - }, - "relation_fv_rs_scope": { - Type: schema.TypeString, - - Optional: true, - Description: "Create relation to fv:Ctx", - }, - "relation_fv_rs_sec_inherited": { - Type: schema.TypeSet, - Elem: &schema.Schema{Type: schema.TypeString}, - Optional: true, - Description: "Create relation to fv:EPg", - Set: schema.HashString, - }})), - } -} - -func getRemoteEndpointSecurityGroup(client *client.Client, dn string) (*models.EndpointSecurityGroup, error) { - fvESgCont, err := client.Get(dn) - if err != nil { - return nil, err - } - fvESg := models.EndpointSecurityGroupFromContainer(fvESgCont) - if fvESg.DistinguishedName == "" { - return nil, fmt.Errorf("Endpoint Security Group %s not found", dn) - } - return fvESg, nil -} - -func setEndpointSecurityGroupAttributes(fvESg *models.EndpointSecurityGroup, d *schema.ResourceData) (*schema.ResourceData, error) { - d.SetId(fvESg.DistinguishedName) - d.Set("description", fvESg.Description) - fvESgMap, err := fvESg.ToMap() - if err != nil { - return d, err - } - d.Set("annotation", fvESgMap["annotation"]) - d.Set("match_t", fvESgMap["matchT"]) - d.Set("name", fvESgMap["name"]) - d.Set("application_profile_dn", GetParentDn(fvESg.DistinguishedName, fmt.Sprintf("/esg-%s", fvESgMap["name"]))) - d.Set("pc_enf_pref", fvESgMap["pcEnfPref"]) - d.Set("pref_gr_memb", fvESgMap["prefGrMemb"]) - d.Set("name_alias", fvESgMap["nameAlias"]) - return d, nil -} - -func resourceAciEndpointSecurityGroupImport(d *schema.ResourceData, m interface{}) ([]*schema.ResourceData, error) { - log.Printf("[DEBUG] %s: Beginning Import", d.Id()) - aciClient := m.(*client.Client) - dn := d.Id() - fvESg, err := getRemoteEndpointSecurityGroup(aciClient, dn) - if err != nil { - return nil, err - } - schemaFilled, err := setEndpointSecurityGroupAttributes(fvESg, d) - if err != nil { - return nil, err - } - log.Printf("[DEBUG] %s: Import finished successfully", d.Id()) - return []*schema.ResourceData{schemaFilled}, nil -} - -func resourceAciEndpointSecurityGroupCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - log.Printf("[DEBUG] EndpointSecurityGroup: Beginning Creation") - aciClient := m.(*client.Client) - desc := d.Get("description").(string) - name := d.Get("name").(string) - ApplicationProfileDn := d.Get("application_profile_dn").(string) - - fvESgAttr := models.EndpointSecurityGroupAttributes{} - nameAlias := "" - if NameAlias, ok := d.GetOk("name_alias"); ok { - nameAlias = NameAlias.(string) - } - if Annotation, ok := d.GetOk("annotation"); ok { - fvESgAttr.Annotation = Annotation.(string) - } else { - fvESgAttr.Annotation = "{}" - } - - if MatchT, ok := d.GetOk("match_t"); ok { - fvESgAttr.MatchT = MatchT.(string) - } - - if Name, ok := d.GetOk("name"); ok { - fvESgAttr.Name = Name.(string) - } - - if PcEnfPref, ok := d.GetOk("pc_enf_pref"); ok { - fvESgAttr.PcEnfPref = PcEnfPref.(string) - } - - if PrefGrMemb, ok := d.GetOk("pref_gr_memb"); ok { - fvESgAttr.PrefGrMemb = PrefGrMemb.(string) - } - - fvESg := models.NewEndpointSecurityGroup(fmt.Sprintf("esg-%s", name), ApplicationProfileDn, desc, nameAlias, fvESgAttr) - - err := aciClient.Save(fvESg) - if err != nil { - return diag.FromErr(err) - } - checkDns := make([]string, 0, 1) - - if relationTofvRsCons, ok := d.GetOk("relation_fv_rs_cons"); ok { - relationParamList := toStringList(relationTofvRsCons.(*schema.Set).List()) - for _, relationParam := range relationParamList { - checkDns = append(checkDns, relationParam) - } - } - - if relationTofvRsConsIf, ok := d.GetOk("relation_fv_rs_cons_if"); ok { - relationParamList := toStringList(relationTofvRsConsIf.(*schema.Set).List()) - for _, relationParam := range relationParamList { - checkDns = append(checkDns, relationParam) - } - } - - if relationTofvRsCustQosPol, ok := d.GetOk("relation_fv_rs_cust_qos_pol"); ok { - relationParam := relationTofvRsCustQosPol.(string) - checkDns = append(checkDns, relationParam) - - } - - if relationTofvRsIntraEpg, ok := d.GetOk("relation_fv_rs_intra_epg"); ok { - relationParamList := toStringList(relationTofvRsIntraEpg.(*schema.Set).List()) - for _, relationParam := range relationParamList { - checkDns = append(checkDns, relationParam) - } - } - - if relationTofvRsProtBy, ok := d.GetOk("relation_fv_rs_prot_by"); ok { - relationParamList := toStringList(relationTofvRsProtBy.(*schema.Set).List()) - for _, relationParam := range relationParamList { - checkDns = append(checkDns, relationParam) - } - } - - if relationTofvRsProv, ok := d.GetOk("relation_fv_rs_prov"); ok { - relationParamList := toStringList(relationTofvRsProv.(*schema.Set).List()) - for _, relationParam := range relationParamList { - checkDns = append(checkDns, relationParam) - } - } - - if relationTofvRsScope, ok := d.GetOk("relation_fv_rs_scope"); ok { - relationParam := relationTofvRsScope.(string) - checkDns = append(checkDns, relationParam) - - } - - if relationTofvRsSecInherited, ok := d.GetOk("relation_fv_rs_sec_inherited"); ok { - relationParamList := toStringList(relationTofvRsSecInherited.(*schema.Set).List()) - for _, relationParam := range relationParamList { - checkDns = append(checkDns, relationParam) - } - } - - d.Partial(true) - err = checkTDn(aciClient, checkDns) - if err != nil { - return diag.FromErr(err) - } - d.Partial(false) - - if relationTofvRsCons, ok := d.GetOk("relation_fv_rs_cons"); ok { - relationParamList := relationTofvRsCons.(*schema.Set).List() - for _, relationParam := range relationParamList { - paramMap := relationParam.(map[string]interface{}) - err = aciClient.CreateRelationfvRsCons(fvESg.DistinguishedName, fvESgAttr.Annotation, paramMap["prio"].(string), GetMOName(paramMap["target_dn"].(string))) - if err != nil { - return diag.FromErr(err) - } - } - } - - if relationTofvRsConsIf, ok := d.GetOk("relation_fv_rs_cons_if"); ok { - relationParamList := relationTofvRsConsIf.(*schema.Set).List() - for _, relationParam := range relationParamList { - paramMap := relationParam.(map[string]interface{}) - - err = aciClient.CreateRelationfvRsConsIf(fvESg.DistinguishedName, fvESgAttr.Annotation, paramMap["prio"].(string), GetMOName(paramMap["target_dn"].(string))) - if err != nil { - return diag.FromErr(err) - } - } - } - - if relationTofvRsCustQosPol, ok := d.GetOk("relation_fv_rs_cust_qos_pol"); ok { - relationParam := relationTofvRsCustQosPol.(string) - err = aciClient.CreateRelationfvRsCustQosPol(fvESg.DistinguishedName, fvESgAttr.Annotation, GetMOName(relationParam)) - if err != nil { - return diag.FromErr(err) - } - - } - - if relationTofvRsIntraEpg, ok := d.GetOk("relation_fv_rs_intra_epg"); ok { - relationParamList := toStringList(relationTofvRsIntraEpg.(*schema.Set).List()) - for _, relationParam := range relationParamList { - err = aciClient.CreateRelationfvRsIntraEpg(fvESg.DistinguishedName, fvESgAttr.Annotation, GetMOName(relationParam)) - if err != nil { - return diag.FromErr(err) - } - } - } - - if relationTofvRsProtBy, ok := d.GetOk("relation_fv_rs_prot_by"); ok { - relationParamList := toStringList(relationTofvRsProtBy.(*schema.Set).List()) - for _, relationParam := range relationParamList { - err = aciClient.CreateRelationfvRsProtBy(fvESg.DistinguishedName, fvESgAttr.Annotation, GetMOName(relationParam)) - if err != nil { - return diag.FromErr(err) - } - } - } - - if relationTofvRsProv, ok := d.GetOk("relation_fv_rs_prov"); ok { - relationParamList := relationTofvRsProv.(*schema.Set).List() - for _, relationParam := range relationParamList { - paramMap := relationParam.(map[string]interface{}) - - err = aciClient.CreateRelationfvRsProv(fvESg.DistinguishedName, fvESgAttr.Annotation, paramMap["match_t"].(string), paramMap["prio"].(string), GetMOName(paramMap["target_dn"].(string))) - if err != nil { - return diag.FromErr(err) - } - } - } - - if relationTofvRsScope, ok := d.GetOk("relation_fv_rs_scope"); ok { - relationParam := relationTofvRsScope.(string) - err = aciClient.CreateRelationfvRsScope(fvESg.DistinguishedName, fvESgAttr.Annotation, GetMOName(relationParam)) - if err != nil { - return diag.FromErr(err) - } - - } - - if relationTofvRsSecInherited, ok := d.GetOk("relation_fv_rs_sec_inherited"); ok { - relationParamList := toStringList(relationTofvRsSecInherited.(*schema.Set).List()) - for _, relationParam := range relationParamList { - err = aciClient.CreateRelationfvRsSecInherited(fvESg.DistinguishedName, fvESgAttr.Annotation, relationParam) - - if err != nil { - return diag.FromErr(err) - } - } - } - - d.SetId(fvESg.DistinguishedName) - log.Printf("[DEBUG] %s: Creation finished successfully", d.Id()) - return resourceAciEndpointSecurityGroupRead(ctx, d, m) -} - -func resourceAciEndpointSecurityGroupUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - log.Printf("[DEBUG] EndpointSecurityGroup: Beginning Update") - aciClient := m.(*client.Client) - desc := d.Get("description").(string) - name := d.Get("name").(string) - ApplicationProfileDn := d.Get("application_profile_dn").(string) - fvESgAttr := models.EndpointSecurityGroupAttributes{} - nameAlias := "" - if NameAlias, ok := d.GetOk("name_alias"); ok { - nameAlias = NameAlias.(string) - } - - if Annotation, ok := d.GetOk("annotation"); ok { - fvESgAttr.Annotation = Annotation.(string) - } else { - fvESgAttr.Annotation = "{}" - } - - if MatchT, ok := d.GetOk("match_t"); ok { - fvESgAttr.MatchT = MatchT.(string) - } - - if Name, ok := d.GetOk("name"); ok { - fvESgAttr.Name = Name.(string) - } - - if PcEnfPref, ok := d.GetOk("pc_enf_pref"); ok { - fvESgAttr.PcEnfPref = PcEnfPref.(string) - } - - if PrefGrMemb, ok := d.GetOk("pref_gr_memb"); ok { - fvESgAttr.PrefGrMemb = PrefGrMemb.(string) - } - - fvESg := models.NewEndpointSecurityGroup(fmt.Sprintf("esg-%s", name), ApplicationProfileDn, desc, nameAlias, fvESgAttr) - - fvESg.Status = "modified" - err := aciClient.Save(fvESg) - if err != nil { - return diag.FromErr(err) - } - - checkDns := make([]string, 0, 1) - - if d.HasChange("relation_fv_rs_cons") || d.HasChange("annotation") { - oldRel, newRel := d.GetChange("relation_fv_rs_cons") - oldRelSet := oldRel.(*schema.Set) - newRelSet := newRel.(*schema.Set) - relToCreate := toStringList(newRelSet.Difference(oldRelSet).List()) - for _, relDn := range relToCreate { - checkDns = append(checkDns, relDn) - } - } - - if d.HasChange("relation_fv_rs_cons_if") || d.HasChange("annotation") { - oldRel, newRel := d.GetChange("relation_fv_rs_cons_if") - oldRelSet := oldRel.(*schema.Set) - newRelSet := newRel.(*schema.Set) - relToCreate := toStringList(newRelSet.Difference(oldRelSet).List()) - for _, relDn := range relToCreate { - checkDns = append(checkDns, relDn) - } - } - - if d.HasChange("relation_fv_rs_cust_qos_pol") || d.HasChange("annotation") { - _, newRelParam := d.GetChange("relation_fv_rs_cust_qos_pol") - checkDns = append(checkDns, newRelParam.(string)) - - } - - if d.HasChange("relation_fv_rs_intra_epg") || d.HasChange("annotation") { - oldRel, newRel := d.GetChange("relation_fv_rs_intra_epg") - oldRelSet := oldRel.(*schema.Set) - newRelSet := newRel.(*schema.Set) - relToCreate := toStringList(newRelSet.Difference(oldRelSet).List()) - for _, relDn := range relToCreate { - checkDns = append(checkDns, relDn) - } - } - - if d.HasChange("relation_fv_rs_prot_by") || d.HasChange("annotation") { - oldRel, newRel := d.GetChange("relation_fv_rs_prot_by") - oldRelSet := oldRel.(*schema.Set) - newRelSet := newRel.(*schema.Set) - relToCreate := toStringList(newRelSet.Difference(oldRelSet).List()) - for _, relDn := range relToCreate { - checkDns = append(checkDns, relDn) - } - } - - if d.HasChange("relation_fv_rs_prov") || d.HasChange("annotation") { - oldRel, newRel := d.GetChange("relation_fv_rs_prov") - oldRelSet := oldRel.(*schema.Set) - newRelSet := newRel.(*schema.Set) - relToCreate := toStringList(newRelSet.Difference(oldRelSet).List()) - for _, relDn := range relToCreate { - checkDns = append(checkDns, relDn) - } - } - - if d.HasChange("relation_fv_rs_scope") || d.HasChange("annotation") { - _, newRelParam := d.GetChange("relation_fv_rs_scope") - checkDns = append(checkDns, newRelParam.(string)) - - } - - if d.HasChange("relation_fv_rs_sec_inherited") || d.HasChange("annotation") { - oldRel, newRel := d.GetChange("relation_fv_rs_sec_inherited") - oldRelSet := oldRel.(*schema.Set) - newRelSet := newRel.(*schema.Set) - relToCreate := toStringList(newRelSet.Difference(oldRelSet).List()) - for _, relDn := range relToCreate { - checkDns = append(checkDns, relDn) - } - } - - d.Partial(true) - err = checkTDn(aciClient, checkDns) - if err != nil { - return diag.FromErr(err) - } - d.Partial(false) - - if d.HasChange("relation_fv_rs_cons") || d.HasChange("annotation") { - oldRel, newRel := d.GetChange("relation_fv_rs_cons") - oldRelList := oldRel.(*schema.Set).List() - newRelList := newRel.(*schema.Set).List() - for _, relationParam := range oldRelList { - paramMap := relationParam.(map[string]interface{}) - - err = aciClient.DeleteRelationfvRsCons(fvESg.DistinguishedName, GetMOName(paramMap["target_dn"].(string))) - if err != nil { - return diag.FromErr(err) - } - } - for _, relationParam := range newRelList { - paramMap := relationParam.(map[string]interface{}) - - err = aciClient.CreateRelationfvRsCons(fvESg.DistinguishedName, fvESgAttr.Annotation, paramMap["prio"].(string), GetMOName(paramMap["target_dn"].(string))) - if err != nil { - return diag.FromErr(err) - } - } - } - if d.HasChange("relation_fv_rs_cons_if") || d.HasChange("annotation") { - oldRel, newRel := d.GetChange("relation_fv_rs_cons_if") - oldRelList := oldRel.(*schema.Set).List() - newRelList := newRel.(*schema.Set).List() - for _, relationParam := range oldRelList { - paramMap := relationParam.(map[string]interface{}) - - err = aciClient.DeleteRelationfvRsConsIf(fvESg.DistinguishedName, GetMOName(paramMap["target_dn"].(string))) - if err != nil { - return diag.FromErr(err) - } - } - for _, relationParam := range newRelList { - paramMap := relationParam.(map[string]interface{}) - - err = aciClient.CreateRelationfvRsConsIf(fvESg.DistinguishedName, fvESgAttr.Annotation, paramMap["prio"].(string), GetMOName(paramMap["target_dn"].(string))) - if err != nil { - return diag.FromErr(err) - } - } - } - if d.HasChange("relation_fv_rs_cust_qos_pol") || d.HasChange("annotation") { - _, newRelParam := d.GetChange("relation_fv_rs_cust_qos_pol") - err = aciClient.DeleteRelationfvRsCustQosPol(fvESg.DistinguishedName) - if err != nil { - return diag.FromErr(err) - } - err = aciClient.CreateRelationfvRsCustQosPol(fvESg.DistinguishedName, fvESgAttr.Annotation, GetMOName(newRelParam.(string))) - if err != nil { - return diag.FromErr(err) - } - - } - if d.HasChange("relation_fv_rs_intra_epg") || d.HasChange("annotation") { - oldRel, newRel := d.GetChange("relation_fv_rs_intra_epg") - oldRelSet := oldRel.(*schema.Set) - newRelSet := newRel.(*schema.Set) - relToDelete := toStringList(oldRelSet.Difference(newRelSet).List()) - relToCreate := toStringList(newRelSet.Difference(oldRelSet).List()) - - for _, relDn := range relToDelete { - err = aciClient.DeleteRelationfvRsIntraEpg(fvESg.DistinguishedName, GetMOName(relDn)) - if err != nil { - return diag.FromErr(err) - } - } - for _, relDn := range relToCreate { - err = aciClient.CreateRelationfvRsIntraEpg(fvESg.DistinguishedName, fvESgAttr.Annotation, GetMOName(relDn)) - if err != nil { - return diag.FromErr(err) - } - } - } - if d.HasChange("relation_fv_rs_prot_by") || d.HasChange("annotation") { - oldRel, newRel := d.GetChange("relation_fv_rs_prot_by") - oldRelSet := oldRel.(*schema.Set) - newRelSet := newRel.(*schema.Set) - relToDelete := toStringList(oldRelSet.Difference(newRelSet).List()) - relToCreate := toStringList(newRelSet.Difference(oldRelSet).List()) - - for _, relDn := range relToDelete { - err = aciClient.DeleteRelationfvRsProtBy(fvESg.DistinguishedName, GetMOName(relDn)) - if err != nil { - return diag.FromErr(err) - } - } - for _, relDn := range relToCreate { - err = aciClient.CreateRelationfvRsProtBy(fvESg.DistinguishedName, fvESgAttr.Annotation, GetMOName(relDn)) - if err != nil { - return diag.FromErr(err) - } - } - } - if d.HasChange("relation_fv_rs_prov") || d.HasChange("annotation") { - oldRel, newRel := d.GetChange("relation_fv_rs_prov") - oldRelList := oldRel.(*schema.Set).List() - newRelList := newRel.(*schema.Set).List() - for _, relationParam := range oldRelList { - paramMap := relationParam.(map[string]interface{}) - - err = aciClient.DeleteRelationfvRsProv(fvESg.DistinguishedName, GetMOName(paramMap["target_dn"].(string))) - if err != nil { - return diag.FromErr(err) - } - } - for _, relationParam := range newRelList { - paramMap := relationParam.(map[string]interface{}) - - err = aciClient.CreateRelationfvRsProv(fvESg.DistinguishedName, fvESgAttr.Annotation, paramMap["match_t"].(string), paramMap["prio"].(string), GetMOName(paramMap["target_dn"].(string))) - if err != nil { - return diag.FromErr(err) - } - } - } - if d.HasChange("relation_fv_rs_scope") || d.HasChange("annotation") { - _, newRelParam := d.GetChange("relation_fv_rs_scope") - err = aciClient.DeleteRelationfvRsScope(fvESg.DistinguishedName) - if err != nil { - return diag.FromErr(err) - } - err = aciClient.CreateRelationfvRsScope(fvESg.DistinguishedName, fvESgAttr.Annotation, GetMOName(newRelParam.(string))) - if err != nil { - return diag.FromErr(err) - } - - } - if d.HasChange("relation_fv_rs_sec_inherited") || d.HasChange("annotation") { - oldRel, newRel := d.GetChange("relation_fv_rs_sec_inherited") - oldRelSet := oldRel.(*schema.Set) - newRelSet := newRel.(*schema.Set) - relToDelete := toStringList(oldRelSet.Difference(newRelSet).List()) - relToCreate := toStringList(newRelSet.Difference(oldRelSet).List()) - - for _, relDn := range relToDelete { - err = aciClient.DeleteRelationfvRsSecInherited(fvESg.DistinguishedName, relDn) - - if err != nil { - return diag.FromErr(err) - } - } - for _, relDn := range relToCreate { - err = aciClient.CreateRelationfvRsSecInherited(fvESg.DistinguishedName, fvESgAttr.Annotation, relDn) - - if err != nil { - return diag.FromErr(err) - } - } - } - - d.SetId(fvESg.DistinguishedName) - log.Printf("[DEBUG] %s: Update finished successfully", d.Id()) - return resourceAciEndpointSecurityGroupRead(ctx, d, m) -} - -func resourceAciEndpointSecurityGroupRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - log.Printf("[DEBUG] %s: Beginning Read", d.Id()) - aciClient := m.(*client.Client) - dn := d.Id() - fvESg, err := getRemoteEndpointSecurityGroup(aciClient, dn) - if err != nil { - return errorForObjectNotFound(err, dn, d) - } - _, err = setEndpointSecurityGroupAttributes(fvESg, d) - if err != nil { - d.SetId("") - return nil - } - - fvRsConsData, err := aciClient.ReadRelationfvRsCons(dn) - if err != nil { - log.Printf("[DEBUG] Error while reading relation fvRsCons %v", err) - } else { - listRelMap := make([]map[string]string, 0, 1) - listfvRsConsData := fvRsConsData.([]map[string]string) - for _, obj := range listfvRsConsData { - listRelMap = append(listRelMap, map[string]string{ - "prio": obj["prio"], - "target_dn": obj["tDn"], - }) - } - d.Set("relation_fv_rs_cons", listRelMap) - } - - fvRsConsIfData, err := aciClient.ReadRelationfvRsConsIf(dn) - if err != nil { - log.Printf("[DEBUG] Error while reading relation fvRsConsIf %v", err) - } else { - listRelMap := make([]map[string]string, 0, 1) - listfvRsConsIfData := fvRsConsIfData.([]map[string]string) - for _, obj := range listfvRsConsIfData { - listRelMap = append(listRelMap, map[string]string{ - "prio": obj["prio"], - "target_dn": obj["tDn"], - }) - } - d.Set("relation_fv_rs_cons_if", listRelMap) - } - - fvRsCustQosPolData, err := aciClient.ReadRelationfvRsCustQosPol(dn) - if err != nil { - log.Printf("[DEBUG] Error while reading relation fvRsCustQosPol %v", err) - d.Set("fv_rs_cust_qos_pol", "") - } else { - setRelationAttribute(d, "relation_fv_rs_cust_qos_pol", fvRsCustQosPolData.(string)) - } - fvRsIntraEpgData, err := aciClient.ReadRelationfvRsIntraEpg(dn) - if err != nil { - log.Printf("[DEBUG] Error while reading relation fvRsIntraEpg %v", err) - setRelationAttribute(d, "relation_fv_rs_intra_epg", make([]interface{}, 0, 1)) - } else { - setRelationAttribute(d, "relation_fv_rs_intra_epg", toStringList(fvRsIntraEpgData.(*schema.Set).List())) - } - fvRsProtByData, err := aciClient.ReadRelationfvRsProtBy(dn) - if err != nil { - log.Printf("[DEBUG] Error while reading relation fvRsProtBy %v", err) - setRelationAttribute(d, "relation_fv_rs_prot_by", make([]interface{}, 0, 1)) - } else { - setRelationAttribute(d, "relation_fv_rs_prot_by", toStringList(fvRsProtByData.(*schema.Set).List())) - } - - fvRsProvData, err := aciClient.ReadRelationfvRsProv(dn) - if err != nil { - log.Printf("[DEBUG] Error while reading relation fvRsProv %v", err) - } else { - listRelMap := make([]map[string]string, 0, 1) - listfvRsProvData := fvRsProvData.([]map[string]string) - for _, obj := range listfvRsProvData { - listRelMap = append(listRelMap, map[string]string{ - "prio": obj["prio"], - "target_dn": obj["tDn"], - "match_t": obj["matchT"], - }) - } - d.Set("relation_fv_rs_prov", listRelMap) - } - - fvRsScopeData, err := aciClient.ReadRelationfvRsScope(dn) - if err != nil { - log.Printf("[DEBUG] Error while reading relation fvRsScope %v", err) - d.Set("fv_rs_scope", "") - } else { - setRelationAttribute(d, "relation_fv_rs_scope", fvRsScopeData.(string)) - } - fvRsSecInheritedData, err := aciClient.ReadRelationfvRsSecInherited(dn) - if err != nil { - log.Printf("[DEBUG] Error while reading relation fvRsSecInherited %v", err) - setRelationAttribute(d, "relation_fv_rs_sec_inherited", make([]interface{}, 0, 1)) - } else { - setRelationAttribute(d, "relation_fv_rs_sec_inherited", toStringList(fvRsSecInheritedData.(*schema.Set).List())) - } - log.Printf("[DEBUG] %s: Read finished successfully", d.Id()) - return nil -} - -func resourceAciEndpointSecurityGroupDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - log.Printf("[DEBUG] %s: Beginning Destroy", d.Id()) - aciClient := m.(*client.Client) - dn := d.Id() - err := aciClient.DeleteByDn(dn, "fvESg") - if err != nil { - return diag.FromErr(err) - } - log.Printf("[DEBUG] %s: Destroy finished successfully", d.Id()) - d.SetId("") - return diag.FromErr(err) -} diff --git a/aci/resource_aci_fvesg_test.go b/aci/resource_aci_fvesg_test.go deleted file mode 100644 index 54e2a3d8e..000000000 --- a/aci/resource_aci_fvesg_test.go +++ /dev/null @@ -1,112 +0,0 @@ -package aci - -import ( - "fmt" - "testing" - - "github.com/ciscoecosystem/aci-go-client/v2/client" - "github.com/ciscoecosystem/aci-go-client/v2/models" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" -) - -func TestAccAciEndpointSecurityGroup_Basic(t *testing.T) { - var endpoint_security_group models.EndpointSecurityGroup - fv_tenant_name := acctest.RandString(5) - fv_ap_name := acctest.RandString(5) - fv_e_sg_name := acctest.RandString(5) - description := "endpoint_security_group created while acceptance testing" - - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, - CheckDestroy: testAccCheckAciEndpointSecurityGroupDestroy, - Steps: []resource.TestStep{ - { - Config: testAccCheckAciEndpointSecurityGroupConfig_basic(fv_tenant_name, fv_ap_name, fv_e_sg_name), - Check: resource.ComposeTestCheckFunc( - testAccCheckAciEndpointSecurityGroupExists("aci_endpoint_security_group.fooendpoint_security_group", &endpoint_security_group), - testAccCheckAciEndpointSecurityGroupAttributes(fv_tenant_name, fv_ap_name, fv_e_sg_name, description, &endpoint_security_group), - ), - }, - }, - }) -} - -func testAccCheckAciEndpointSecurityGroupConfig_basic(fv_tenant_name, fv_ap_name, fv_e_sg_name string) string { - return fmt.Sprintf(` - - resource "aci_tenant" "footenant" { - name = "%s" - description = "tenant created while acceptance testing" - - } - - resource "aci_application_profile" "fooapplication_profile" { - name = "%s" - description = "application_profile created while acceptance testing" - tenant_dn = aci_tenant.footenant.id - } - - resource "aci_endpoint_security_group" "fooendpoint_security_group" { - name = "%s" - description = "endpoint_security_group created while acceptance testing" - application_profile_dn = aci_application_profile.fooapplication_profile.id - } - - `, fv_tenant_name, fv_ap_name, fv_e_sg_name) -} - -func testAccCheckAciEndpointSecurityGroupExists(name string, endpoint_security_group *models.EndpointSecurityGroup) resource.TestCheckFunc { - return func(s *terraform.State) error { - rs, ok := s.RootModule().Resources[name] - - if !ok { - return fmt.Errorf("Endpoint Security Group %s not found", name) - } - - if rs.Primary.ID == "" { - return fmt.Errorf("No Endpoint Security Group dn was set") - } - - client := testAccProvider.Meta().(*client.Client) - - cont, err := client.Get(rs.Primary.ID) - if err != nil { - return err - } - - endpoint_security_groupFound := models.EndpointSecurityGroupFromContainer(cont) - if endpoint_security_groupFound.DistinguishedName != rs.Primary.ID { - return fmt.Errorf("Endpoint Security Group %s not found", rs.Primary.ID) - } - *endpoint_security_group = *endpoint_security_groupFound - return nil - } -} - -func testAccCheckAciEndpointSecurityGroupDestroy(s *terraform.State) error { - client := testAccProvider.Meta().(*client.Client) - for _, rs := range s.RootModule().Resources { - if rs.Type == "aci_endpoint_security_group" { - cont, err := client.Get(rs.Primary.ID) - endpoint_security_group := models.EndpointSecurityGroupFromContainer(cont) - if err == nil { - return fmt.Errorf("Endpoint Security Group %s Still exists", endpoint_security_group.DistinguishedName) - } - } else { - continue - } - } - return nil -} - -func testAccCheckAciEndpointSecurityGroupAttributes(fv_tenant_name, fv_ap_name, fv_e_sg_name, description string, endpoint_security_group *models.EndpointSecurityGroup) resource.TestCheckFunc { - return func(s *terraform.State) error { - if description != endpoint_security_group.Description { - return fmt.Errorf("Bad endpoint_security_group Description %s", endpoint_security_group.Description) - } - return nil - } -} diff --git a/examples/aci_endpoint_security_group/aci_endpoint_security_group.tf b/examples/aci_endpoint_security_group/aci_endpoint_security_group.tf deleted file mode 100644 index 63732f9e1..000000000 --- a/examples/aci_endpoint_security_group/aci_endpoint_security_group.tf +++ /dev/null @@ -1,39 +0,0 @@ -resource "aci_application_profile" "terraform_ap" { - tenant_dn = aci_tenant.terraform_tenant.id - name = "tf_ap" -} - -# create ESG -resource "aci_endpoint_security_group" "terraform_esg" { - application_profile_dn = aci_application_profile.terraform_ap.id - name = "tf_esg" - relation_fv_rs_scope = aci_vrf.vrf.id - relation_fv_rs_prov = [aci_contract.rs_prov_contract.id] - relation_fv_rs_cons = [aci_contract.rs_cons_contract.id] - relation_fv_rs_intra_epg = [aci_contract.intra_epg_contract.id] - relation_fv_rs_cons_if = [aci_contract.exported_contract.id] - relation_fv_rs_cust_qos_pol = aci_rest.rest_qos_custom_pol.id - relation_fv_rs_prot_by = [aci_rest.rest_taboo_con.id] -} - -# create another ESG_2, inheriting from ESG -resource "aci_endpoint_security_group" "terraform_inherit_esg" { - application_profile_dn = aci_application_profile.terraform_ap.id - name = "tf_inherit_esg" - description = "create relation sec_inherited" - match_t = "None" - pc_enf_pref = "unenforced" - pref_gr_memb = "exclude" - relation_fv_rs_sec_inherited = [aci_endpoint_security_group.terraform_esg.id] -} - -# query an existing ESG. In this case, creating an ESG named 'test' before terraform apply -data "aci_endpoint_security_group" "query_esg" { - application_profile_dn = "uni/tn-test_esg/ap-esg_ap" - name = "test" -} - -output "data_source_esg" { - description = "ESG queried by data source" - value = data.aci_endpoint_security_group.query_esg.id -} \ No newline at end of file diff --git a/examples/aci_endpoint_security_group/aci_tenant.tf b/examples/aci_endpoint_security_group/aci_tenant.tf deleted file mode 100644 index 5beeb9500..000000000 --- a/examples/aci_endpoint_security_group/aci_tenant.tf +++ /dev/null @@ -1,9 +0,0 @@ -resource "aci_tenant" "terraform_tenant" { - name = "tf_tenant" - description = "This tenant is created by terraform" -} - -resource "aci_tenant" "tenant_export_cons" { - name = "tenant_export_cons" - description = "This tenant exports contracts to tf_tenant" -} \ No newline at end of file diff --git a/examples/aci_endpoint_security_group/contract.tf b/examples/aci_endpoint_security_group/contract.tf deleted file mode 100644 index a93dd3f40..000000000 --- a/examples/aci_endpoint_security_group/contract.tf +++ /dev/null @@ -1,32 +0,0 @@ -resource "aci_contract" "rs_prov_contract" { - tenant_dn = aci_tenant.terraform_tenant.id - name = "rs_prov_contract" - description = "This contract is created by terraform ACI provider" - scope = "tenant" - target_dscp = "VA" - prio = "unspecified" -} - -resource "aci_contract" "rs_cons_contract" { - tenant_dn = aci_tenant.terraform_tenant.id - name = "rs_cons_contract" - description = "This contract is created by terraform ACI provider" - scope = "tenant" - target_dscp = "VA" - prio = "unspecified" -} - -resource "aci_contract" "intra_epg_contract" { - tenant_dn = aci_tenant.terraform_tenant.id - name = "intra_epg_contract" - description = "This contract is created by terraform ACI provider" - scope = "tenant" - target_dscp = "VA" - prio = "unspecified" -} - -resource "aci_contract" "exported_contract" { - tenant_dn = aci_tenant.tenant_export_cons.id - name = "exported_contract" - description = "This contract is exported to tenant_export_cons" -} \ No newline at end of file diff --git a/examples/aci_endpoint_security_group/main.tf b/examples/aci_endpoint_security_group/main.tf deleted file mode 100644 index 975fca093..000000000 --- a/examples/aci_endpoint_security_group/main.tf +++ /dev/null @@ -1,14 +0,0 @@ -terraform { - required_providers { - aci = { - source = "ciscodevnet/aci" - } - } -} - -provider "aci" { - username = "" - password = "" - url = "" - insecure = true -} \ No newline at end of file diff --git a/examples/aci_endpoint_security_group/rest.tf b/examples/aci_endpoint_security_group/rest.tf deleted file mode 100644 index bb2da4815..000000000 --- a/examples/aci_endpoint_security_group/rest.tf +++ /dev/null @@ -1,39 +0,0 @@ -resource "aci_rest" "rest_con_export" { - path = "api/node/mo/uni/tn-tf_tenant/cif-exported_contract.json" - payload = < {tenant_name} > Application Profiles > Endpoint Security Groups - -## Example Usage ## - -```hcl -data "aci_endpoint_security_group" "example" { - application_profile_dn = aci_application_profile.example.id - name = "example" -} -``` - -## Argument Reference ## - -* `application_profile_dn` - (Required) Distinguished name of parent Application Profile object. -* `name` - (Required) Name of the object Endpoint Security Group. - -## Attribute Reference ## - -* `id` - Attribute id set to the Dn of the Endpoint Security Group. -* `annotation` - (Read-Only) Annotation of the object Endpoint Security Group. -* `description` - (Read-Only) Description of the object Endpoint Security Group. -* `name_alias` - (Read-Only) Name Alias of the object Endpoint Security Group. -* `match_t` - (Read-Only) The provider label match criteria. -* `pc_enf_pref` - (Read-Only) The preferred policy control. -* `pref_gr_memb` - (Read-Only) Represents parameter used to determine if EPG is part of a group that does not a contract for communication. diff --git a/legacy-docs/docs/r/endpoint_security_group.html.markdown b/legacy-docs/docs/r/endpoint_security_group.html.markdown deleted file mode 100644 index 1c63b0ba9..000000000 --- a/legacy-docs/docs/r/endpoint_security_group.html.markdown +++ /dev/null @@ -1,106 +0,0 @@ ---- -subcategory: "Application Management" -layout: "aci" -page_title: "ACI: aci_endpoint_security_group" -sidebar_current: "docs-aci-resource-aci_endpoint_security_group" -description: |- - Manages ACI Endpoint Security Group ---- - -# aci_endpoint_security_group - -Manages ACI Endpoint Security Group - -## API Information - -- `Class` - fvESg -- `Distinguished Name` - uni/tn-{name}/ap-{name}/esg-{name} - -## GUI Information - -- `Location` - Tenants > {tenant_name} > Application Profiles > Endpoint Security Groups - -## Example Usage - -```hcl -resource "aci_endpoint_security_group" "example" { - application_profile_dn = aci_application_profile.example.id - name = "example" - description = "from terraform" - annotation = "orchestrator:terraform" - name_alias = "example" - match_t = "AtleastOne" - pc_enf_pref = "unenforced" - pref_gr_memb = "exclude" - - relation_fv_rs_scope = aci_vrf.example.id - - relation_fv_rs_cons { - prio = "unspecified" - target_dn = aci_contract.example.id - } - - relation_fv_rs_cons_if { - prio = "unspecified" - target_dn = aci_imported_contract.example.id - } - - relation_fv_rs_cust_qos_pol = aci_resource.example.id - - relation_fv_rs_intra_epg = [aci_contract.example.id] - - relation_fv_rs_prov { - match_t = "AtleastOne" - prio = "unspecified" - target_dn = aci_contract.example.id - } - - relation_fv_rs_sec_inherited = [aci_application_epg.example.id] -} -``` - -## Argument Reference - -- `application_profile_dn` - (Required) Distinguished name of parent Application Profile object. -- `name` - (Required) Name of object Endpoint Security Group. -- `annotation` - (Optional) Annotation of object Endpoint Security Group. -- `description` - (Optional) Description of object Endpoint Security Group. -- `name_alias` - (Optional) Name alias of object Endpoint Security Group. -- `match_t` - (Optional) Provider Label Match Criteria. Allowed values are "All", "AtleastOne", "AtmostOne", "None", and default value is "AtleastOne". Type: String. -- `pc_enf_pref` - (Optional) The preferred policy control enforcement. Allowed values are "enforced", "unenforced", and default value is "unenforced". Type: String. -- `pref_gr_memb` - (Optional) Preferred Group Member parameter is used to determine - if EPg is part of a group that allows - a contract for communication. Allowed values are "exclude", "include", and default value is "exclude". Type: String. - -- `relation_fv_rs_scope` - (Required) Represents the relation to a VRF (class fvCtx). Type: String. - -- `relation_fv_rs_cons` - (Optional) A block representing the relation to a Contract Consumer (class vzBrCP). The Consumer contract profile information. Type: Block. - - - `prio` - (Optional) The system class determines the quality of service and priority for the consumer traffic. Allowed values are "level1", "level2", "level3", "level4", "level5", "level6", "unspecified", and default value is "unspecified". Type: String. - - `target_dn` - (Required) The distinguished name of the target contract. Type: String. - -- `relation_fv_rs_cons_if` - (Optional) A block representing the relation to a Contract Interface (class vzCPIf). It is a contract for which the EPG will be a consumer. Type: Block. - - - `prio` - (Optional) The contract interface priority. Allowed values are "level1", "level2", "level3", "level4", "level5", "level6", "unspecified", and default value is "unspecified". Type: String. - - `target_dn` - (Required) The distinguished name of the target contract. Type: String. - -- `relation_fv_rs_cust_qos_pol` - (Optional) **WARNING:** This attribute is deprecated and will be removed in the next major version. Represents the relation to a Custom QOS Policy (class qosCustomPol). It is a source relation to a custom QoS policy that enables different levels of service to be assigned to network traffic, including specifications for the Differentiated Services Code Point (DSCP) value(s) and the 802.1p Dot1p priority. Type: String. - -- `relation_fv_rs_intra_epg` - (Optional) Represents the relation to an Intra EPg Contract (class vzBrCP). Represents that the EPg is moving from "allow all within epg" mode to a "deny all within epg" mode. The only type of traffic allowed between EPs in this EPg is the one specified by contracts EPg associates to this relation. Type: List. - -- `relation_fv_rs_prov` - (Optional) A block representing the relation to a Contract Provider (class vzBrCP). It is a contract for which the EPG will be a provider. Type: Block. - - - `match_t` - (Optional) The matched EPG type. Allowed values are "All", "AtleastOne", "AtmostOne", "None", and default value is "AtleastOne". Type: String. - - `prio` - (Optional) The system class determines the quality of service and priority for the consumer traffic. Allowed values are "level1", "level2", "level3", "level4", "level5", "level6", "unspecified", and default value is "unspecified". Type: String. - - `target_dn` - (Required) The distinguished name of the target contract. Type: String. - -- `relation_fv_rs_sec_inherited` - (Optional) Represents the relation to a Security inheritance (class fvEPg). It represents that the EPg is inheriting security configuration from another EPg. Type: List. - -## Importing - -An existing EndpointSecurityGroup can be [imported][docs-import] into this resource via its Dn, via the following command: -[docs-import]: https://www.terraform.io/docs/import/index.html - -``` -terraform import endpoint_security_group.example -``` From 59e02775423ef29eb26b7c25639ae38d986b1dd8 Mon Sep 17 00:00:00 2001 From: akinross Date: Wed, 29 May 2024 12:01:17 +0200 Subject: [PATCH 03/22] [minor_change] Migration of aci_endpoint_security_group into plugin framework --- docs/data-sources/annotation.md | 18 +- docs/data-sources/endpoint_security_group.md | 87 +- docs/data-sources/out_of_band_contract.md | 1 - .../relation_to_consumed_contract.md | 93 + ...relation_to_consumed_contract_interface.md | 93 + .../relation_to_contract_master.md | 92 + .../relation_to_fallback_route_group.md | 2 +- .../relation_to_intra_epg_contract.md | 92 + .../relation_to_provided_contract.md | 94 + .../relation_to_taboo_contract.md | 85 + docs/data-sources/tag.md | 18 +- docs/resources/annotation.md | 18 +- docs/resources/endpoint_security_group.md | 288 +- docs/resources/out_of_band_contract.md | 4 - .../relation_to_consumed_contract.md | 174 + ...relation_to_consumed_contract_interface.md | 174 + docs/resources/relation_to_contract_master.md | 169 + .../relation_to_fallback_route_group.md | 4 +- .../relation_to_intra_epg_contract.md | 169 + .../relation_to_provided_contract.md | 179 + docs/resources/relation_to_taboo_contract.md | 144 + docs/resources/tag.md | 18 +- .../data-source.tf | 5 + .../aci_endpoint_security_group/provider.tf | 14 + .../data-source.tf | 10 + .../provider.tf | 14 + .../data-source.tf | 10 + .../provider.tf | 14 + .../data-source.tf | 10 + .../provider.tf | 14 + .../data-source.tf | 2 +- .../data-source.tf | 10 + .../provider.tf | 14 + .../data-source.tf | 10 + .../provider.tf | 14 + .../data-source.tf | 5 + .../provider.tf | 14 + .../aci_endpoint_security_group/provider.tf | 14 + .../resource-all-attributes.tf | 65 + .../aci_endpoint_security_group/resource.tf | 5 + .../resource-all-attributes.tf | 1 - .../provider.tf | 14 + .../resource-all-attributes.tf | 38 + .../resource.tf | 10 + .../provider.tf | 14 + .../resource-all-attributes.tf | 38 + .../resource.tf | 10 + .../provider.tf | 14 + .../resource-all-attributes.tf | 36 + .../resource.tf | 10 + .../resource-all-attributes.tf | 2 +- .../resource.tf | 2 +- .../provider.tf | 14 + .../resource-all-attributes.tf | 36 + .../resource.tf | 10 + .../provider.tf | 14 + .../resource-all-attributes.tf | 40 + .../resource.tf | 10 + .../provider.tf | 14 + .../resource-all-attributes.tf | 18 + .../resource.tf | 5 + gen/definitions/classes.yaml | 139 + gen/definitions/properties.yaml | 120 +- gen/generator.go | 288 +- gen/meta/fvESg.json | 3513 +++++++++++++++++ gen/meta/fvRsCons.json | 1461 +++++++ gen/meta/fvRsConsIf.json | 1267 ++++++ gen/meta/fvRsIntraEpg.json | 1278 ++++++ gen/meta/fvRsProtBy.json | 1123 ++++++ gen/meta/fvRsProv.json | 1477 +++++++ gen/meta/fvRsScope.json | 1014 +++++ gen/meta/fvRsSecInherited.json | 1088 +++++ gen/templates/datasource.go.tmpl | 62 +- gen/templates/datasource_example.tf.tmpl | 2 +- gen/templates/datasource_test.go.tmpl | 14 +- gen/templates/resource.go.tmpl | 61 +- gen/templates/resource_example.tf.tmpl | 2 +- .../resource_example_all_attributes.tf.tmpl | 4 +- gen/templates/resource_test.go.tmpl | 182 +- gen/templates/testvars.yaml.tmpl | 76 +- gen/testvars/fvESg.yaml | 122 + gen/testvars/fvRsCons.yaml | 45 + gen/testvars/fvRsConsIf.yaml | 45 + gen/testvars/fvRsIntraEpg.yaml | 43 + gen/testvars/fvRsProtBy.yaml | 39 + gen/testvars/fvRsProv.yaml | 47 + gen/testvars/fvRsSecInherited.yaml | 88 + gen/testvars/l3extRsOutToFBRGroup.yaml | 22 +- gen/testvars/vzOOBBrCP.yaml | 2 - ...data_source_aci_endpoint_security_group.go | 374 ++ ...source_aci_endpoint_security_group_test.go | 57 + .../data_source_aci_out_of_band_contract.go | 4 - ...ta_source_aci_out_of_band_contract_test.go | 1 - ...ource_aci_relation_to_consumed_contract.go | 153 + ...relation_to_consumed_contract_interface.go | 153 + ...ion_to_consumed_contract_interface_test.go | 88 + ..._aci_relation_to_consumed_contract_test.go | 88 + ..._source_aci_relation_to_contract_master.go | 149 + ...ce_aci_relation_to_contract_master_test.go | 86 + ...i_relation_to_fallback_route_group_test.go | 6 +- ...urce_aci_relation_to_intra_epg_contract.go | 149 + ...aci_relation_to_intra_epg_contract_test.go | 86 + ...ource_aci_relation_to_provided_contract.go | 157 + ..._aci_relation_to_provided_contract_test.go | 90 + ...a_source_aci_relation_to_taboo_contract.go | 149 + ...rce_aci_relation_to_taboo_contract_test.go | 50 + internal/provider/provider.go | 14 + .../resource_aci_endpoint_security_group.go | 2323 +++++++++++ ...source_aci_endpoint_security_group_test.go | 520 +++ .../resource_aci_out_of_band_contract.go | 18 - .../resource_aci_out_of_band_contract_test.go | 11 - ...ource_aci_relation_to_consumed_contract.go | 583 +++ ...relation_to_consumed_contract_interface.go | 583 +++ ...ion_to_consumed_contract_interface_test.go | 452 +++ ..._aci_relation_to_consumed_contract_test.go | 452 +++ ...esource_aci_relation_to_contract_master.go | 563 +++ ...ce_aci_relation_to_contract_master_test.go | 455 +++ ...i_relation_to_fallback_route_group_test.go | 48 +- ...urce_aci_relation_to_intra_epg_contract.go | 563 +++ ...aci_relation_to_intra_epg_contract_test.go | 436 ++ ...ource_aci_relation_to_provided_contract.go | 601 +++ ..._aci_relation_to_provided_contract_test.go | 468 +++ ...resource_aci_relation_to_taboo_contract.go | 563 +++ ...rce_aci_relation_to_taboo_contract_test.go | 224 ++ internal/provider/test_constants.go | 14 + 125 files changed, 26500 insertions(+), 465 deletions(-) create mode 100644 docs/data-sources/relation_to_consumed_contract.md create mode 100644 docs/data-sources/relation_to_consumed_contract_interface.md create mode 100644 docs/data-sources/relation_to_contract_master.md create mode 100644 docs/data-sources/relation_to_intra_epg_contract.md create mode 100644 docs/data-sources/relation_to_provided_contract.md create mode 100644 docs/data-sources/relation_to_taboo_contract.md create mode 100644 docs/resources/relation_to_consumed_contract.md create mode 100644 docs/resources/relation_to_consumed_contract_interface.md create mode 100644 docs/resources/relation_to_contract_master.md create mode 100644 docs/resources/relation_to_intra_epg_contract.md create mode 100644 docs/resources/relation_to_provided_contract.md create mode 100644 docs/resources/relation_to_taboo_contract.md create mode 100644 examples/data-sources/aci_endpoint_security_group/data-source.tf create mode 100644 examples/data-sources/aci_endpoint_security_group/provider.tf create mode 100644 examples/data-sources/aci_relation_to_consumed_contract/data-source.tf create mode 100644 examples/data-sources/aci_relation_to_consumed_contract/provider.tf create mode 100644 examples/data-sources/aci_relation_to_consumed_contract_interface/data-source.tf create mode 100644 examples/data-sources/aci_relation_to_consumed_contract_interface/provider.tf create mode 100644 examples/data-sources/aci_relation_to_contract_master/data-source.tf create mode 100644 examples/data-sources/aci_relation_to_contract_master/provider.tf create mode 100644 examples/data-sources/aci_relation_to_intra_epg_contract/data-source.tf create mode 100644 examples/data-sources/aci_relation_to_intra_epg_contract/provider.tf create mode 100644 examples/data-sources/aci_relation_to_provided_contract/data-source.tf create mode 100644 examples/data-sources/aci_relation_to_provided_contract/provider.tf create mode 100644 examples/data-sources/aci_relation_to_taboo_contract/data-source.tf create mode 100644 examples/data-sources/aci_relation_to_taboo_contract/provider.tf create mode 100644 examples/resources/aci_endpoint_security_group/provider.tf create mode 100644 examples/resources/aci_endpoint_security_group/resource-all-attributes.tf create mode 100644 examples/resources/aci_endpoint_security_group/resource.tf create mode 100644 examples/resources/aci_relation_to_consumed_contract/provider.tf create mode 100644 examples/resources/aci_relation_to_consumed_contract/resource-all-attributes.tf create mode 100644 examples/resources/aci_relation_to_consumed_contract/resource.tf create mode 100644 examples/resources/aci_relation_to_consumed_contract_interface/provider.tf create mode 100644 examples/resources/aci_relation_to_consumed_contract_interface/resource-all-attributes.tf create mode 100644 examples/resources/aci_relation_to_consumed_contract_interface/resource.tf create mode 100644 examples/resources/aci_relation_to_contract_master/provider.tf create mode 100644 examples/resources/aci_relation_to_contract_master/resource-all-attributes.tf create mode 100644 examples/resources/aci_relation_to_contract_master/resource.tf create mode 100644 examples/resources/aci_relation_to_intra_epg_contract/provider.tf create mode 100644 examples/resources/aci_relation_to_intra_epg_contract/resource-all-attributes.tf create mode 100644 examples/resources/aci_relation_to_intra_epg_contract/resource.tf create mode 100644 examples/resources/aci_relation_to_provided_contract/provider.tf create mode 100644 examples/resources/aci_relation_to_provided_contract/resource-all-attributes.tf create mode 100644 examples/resources/aci_relation_to_provided_contract/resource.tf create mode 100644 examples/resources/aci_relation_to_taboo_contract/provider.tf create mode 100644 examples/resources/aci_relation_to_taboo_contract/resource-all-attributes.tf create mode 100644 examples/resources/aci_relation_to_taboo_contract/resource.tf create mode 100644 gen/meta/fvESg.json create mode 100644 gen/meta/fvRsCons.json create mode 100644 gen/meta/fvRsConsIf.json create mode 100644 gen/meta/fvRsIntraEpg.json create mode 100644 gen/meta/fvRsProtBy.json create mode 100644 gen/meta/fvRsProv.json create mode 100644 gen/meta/fvRsScope.json create mode 100644 gen/meta/fvRsSecInherited.json create mode 100644 gen/testvars/fvESg.yaml create mode 100644 gen/testvars/fvRsCons.yaml create mode 100644 gen/testvars/fvRsConsIf.yaml create mode 100644 gen/testvars/fvRsIntraEpg.yaml create mode 100644 gen/testvars/fvRsProtBy.yaml create mode 100644 gen/testvars/fvRsProv.yaml create mode 100644 gen/testvars/fvRsSecInherited.yaml create mode 100644 internal/provider/data_source_aci_endpoint_security_group.go create mode 100644 internal/provider/data_source_aci_endpoint_security_group_test.go create mode 100644 internal/provider/data_source_aci_relation_to_consumed_contract.go create mode 100644 internal/provider/data_source_aci_relation_to_consumed_contract_interface.go create mode 100644 internal/provider/data_source_aci_relation_to_consumed_contract_interface_test.go create mode 100644 internal/provider/data_source_aci_relation_to_consumed_contract_test.go create mode 100644 internal/provider/data_source_aci_relation_to_contract_master.go create mode 100644 internal/provider/data_source_aci_relation_to_contract_master_test.go create mode 100644 internal/provider/data_source_aci_relation_to_intra_epg_contract.go create mode 100644 internal/provider/data_source_aci_relation_to_intra_epg_contract_test.go create mode 100644 internal/provider/data_source_aci_relation_to_provided_contract.go create mode 100644 internal/provider/data_source_aci_relation_to_provided_contract_test.go create mode 100644 internal/provider/data_source_aci_relation_to_taboo_contract.go create mode 100644 internal/provider/data_source_aci_relation_to_taboo_contract_test.go create mode 100644 internal/provider/resource_aci_endpoint_security_group.go create mode 100644 internal/provider/resource_aci_endpoint_security_group_test.go create mode 100644 internal/provider/resource_aci_relation_to_consumed_contract.go create mode 100644 internal/provider/resource_aci_relation_to_consumed_contract_interface.go create mode 100644 internal/provider/resource_aci_relation_to_consumed_contract_interface_test.go create mode 100644 internal/provider/resource_aci_relation_to_consumed_contract_test.go create mode 100644 internal/provider/resource_aci_relation_to_contract_master.go create mode 100644 internal/provider/resource_aci_relation_to_contract_master_test.go create mode 100644 internal/provider/resource_aci_relation_to_intra_epg_contract.go create mode 100644 internal/provider/resource_aci_relation_to_intra_epg_contract_test.go create mode 100644 internal/provider/resource_aci_relation_to_provided_contract.go create mode 100644 internal/provider/resource_aci_relation_to_provided_contract_test.go create mode 100644 internal/provider/resource_aci_relation_to_taboo_contract.go create mode 100644 internal/provider/resource_aci_relation_to_taboo_contract_test.go diff --git a/docs/data-sources/annotation.md b/docs/data-sources/annotation.md index 8a28ab9f1..4093bbea3 100644 --- a/docs/data-sources/annotation.md +++ b/docs/data-sources/annotation.md @@ -55,25 +55,25 @@ data "aci_annotation" "example_application_epg" { * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - Too many parent DNs to display, see model documentation for all possible parents of [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview). - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_application_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_profile) ([fvAp](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAp/overview)) - [aci_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf) ([fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_endpoint_tag_ip](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_tag_ip) ([fvEpIpTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvEpIpTag/overview)) - [aci_endpoint_tag_mac](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_tag_mac) ([fvEpMacTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvEpMacTag/overview)) - [aci_vrf_fallback_route_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group) ([fvFBRGroup](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRGroup/overview)) - [aci_vrf_fallback_route_group_member](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group_member) ([fvFBRMember](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRMember/overview)) + - [aci_relation_to_consumed_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract) ([fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) + - [aci_relation_to_consumed_contract_interface](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract_interface) ([fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) + - [aci_relation_to_intra_epg_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_intra_epg_contract) ([fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) + - [aci_relation_to_taboo_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_taboo_contract) ([fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview)) + - [aci_relation_to_provided_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_provided_contract) ([fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)) + - [aci_relation_to_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_vrf) ([fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) + - [aci_relation_to_contract_master](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_contract_master) ([fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) - [aci_tenant](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tenant) ([fvTenant](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTenant/overview)) - [aci_l3out_consumer_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_consumer_label) ([l3extConsLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extConsLbl/overview)) - [aci_logical_node_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_profile) ([l3extLNodeP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLNodeP/overview)) - [aci_l3out_loopback_interface_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_loopback_interface_profile) ([l3extLoopBackIfP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLoopBackIfP/overview)) - [aci_l3_outside](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3_outside) ([l3extOut](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extOut/overview)) - - [aci_l3out_provider_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_provider_label) ([l3extProvLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extProvLbl/overview)) - - [aci_logical_node_to_fabric_node](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_to_fabric_node) ([l3extRsNodeL3OutAtt](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extRsNodeL3OutAtt/overview)) - - [aci_relation_to_fallback_route_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_fallback_route_group) ([l3extRsOutToFBRGroup](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extRsOutToFBRGroup/overview)) - - [aci_l3out_redistribute_policy](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_redistribute_policy) ([l3extRsRedistributePol](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extRsRedistributePol/overview)) - - [aci_external_management_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_management_network_instance_profile) ([mgmtInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInstP/overview)) - - [aci_relation_to_consumed_out_of_band_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_out_of_band_contract) ([mgmtRsOoBCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtRsOoBCons/overview)) - - [aci_external_management_network_subnet](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_management_network_subnet) ([mgmtSubnet](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtSubnet/overview)) - - [aci_l3out_node_sid_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_node_sid_profile) ([mplsNodeSidP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mplsNodeSidP/overview)) - - [aci_netflow_exporter_policy](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/netflow_exporter_policy) ([netflowExporterPol](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/netflowExporterPol/overview)) * `key` (key) - (string) The key used to uniquely identify this configuration object. ### Read-Only ### diff --git a/docs/data-sources/endpoint_security_group.md b/docs/data-sources/endpoint_security_group.md index 13bd6200d..7aabe3256 100644 --- a/docs/data-sources/endpoint_security_group.md +++ b/docs/data-sources/endpoint_security_group.md @@ -1,45 +1,94 @@ --- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). subcategory: "Application Management" layout: "aci" page_title: "ACI: aci_endpoint_security_group" sidebar_current: "docs-aci-data-source-aci_endpoint_security_group" description: |- - Data source for ACI Endpoint Security Group + Data source for Endpoint Security Group --- # aci_endpoint_security_group # -Data source for ACI Endpoint Security Group +Data source for Endpoint Security Group ## API Information ## -* `Class` - fvESg -* `Distinguished Name` - uni/tn-{name}/ap-{name}/esg-{name} +* Class: [fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview) + +* Supported in ACI versions: 5.0(1k) and later. + +* Distinguished Name Format: `uni/tn-{name}/ap-{name}/esg-{name}` ## GUI Information ## -* `Location` - Tenants > {tenant_name} > Application Profiles > Endpoint Security Groups +* Location: `Tenants -> Application Profiles -> Endpoint Security Groups` ## Example Usage ## ```hcl -data "aci_endpoint_security_group" "example" { - application_profile_dn = aci_application_profile.example.id - name = "example" + +data "aci_endpoint_security_group" "example_application_profile" { + parent_dn = aci_application_profile.example.id + name = "test_name" } + ``` -## Argument Reference ## +## Schema ## + +### Required ### + +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_profile) ([fvAp](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAp/overview)) +* `name` (name) - (string) The name of the Endpoint Security Group object. + +### Read-Only ### + +* `id` - (string) The distinguished name (DN) of the Endpoint Security Group object. +* `annotation` (annotation) - (string) The annotation of the Endpoint Security Group object. +* `description` (descr) - (string) The description of the Endpoint Security Group object. +* `exception_tag` (exceptionTag) - (string) Contract Exception Tag. +* `match_criteria` (matchT) - (string) The provider label match criteria. +* `name_alias` (nameAlias) - (string) The name alias of the Endpoint Security Group object. +* `intra_esg_isolation` (pcEnfPref) - (string) Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this EPG. +* `preferred_group_member` (prefGrMemb) - (string) Represents parameter used to determine if EPg is part of a group that does not a contract for communication. +* `admin_state` (shutdown) - (string) Withdraw ESg Configuration from all Nodes in the Fabric. + +* `relation_to_consumed_contracts` - (list) A list of Relation To Consumed Contracts (ACI object [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. + * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. + * `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. + * `contract_name` (tnVzBrCPName) - (string) The consumer contract name. + +* `relation_to_consumed_contract_interfaces` - (list) A list of Relation To Consumed Contract Interfaces (ACI object [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) pointing to Contract Interface (ACI Object [vzCPIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzCPIf/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. + * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract Interface object. + * `priority` (prio) - (string) The contract interface priority. + * `contract_interface_name` (tnVzCPIfName) - (string) The contract interface name. + +* `relation_to_intra_epg_contracts` - (list) A list of Relation To Intra Epg Contracts (ACI object [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 3.0(1k) and later. + * `annotation` (annotation) - (string) The annotation of the Relation To Intra Epg Contract object. + * `contract_name` (tnVzBrCPName) - (string) The binary contract name. + +* `relation_to_provided_contracts` - (list) A list of Relation To Provided Contracts (ACI object [fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. + * `annotation` (annotation) - (string) The annotation of the Relation To Provided Contract object. + * `match_criteria` (matchT) - (string) The matched EPG type. + * `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. + * `contract_name` (tnVzBrCPName) - (string) The provider contract name. + +* `relation_to_vrf` - (list) A list of Relation To VRF (ACI object [fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) pointing to VRF (ACI Object [fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)). + * `annotation` (annotation) - (string) The annotation of the Relation To VRF object. + * `vrf_name` (tnFvCtxName) - (string) Name. -* `application_profile_dn` - (Required) Distinguished name of parent Application Profile object. -* `name` - (Required) Name of the object Endpoint Security Group. +* `relation_to_contract_masters` - (list) A list of Relation To Contract Masters (ACI object [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) pointing to (ACI Object [fvEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvEPg/overview)). This attribute is supported in ACI versions: 2.3(1e) and later. + * `annotation` (annotation) - (string) The annotation of the Relation To Contract Master object. + * `target_dn` (tDn) - (string) The distinguished name of the target. -## Attribute Reference ## +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. -* `id` - Attribute id set to the Dn of the Endpoint Security Group. -* `annotation` - (Read-Only) Annotation of the object Endpoint Security Group. -* `description` - (Read-Only) Description of the object Endpoint Security Group. -* `name_alias` - (Read-Only) Name Alias of the object Endpoint Security Group. -* `match_t` - (Read-Only) The provider label match criteria. -* `pc_enf_pref` - (Read-Only) The preferred policy control. -* `pref_gr_memb` - (Read-Only) Represents parameter used to determine if EPG is part of a group that does not a contract for communication. +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. diff --git a/docs/data-sources/out_of_band_contract.md b/docs/data-sources/out_of_band_contract.md index 5265a5b02..c180a0867 100644 --- a/docs/data-sources/out_of_band_contract.md +++ b/docs/data-sources/out_of_band_contract.md @@ -47,7 +47,6 @@ data "aci_out_of_band_contract" "example" { * `id` - (string) The distinguished name (DN) of the Out Of Band Contract object. * `annotation` (annotation) - (string) The annotation of the Out Of Band Contract object. * `description` (descr) - (string) The description of the Out Of Band Contract object. -* `intent` (intent) - (string) The Install Rules or Estimate Number of Rules. * `name_alias` (nameAlias) - (string) The name alias of the Out Of Band Contract object. * `owner_key` (ownerKey) - (string) The key for enabling clients to own their data for entity correlation. * `owner_tag` (ownerTag) - (string) A tag for enabling clients to add their own data. For example, to indicate who created this object. diff --git a/docs/data-sources/relation_to_consumed_contract.md b/docs/data-sources/relation_to_consumed_contract.md new file mode 100644 index 000000000..e23eee855 --- /dev/null +++ b/docs/data-sources/relation_to_consumed_contract.md @@ -0,0 +1,93 @@ +--- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). +subcategory: "Application Management" +layout: "aci" +page_title: "ACI: aci_relation_to_consumed_contract" +sidebar_current: "docs-aci-data-source-aci_relation_to_consumed_contract" +description: |- + Data source for Relation To Consumed Contract +--- + +# aci_relation_to_consumed_contract # + +Data source for Relation To Consumed Contract + +## API Information ## + +* Class: [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview) + +* Supported in ACI versions: 1.0(1e) and later. + +* Distinguished Name Formats: + - `... add all relevant DNs ...` + - Too many DN formats to display, see model documentation for all possible parents of [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview). + - `uni/tn-{name}/ap-{name}/epg-{name}/rscons-{tnVzBrCPName}` + - `uni/tn-{name}/ap-{name}/esg-{name}/rscons-{tnVzBrCPName}` + +## GUI Information ## + +* Locations: + - `Tenants -> Application Profiles -> Application EPGs -> Contracts` + - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` + - `... add all locations ...` + +## Example Usage ## + +```hcl + +data "aci_relation_to_consumed_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_name = aci_contract.example.name +} + +data "aci_relation_to_consumed_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_name = aci_contract.example.name +} + +``` + +## Schema ## + +### Required ### + +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) + - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) + - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) + - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) + - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) + - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) + - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) + - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) + - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) + - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) + - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) + - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) + - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) + - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) + - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) + - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) + - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) + - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) + +* `contract_name` (tnVzBrCPName) - (string) The consumer contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. + +### Read-Only ### + +* `id` - (string) The distinguished name (DN) of the Relation To Consumed Contract object. +* `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. +* `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. + +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. diff --git a/docs/data-sources/relation_to_consumed_contract_interface.md b/docs/data-sources/relation_to_consumed_contract_interface.md new file mode 100644 index 000000000..1b6e5df18 --- /dev/null +++ b/docs/data-sources/relation_to_consumed_contract_interface.md @@ -0,0 +1,93 @@ +--- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). +subcategory: "Application Management" +layout: "aci" +page_title: "ACI: aci_relation_to_consumed_contract_interface" +sidebar_current: "docs-aci-data-source-aci_relation_to_consumed_contract_interface" +description: |- + Data source for Relation To Consumed Contract Interface +--- + +# aci_relation_to_consumed_contract_interface # + +Data source for Relation To Consumed Contract Interface + +## API Information ## + +* Class: [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview) + +* Supported in ACI versions: 1.0(1e) and later. + +* Distinguished Name Formats: + - `... add all relevant DNs ...` + - Too many DN formats to display, see model documentation for all possible parents of [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview). + - `uni/tn-{name}/ap-{name}/epg-{name}/rsconsIf-{tnVzCPIfName}` + - `uni/tn-{name}/ap-{name}/esg-{name}/rsconsIf-{tnVzCPIfName}` + +## GUI Information ## + +* Locations: + - `Tenants -> Application Profiles -> Application EPGs -> Contracts` + - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` + - `... add all locations ...` + +## Example Usage ## + +```hcl + +data "aci_relation_to_consumed_contract_interface" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_interface_name = aci_contract_interface.example.name +} + +data "aci_relation_to_consumed_contract_interface" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_interface_name = aci_contract_interface.example.name +} + +``` + +## Schema ## + +### Required ### + +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) + - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) + - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) + - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) + - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) + - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) + - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) + - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) + - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) + - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) + - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) + - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) + - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) + - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) + - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) + - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) + - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) + - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) + +* `contract_interface_name` (tnVzCPIfName) - (string) The contract interface name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract_interface) with `aci_contract_interface.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract_interface) with `data.aci_contract_interface.example.name`. + +### Read-Only ### + +* `id` - (string) The distinguished name (DN) of the Relation To Consumed Contract Interface object. +* `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract Interface object. +* `priority` (prio) - (string) The contract interface priority. + +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. diff --git a/docs/data-sources/relation_to_contract_master.md b/docs/data-sources/relation_to_contract_master.md new file mode 100644 index 000000000..0451836b7 --- /dev/null +++ b/docs/data-sources/relation_to_contract_master.md @@ -0,0 +1,92 @@ +--- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). +subcategory: "Application Management" +layout: "aci" +page_title: "ACI: aci_relation_to_contract_master" +sidebar_current: "docs-aci-data-source-aci_relation_to_contract_master" +description: |- + Data source for Relation To Contract Master +--- + +# aci_relation_to_contract_master # + +Data source for Relation To Contract Master + +## API Information ## + +* Class: [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview) + +* Supported in ACI versions: 2.3(1e) and later. + +* Distinguished Name Formats: + - `... add all relevant DNs ...` + - Too many DN formats to display, see model documentation for all possible parents of [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview). + - `uni/tn-{name}/ap-{name}/epg-{name}/rssecInherited-[{tDn}]` + - `uni/tn-{name}/ap-{name}/esg-{name}/rssecInherited-[{tDn}]` + +## GUI Information ## + +* Locations: + - `Tenants -> Application Profiles -> Application EPGs` + - `Tenants -> Application Profiles -> Endpoint Security Groups` + - `... add all locations ...` + +## Example Usage ## + +```hcl + +data "aci_relation_to_contract_master" "example_application_epg" { + parent_dn = aci_application_epg.example.id + target_dn = aci_endpoint_security_group.example.id +} + +data "aci_relation_to_contract_master" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + target_dn = aci_endpoint_security_group.example.id +} + +``` + +## Schema ## + +### Required ### + +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) + - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) + - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) + - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) + - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) + - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) + - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) + - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) + - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) + - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) + - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) + - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) + - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) + - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) + - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) + - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) + - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) + - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) + +* `target_dn` (tDn) - (string) The distinguished name of the target. + +### Read-Only ### + +* `id` - (string) The distinguished name (DN) of the Relation To Contract Master object. +* `annotation` (annotation) - (string) The annotation of the Relation To Contract Master object. + +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. diff --git a/docs/data-sources/relation_to_fallback_route_group.md b/docs/data-sources/relation_to_fallback_route_group.md index da9da0235..e5571877b 100644 --- a/docs/data-sources/relation_to_fallback_route_group.md +++ b/docs/data-sources/relation_to_fallback_route_group.md @@ -32,7 +32,7 @@ Data source for Relation To Fallback Route Group data "aci_relation_to_fallback_route_group" "example_l3_outside" { parent_dn = aci_l3_outside.example.id - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.example.id } ``` diff --git a/docs/data-sources/relation_to_intra_epg_contract.md b/docs/data-sources/relation_to_intra_epg_contract.md new file mode 100644 index 000000000..0d1a0c07f --- /dev/null +++ b/docs/data-sources/relation_to_intra_epg_contract.md @@ -0,0 +1,92 @@ +--- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). +subcategory: "Application Management" +layout: "aci" +page_title: "ACI: aci_relation_to_intra_epg_contract" +sidebar_current: "docs-aci-data-source-aci_relation_to_intra_epg_contract" +description: |- + Data source for Relation To Intra Epg Contract +--- + +# aci_relation_to_intra_epg_contract # + +Data source for Relation To Intra Epg Contract + +## API Information ## + +* Class: [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview) + +* Supported in ACI versions: 3.0(1k) and later. + +* Distinguished Name Formats: + - `... add all relevant DNs ...` + - Too many DN formats to display, see model documentation for all possible parents of [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview). + - `uni/tn-{name}/ap-{name}/epg-{name}/rsintraEpg-{tnVzBrCPName}` + - `uni/tn-{name}/ap-{name}/esg-{name}/rsintraEpg-{tnVzBrCPName}` + +## GUI Information ## + +* Locations: + - `Tenants -> Application Profiles -> Application EPGs -> Contracts` + - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` + - `... add all locations ...` + +## Example Usage ## + +```hcl + +data "aci_relation_to_intra_epg_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_name = aci_contract.example.name +} + +data "aci_relation_to_intra_epg_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_name = aci_contract.example.name +} + +``` + +## Schema ## + +### Required ### + +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) + - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) + - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) + - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) + - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) + - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) + - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) + - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) + - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) + - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) + - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) + - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) + - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) + - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) + - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) + - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) + - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) + - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) + +* `contract_name` (tnVzBrCPName) - (string) The binary contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. + +### Read-Only ### + +* `id` - (string) The distinguished name (DN) of the Relation To Intra Epg Contract object. +* `annotation` (annotation) - (string) The annotation of the Relation To Intra Epg Contract object. + +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. diff --git a/docs/data-sources/relation_to_provided_contract.md b/docs/data-sources/relation_to_provided_contract.md new file mode 100644 index 000000000..153297771 --- /dev/null +++ b/docs/data-sources/relation_to_provided_contract.md @@ -0,0 +1,94 @@ +--- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). +subcategory: "Application Management" +layout: "aci" +page_title: "ACI: aci_relation_to_provided_contract" +sidebar_current: "docs-aci-data-source-aci_relation_to_provided_contract" +description: |- + Data source for Relation To Provided Contract +--- + +# aci_relation_to_provided_contract # + +Data source for Relation To Provided Contract + +## API Information ## + +* Class: [fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview) + +* Supported in ACI versions: 1.0(1e) and later. + +* Distinguished Name Formats: + - `... add all relevant DNs ...` + - Too many DN formats to display, see model documentation for all possible parents of [fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview). + - `uni/tn-{name}/ap-{name}/epg-{name}/rsprov-{tnVzBrCPName}` + - `uni/tn-{name}/ap-{name}/esg-{name}/rsprov-{tnVzBrCPName}` + +## GUI Information ## + +* Locations: + - `Tenants -> Application Profiles -> Application EPGs -> Contracts` + - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` + - `... add all locations ...` + +## Example Usage ## + +```hcl + +data "aci_relation_to_provided_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_name = aci_contract.example.name +} + +data "aci_relation_to_provided_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_name = aci_contract.example.name +} + +``` + +## Schema ## + +### Required ### + +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) + - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) + - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) + - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) + - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) + - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) + - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) + - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) + - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) + - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) + - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) + - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) + - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) + - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) + - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) + - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) + - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) + - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) + +* `contract_name` (tnVzBrCPName) - (string) The provider contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. + +### Read-Only ### + +* `id` - (string) The distinguished name (DN) of the Relation To Provided Contract object. +* `annotation` (annotation) - (string) The annotation of the Relation To Provided Contract object. +* `match_criteria` (matchT) - (string) The matched EPG type. +* `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. + +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. diff --git a/docs/data-sources/relation_to_taboo_contract.md b/docs/data-sources/relation_to_taboo_contract.md new file mode 100644 index 000000000..446e7261c --- /dev/null +++ b/docs/data-sources/relation_to_taboo_contract.md @@ -0,0 +1,85 @@ +--- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). +subcategory: "Application Management" +layout: "aci" +page_title: "ACI: aci_relation_to_taboo_contract" +sidebar_current: "docs-aci-data-source-aci_relation_to_taboo_contract" +description: |- + Data source for Relation To Taboo Contract +--- + +# aci_relation_to_taboo_contract # + +Data source for Relation To Taboo Contract + +## API Information ## + +* Class: [fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview) + +* Supported in ACI versions: 1.0(1e) and later. + +* Distinguished Name Formats: + - `... add all relevant DNs ...` + - Too many DN formats to display, see model documentation for all possible parents of [fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview). + - `uni/tn-{name}/ap-{name}/epg-{name}/rsprotBy-{tnVzTabooName}` + +## GUI Information ## + +* Locations: + - `Tenants -> Application Profiles -> Application EPGs -> Contracts` + - `... add all locations ...` + +## Example Usage ## + +```hcl + +data "aci_relation_to_taboo_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + taboo_contract_name = aci_taboo_contract.example.name +} + +``` + +## Schema ## + +### Required ### + +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) + - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) + - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) + - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) + - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) + - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) + - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) + - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) + - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) + - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) + - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) + - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) + - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) + - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) + - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) + - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) + - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) + - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) + +* `taboo_contract_name` (tnVzTabooName) - (string) A contract for denying specific classes of traffic. Taboo rules are applied in the hardware before applying the rules of regular contracts. Without a contract, the default forwarding policy is to not allow any communication between EPGs. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/taboo_contract) with `aci_taboo_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/taboo_contract) with `data.aci_taboo_contract.example.name`. + +### Read-Only ### + +* `id` - (string) The distinguished name (DN) of the Relation To Taboo Contract object. +* `annotation` (annotation) - (string) The annotation of the Relation To Taboo Contract object. + +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. diff --git a/docs/data-sources/tag.md b/docs/data-sources/tag.md index 55e36e99e..65d267ddb 100644 --- a/docs/data-sources/tag.md +++ b/docs/data-sources/tag.md @@ -55,25 +55,25 @@ data "aci_tag" "example_application_epg" { * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - Too many parent DNs to display, see model documentation for all possible parents of [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview). - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_application_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_profile) ([fvAp](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAp/overview)) - [aci_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf) ([fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_endpoint_tag_ip](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_tag_ip) ([fvEpIpTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvEpIpTag/overview)) - [aci_endpoint_tag_mac](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_tag_mac) ([fvEpMacTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvEpMacTag/overview)) - [aci_vrf_fallback_route_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group) ([fvFBRGroup](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRGroup/overview)) - [aci_vrf_fallback_route_group_member](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group_member) ([fvFBRMember](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRMember/overview)) + - [aci_relation_to_consumed_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract) ([fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) + - [aci_relation_to_consumed_contract_interface](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract_interface) ([fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) + - [aci_relation_to_intra_epg_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_intra_epg_contract) ([fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) + - [aci_relation_to_taboo_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_taboo_contract) ([fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview)) + - [aci_relation_to_provided_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_provided_contract) ([fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)) + - [aci_relation_to_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_vrf) ([fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) + - [aci_relation_to_contract_master](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_contract_master) ([fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) - [aci_tenant](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tenant) ([fvTenant](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTenant/overview)) - [aci_l3out_consumer_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_consumer_label) ([l3extConsLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extConsLbl/overview)) - [aci_logical_node_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_profile) ([l3extLNodeP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLNodeP/overview)) - [aci_l3out_loopback_interface_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_loopback_interface_profile) ([l3extLoopBackIfP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLoopBackIfP/overview)) - [aci_l3_outside](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3_outside) ([l3extOut](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extOut/overview)) - - [aci_l3out_provider_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_provider_label) ([l3extProvLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extProvLbl/overview)) - - [aci_logical_node_to_fabric_node](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_to_fabric_node) ([l3extRsNodeL3OutAtt](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extRsNodeL3OutAtt/overview)) - - [aci_relation_to_fallback_route_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_fallback_route_group) ([l3extRsOutToFBRGroup](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extRsOutToFBRGroup/overview)) - - [aci_l3out_redistribute_policy](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_redistribute_policy) ([l3extRsRedistributePol](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extRsRedistributePol/overview)) - - [aci_external_management_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_management_network_instance_profile) ([mgmtInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInstP/overview)) - - [aci_relation_to_consumed_out_of_band_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_out_of_band_contract) ([mgmtRsOoBCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtRsOoBCons/overview)) - - [aci_external_management_network_subnet](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_management_network_subnet) ([mgmtSubnet](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtSubnet/overview)) - - [aci_l3out_node_sid_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_node_sid_profile) ([mplsNodeSidP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mplsNodeSidP/overview)) - - [aci_netflow_exporter_policy](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/netflow_exporter_policy) ([netflowExporterPol](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/netflowExporterPol/overview)) * `key` (key) - (string) The key used to uniquely identify this configuration object. ### Read-Only ### diff --git a/docs/resources/annotation.md b/docs/resources/annotation.md index 85e946ee4..d1832d2ee 100644 --- a/docs/resources/annotation.md +++ b/docs/resources/annotation.md @@ -64,25 +64,25 @@ All examples for the Annotation resource can be found in the [examples](https:// * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - Too many parent DNs to display, see model documentation for all possible parents of [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview). - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_application_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_profile) ([fvAp](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAp/overview)) - [aci_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf) ([fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_endpoint_tag_ip](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_tag_ip) ([fvEpIpTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvEpIpTag/overview)) - [aci_endpoint_tag_mac](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_tag_mac) ([fvEpMacTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvEpMacTag/overview)) - [aci_vrf_fallback_route_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group) ([fvFBRGroup](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRGroup/overview)) - [aci_vrf_fallback_route_group_member](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group_member) ([fvFBRMember](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRMember/overview)) + - [aci_relation_to_consumed_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract) ([fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) + - [aci_relation_to_consumed_contract_interface](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract_interface) ([fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) + - [aci_relation_to_intra_epg_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_intra_epg_contract) ([fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) + - [aci_relation_to_taboo_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_taboo_contract) ([fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview)) + - [aci_relation_to_provided_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_provided_contract) ([fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)) + - [aci_relation_to_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_vrf) ([fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) + - [aci_relation_to_contract_master](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_contract_master) ([fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) - [aci_tenant](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tenant) ([fvTenant](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTenant/overview)) - [aci_l3out_consumer_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_consumer_label) ([l3extConsLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extConsLbl/overview)) - [aci_logical_node_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_profile) ([l3extLNodeP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLNodeP/overview)) - [aci_l3out_loopback_interface_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_loopback_interface_profile) ([l3extLoopBackIfP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLoopBackIfP/overview)) - [aci_l3_outside](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3_outside) ([l3extOut](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extOut/overview)) - - [aci_l3out_provider_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_provider_label) ([l3extProvLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extProvLbl/overview)) - - [aci_logical_node_to_fabric_node](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_to_fabric_node) ([l3extRsNodeL3OutAtt](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extRsNodeL3OutAtt/overview)) - - [aci_relation_to_fallback_route_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_fallback_route_group) ([l3extRsOutToFBRGroup](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extRsOutToFBRGroup/overview)) - - [aci_l3out_redistribute_policy](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_redistribute_policy) ([l3extRsRedistributePol](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extRsRedistributePol/overview)) - - [aci_external_management_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_management_network_instance_profile) ([mgmtInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInstP/overview)) - - [aci_relation_to_consumed_out_of_band_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_out_of_band_contract) ([mgmtRsOoBCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtRsOoBCons/overview)) - - [aci_external_management_network_subnet](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_management_network_subnet) ([mgmtSubnet](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtSubnet/overview)) - - [aci_l3out_node_sid_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_node_sid_profile) ([mplsNodeSidP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mplsNodeSidP/overview)) - - [aci_netflow_exporter_policy](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/netflow_exporter_policy) ([netflowExporterPol](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/netflowExporterPol/overview)) * `key` (key) - (string) The key used to uniquely identify this configuration object. * `value` (value) - (string) The value of the property. diff --git a/docs/resources/endpoint_security_group.md b/docs/resources/endpoint_security_group.md index 1c63b0ba9..eb03df03e 100644 --- a/docs/resources/endpoint_security_group.md +++ b/docs/resources/endpoint_security_group.md @@ -1,4 +1,7 @@ --- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). subcategory: "Application Management" layout: "aci" page_title: "ACI: aci_endpoint_security_group" @@ -7,100 +10,249 @@ description: |- Manages ACI Endpoint Security Group --- -# aci_endpoint_security_group +# aci_endpoint_security_group # Manages ACI Endpoint Security Group -## API Information -- `Class` - fvESg -- `Distinguished Name` - uni/tn-{name}/ap-{name}/esg-{name} -## GUI Information +## API Information ## -- `Location` - Tenants > {tenant_name} > Application Profiles > Endpoint Security Groups +* Class: [fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview) -## Example Usage +* Supported in ACI versions: 5.0(1k) and later. + +* Distinguished Name Format: `uni/tn-{name}/ap-{name}/esg-{name}` + +## GUI Information ## + +* Location: `Tenants -> Application Profiles -> Endpoint Security Groups` + +## Example Usage ## + +The configuration snippet below creates a Endpoint Security Group with only required attributes. + +```hcl + +resource "aci_endpoint_security_group" "example_application_profile" { + parent_dn = aci_application_profile.example.id + name = "test_name" +} + +``` +The configuration snippet below shows all possible attributes of the Endpoint Security Group. + +!> This example might not be valid configuration and is only used to show all possible attributes. ```hcl -resource "aci_endpoint_security_group" "example" { - application_profile_dn = aci_application_profile.example.id - name = "example" - description = "from terraform" - annotation = "orchestrator:terraform" - name_alias = "example" - match_t = "AtleastOne" - pc_enf_pref = "unenforced" - pref_gr_memb = "exclude" - - relation_fv_rs_scope = aci_vrf.example.id - - relation_fv_rs_cons { - prio = "unspecified" - target_dn = aci_contract.example.id - } - - relation_fv_rs_cons_if { - prio = "unspecified" - target_dn = aci_imported_contract.example.id - } - - relation_fv_rs_cust_qos_pol = aci_resource.example.id - - relation_fv_rs_intra_epg = [aci_contract.example.id] - - relation_fv_rs_prov { - match_t = "AtleastOne" - prio = "unspecified" - target_dn = aci_contract.example.id - } - - relation_fv_rs_sec_inherited = [aci_application_epg.example.id] + +resource "aci_endpoint_security_group" "full_example_application_profile" { + parent_dn = aci_application_profile.example.id + annotation = "annotation" + description = "description" + exception_tag = "exception_tag" + match_criteria = "All" + name = "test_name" + name_alias = "name_alias" + intra_esg_isolation = "enforced" + preferred_group_member = "exclude" + admin_state = "no" + relation_to_consumed_contracts = [ + { + annotation = "annotation_1" + priority = "level1" + contract_name = aci_contract.example.name + } + ] + relation_to_consumed_contract_interfaces = [ + { + annotation = "annotation_1" + priority = "level1" + contract_interface_name = aci_contract_interface.example.name + } + ] + relation_to_intra_epg_contracts = [ + { + annotation = "annotation_1" + contract_name = aci_contract.example.name + } + ] + relation_to_provided_contracts = [ + { + annotation = "annotation_1" + match_criteria = "All" + priority = "level1" + contract_name = aci_contract.example.name + } + ] + relation_to_vrf = [ + { + annotation = "annotation_1" + vrf_name = aci_vrf.example.name + } + ] + relation_to_contract_masters = [ + { + annotation = "annotation_1" + target_dn = "target_dn_0" + } + ] + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] } + ``` -## Argument Reference +All examples for the Endpoint Security Group resource can be found in the [examples](https://github.com/CiscoDevNet/terraform-provider-aci/tree/master/examples/resources/aci_endpoint_security_group) folder. -- `application_profile_dn` - (Required) Distinguished name of parent Application Profile object. -- `name` - (Required) Name of object Endpoint Security Group. -- `annotation` - (Optional) Annotation of object Endpoint Security Group. -- `description` - (Optional) Description of object Endpoint Security Group. -- `name_alias` - (Optional) Name alias of object Endpoint Security Group. -- `match_t` - (Optional) Provider Label Match Criteria. Allowed values are "All", "AtleastOne", "AtmostOne", "None", and default value is "AtleastOne". Type: String. -- `pc_enf_pref` - (Optional) The preferred policy control enforcement. Allowed values are "enforced", "unenforced", and default value is "unenforced". Type: String. -- `pref_gr_memb` - (Optional) Preferred Group Member parameter is used to determine - if EPg is part of a group that allows - a contract for communication. Allowed values are "exclude", "include", and default value is "exclude". Type: String. +## Schema ## -- `relation_fv_rs_scope` - (Required) Represents the relation to a VRF (class fvCtx). Type: String. +### Required ### -- `relation_fv_rs_cons` - (Optional) A block representing the relation to a Contract Consumer (class vzBrCP). The Consumer contract profile information. Type: Block. +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_profile) ([fvAp](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAp/overview)) +* `name` (name) - (string) The name of the Endpoint Security Group object. - - `prio` - (Optional) The system class determines the quality of service and priority for the consumer traffic. Allowed values are "level1", "level2", "level3", "level4", "level5", "level6", "unspecified", and default value is "unspecified". Type: String. - - `target_dn` - (Required) The distinguished name of the target contract. Type: String. +### Read-Only ### -- `relation_fv_rs_cons_if` - (Optional) A block representing the relation to a Contract Interface (class vzCPIf). It is a contract for which the EPG will be a consumer. Type: Block. +* `id` - (string) The distinguished name (DN) of the Endpoint Security Group object. - - `prio` - (Optional) The contract interface priority. Allowed values are "level1", "level2", "level3", "level4", "level5", "level6", "unspecified", and default value is "unspecified". Type: String. - - `target_dn` - (Required) The distinguished name of the target contract. Type: String. +### Optional ### + +* `annotation` (annotation) - (string) The annotation of the Endpoint Security Group object. + - Default: `orchestrator:terraform` +* `description` (descr) - (string) The description of the Endpoint Security Group object. +* `exception_tag` (exceptionTag) - (string) Contract Exception Tag. +* `match_criteria` (matchT) - (string) The provider label match criteria. + - Default: `AtleastOne` + - Valid Values: `All`, `AtleastOne`, `AtmostOne`, `None`. +* `name_alias` (nameAlias) - (string) The name alias of the Endpoint Security Group object. +* `intra_esg_isolation` (pcEnfPref) - (string) Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this EPG. + - Default: `unenforced` + - Valid Values: `enforced`, `unenforced`. +* `preferred_group_member` (prefGrMemb) - (string) Represents parameter used to determine if EPg is part of a group that does not a contract for communication. + - Default: `exclude` + - Valid Values: `exclude`, `include`. +* `admin_state` (shutdown) - (string) Withdraw ESg Configuration from all Nodes in the Fabric. + - Default: `no` + - Valid Values: `no`, `yes`. -- `relation_fv_rs_cust_qos_pol` - (Optional) **WARNING:** This attribute is deprecated and will be removed in the next major version. Represents the relation to a Custom QOS Policy (class qosCustomPol). It is a source relation to a custom QoS policy that enables different levels of service to be assigned to network traffic, including specifications for the Differentiated Services Code Point (DSCP) value(s) and the 802.1p Dot1p priority. Type: String. +* `relation_to_consumed_contracts` - (list) A list of Relation To Consumed Contracts (ACI object [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)) which can be configured using the [aci_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) resource. This attribute is supported in ACI versions: 1.0(1e) and later. + + #### Required #### + + * `contract_name` (tnVzBrCPName) - (string) The consumer contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. -- `relation_fv_rs_intra_epg` - (Optional) Represents the relation to an Intra EPg Contract (class vzBrCP). Represents that the EPg is moving from "allow all within epg" mode to a "deny all within epg" mode. The only type of traffic allowed between EPs in this EPg is the one specified by contracts EPg associates to this relation. Type: List. + #### Optional #### + + * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. + - Default: `orchestrator:terraform` + * `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. + - Default: `unspecified` + - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. -- `relation_fv_rs_prov` - (Optional) A block representing the relation to a Contract Provider (class vzBrCP). It is a contract for which the EPG will be a provider. Type: Block. +* `relation_to_consumed_contract_interfaces` - (list) A list of Relation To Consumed Contract Interfaces (ACI object [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) pointing to Contract Interface (ACI Object [vzCPIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzCPIf/overview)) which can be configured using the [aci_contract_interface](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract_interface) resource. This attribute is supported in ACI versions: 1.0(1e) and later. + + #### Required #### + + * `contract_interface_name` (tnVzCPIfName) - (string) The contract interface name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract_interface) with `aci_contract_interface.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract_interface) with `data.aci_contract_interface.example.name`. - - `match_t` - (Optional) The matched EPG type. Allowed values are "All", "AtleastOne", "AtmostOne", "None", and default value is "AtleastOne". Type: String. - - `prio` - (Optional) The system class determines the quality of service and priority for the consumer traffic. Allowed values are "level1", "level2", "level3", "level4", "level5", "level6", "unspecified", and default value is "unspecified". Type: String. - - `target_dn` - (Required) The distinguished name of the target contract. Type: String. + #### Optional #### + + * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract Interface object. + - Default: `orchestrator:terraform` + * `priority` (prio) - (string) The contract interface priority. + - Default: `unspecified` + - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. -- `relation_fv_rs_sec_inherited` - (Optional) Represents the relation to a Security inheritance (class fvEPg). It represents that the EPg is inheriting security configuration from another EPg. Type: List. +* `relation_to_intra_epg_contracts` - (list) A list of Relation To Intra Epg Contracts (ACI object [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)) which can be configured using the [aci_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) resource. This attribute is supported in ACI versions: 3.0(1k) and later. + + #### Required #### + + * `contract_name` (tnVzBrCPName) - (string) The binary contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. + + #### Optional #### + + * `annotation` (annotation) - (string) The annotation of the Relation To Intra Epg Contract object. + - Default: `orchestrator:terraform` + +* `relation_to_provided_contracts` - (list) A list of Relation To Provided Contracts (ACI object [fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)) which can be configured using the [aci_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) resource. This attribute is supported in ACI versions: 1.0(1e) and later. + + #### Required #### + + * `contract_name` (tnVzBrCPName) - (string) The provider contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. + + #### Optional #### + + * `annotation` (annotation) - (string) The annotation of the Relation To Provided Contract object. + - Default: `orchestrator:terraform` + * `match_criteria` (matchT) - (string) The matched EPG type. + - Default: `AtleastOne` + - Valid Values: `All`, `AtleastOne`, `AtmostOne`, `None`. + * `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. + - Default: `unspecified` + - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. + +* `relation_to_vrf` - (list) A list of Relation To VRF (ACI object [fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) pointing to VRF (ACI Object [fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)) which can be configured using the [aci_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf) resource. + + #### Required #### + + + #### Optional #### + + * `annotation` (annotation) - (string) The annotation of the Relation To VRF object. + - Default: `orchestrator:terraform` + * `vrf_name` (tnFvCtxName) - (string) Name. + +* `relation_to_contract_masters` - (list) A list of Relation To Contract Masters (ACI object [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) pointing to (ACI Object [fvEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvEPg/overview)) which can be configured using the [aci_](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/) resource. This attribute is supported in ACI versions: 2.3(1e) and later. + + #### Required #### + + * `target_dn` (tDn) - (string) The distinguished name of the target. + + #### Optional #### + + * `annotation` (annotation) - (string) The annotation of the Relation To Contract Master object. + - Default: `orchestrator:terraform` + +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). Annotations can also be configured using a separate [aci_annotation](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/annotation) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). Tags can also be configured using a separate [aci_tag](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tag) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. ## Importing -An existing EndpointSecurityGroup can be [imported][docs-import] into this resource via its Dn, via the following command: -[docs-import]: https://www.terraform.io/docs/import/index.html +An existing Endpoint Security Group can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: ``` -terraform import endpoint_security_group.example +terraform import aci_endpoint_security_group.example_application_profile uni/tn-{name}/ap-{name}/esg-{name} +``` + +Starting in Terraform version 1.5, an existing Endpoint Security Group can be imported +using [import blocks](https://developer.hashicorp.com/terraform/language/import) via the following configuration: + +``` +import { + id = "uni/tn-{name}/ap-{name}/esg-{name}" + to = aci_endpoint_security_group.example_application_profile +} ``` diff --git a/docs/resources/out_of_band_contract.md b/docs/resources/out_of_band_contract.md index 2f04bbf76..5a5687984 100644 --- a/docs/resources/out_of_band_contract.md +++ b/docs/resources/out_of_band_contract.md @@ -48,7 +48,6 @@ The configuration snippet below shows all possible attributes of the Out Of Band resource "aci_out_of_band_contract" "full_example" { annotation = "annotation" description = "description" - intent = "estimate_add" name = "test_name" name_alias = "name_alias" owner_key = "owner_key" @@ -89,9 +88,6 @@ All examples for the Out Of Band Contract resource can be found in the [examples * `annotation` (annotation) - (string) The annotation of the Out Of Band Contract object. - Default: `orchestrator:terraform` * `description` (descr) - (string) The description of the Out Of Band Contract object. -* `intent` (intent) - (string) The Install Rules or Estimate Number of Rules. - - Default: `install` - - Valid Values: `estimate_add`, `estimate_delete`, `install`. * `name_alias` (nameAlias) - (string) The name alias of the Out Of Band Contract object. * `owner_key` (ownerKey) - (string) The key for enabling clients to own their data for entity correlation. * `owner_tag` (ownerTag) - (string) A tag for enabling clients to add their own data. For example, to indicate who created this object. diff --git a/docs/resources/relation_to_consumed_contract.md b/docs/resources/relation_to_consumed_contract.md new file mode 100644 index 000000000..a10e51510 --- /dev/null +++ b/docs/resources/relation_to_consumed_contract.md @@ -0,0 +1,174 @@ +--- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). +subcategory: "Application Management" +layout: "aci" +page_title: "ACI: aci_relation_to_consumed_contract" +sidebar_current: "docs-aci-resource-aci_relation_to_consumed_contract" +description: |- + Manages ACI Relation To Consumed Contract +--- + +# aci_relation_to_consumed_contract # + +Manages ACI Relation To Consumed Contract + + + +## API Information ## + +* Class: [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview) + +* Supported in ACI versions: 1.0(1e) and later. + +* Distinguished Name Formats: + - `... add all relevant DNs ...` + - Too many DN formats to display, see model documentation for all possible parents of [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview). + - `uni/tn-{name}/ap-{name}/epg-{name}/rscons-{tnVzBrCPName}` + - `uni/tn-{name}/ap-{name}/esg-{name}/rscons-{tnVzBrCPName}` + +## GUI Information ## + +* Locations: + - `Tenants -> Application Profiles -> Application EPGs -> Contracts` + - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` + - `... add all locations ...` + +## Example Usage ## + +The configuration snippet below creates a Relation To Consumed Contract with only required attributes. + +```hcl + +resource "aci_relation_to_consumed_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_name = aci_contract.example.name +} + +resource "aci_relation_to_consumed_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_name = aci_contract.example.name +} + +``` +The configuration snippet below shows all possible attributes of the Relation To Consumed Contract. + +!> This example might not be valid configuration and is only used to show all possible attributes. + +```hcl + +resource "aci_relation_to_consumed_contract" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + priority = "level1" + contract_name = aci_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +resource "aci_relation_to_consumed_contract" "full_example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + annotation = "annotation" + priority = "level1" + contract_name = aci_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +``` + +All examples for the Relation To Consumed Contract resource can be found in the [examples](https://github.com/CiscoDevNet/terraform-provider-aci/tree/master/examples/resources/aci_relation_to_consumed_contract) folder. + +## Schema ## + +### Required ### + +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) + - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) + - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) + - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) + - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) + - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) + - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) + - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) + - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) + - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) + - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) + - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) + - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) + - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) + - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) + - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) + - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) + - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) + +* `contract_name` (tnVzBrCPName) - (string) The consumer contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. + +### Read-Only ### + +* `id` - (string) The distinguished name (DN) of the Relation To Consumed Contract object. + +### Optional ### + +* `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. + - Default: `orchestrator:terraform` +* `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. + - Default: `unspecified` + - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. + +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). Annotations can also be configured using a separate [aci_annotation](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/annotation) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). Tags can also be configured using a separate [aci_tag](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tag) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +## Importing + +An existing Relation To Consumed Contract can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: + +``` +terraform import aci_relation_to_consumed_contract.example_application_epg ... add all relevant DNs ... +``` + +Starting in Terraform version 1.5, an existing Relation To Consumed Contract can be imported +using [import blocks](https://developer.hashicorp.com/terraform/language/import) via the following configuration: + +``` +import { + id = "... add all relevant DNs ..." + to = aci_relation_to_consumed_contract.example_application_epg +} +``` diff --git a/docs/resources/relation_to_consumed_contract_interface.md b/docs/resources/relation_to_consumed_contract_interface.md new file mode 100644 index 000000000..2ab6e0611 --- /dev/null +++ b/docs/resources/relation_to_consumed_contract_interface.md @@ -0,0 +1,174 @@ +--- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). +subcategory: "Application Management" +layout: "aci" +page_title: "ACI: aci_relation_to_consumed_contract_interface" +sidebar_current: "docs-aci-resource-aci_relation_to_consumed_contract_interface" +description: |- + Manages ACI Relation To Consumed Contract Interface +--- + +# aci_relation_to_consumed_contract_interface # + +Manages ACI Relation To Consumed Contract Interface + + + +## API Information ## + +* Class: [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview) + +* Supported in ACI versions: 1.0(1e) and later. + +* Distinguished Name Formats: + - `... add all relevant DNs ...` + - Too many DN formats to display, see model documentation for all possible parents of [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview). + - `uni/tn-{name}/ap-{name}/epg-{name}/rsconsIf-{tnVzCPIfName}` + - `uni/tn-{name}/ap-{name}/esg-{name}/rsconsIf-{tnVzCPIfName}` + +## GUI Information ## + +* Locations: + - `Tenants -> Application Profiles -> Application EPGs -> Contracts` + - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` + - `... add all locations ...` + +## Example Usage ## + +The configuration snippet below creates a Relation To Consumed Contract Interface with only required attributes. + +```hcl + +resource "aci_relation_to_consumed_contract_interface" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_interface_name = aci_contract_interface.example.name +} + +resource "aci_relation_to_consumed_contract_interface" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_interface_name = aci_contract_interface.example.name +} + +``` +The configuration snippet below shows all possible attributes of the Relation To Consumed Contract Interface. + +!> This example might not be valid configuration and is only used to show all possible attributes. + +```hcl + +resource "aci_relation_to_consumed_contract_interface" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + priority = "level1" + contract_interface_name = aci_contract_interface.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +resource "aci_relation_to_consumed_contract_interface" "full_example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + annotation = "annotation" + priority = "level1" + contract_interface_name = aci_contract_interface.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +``` + +All examples for the Relation To Consumed Contract Interface resource can be found in the [examples](https://github.com/CiscoDevNet/terraform-provider-aci/tree/master/examples/resources/aci_relation_to_consumed_contract_interface) folder. + +## Schema ## + +### Required ### + +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) + - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) + - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) + - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) + - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) + - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) + - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) + - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) + - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) + - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) + - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) + - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) + - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) + - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) + - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) + - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) + - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) + - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) + +* `contract_interface_name` (tnVzCPIfName) - (string) The contract interface name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract_interface) with `aci_contract_interface.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract_interface) with `data.aci_contract_interface.example.name`. + +### Read-Only ### + +* `id` - (string) The distinguished name (DN) of the Relation To Consumed Contract Interface object. + +### Optional ### + +* `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract Interface object. + - Default: `orchestrator:terraform` +* `priority` (prio) - (string) The contract interface priority. + - Default: `unspecified` + - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. + +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). Annotations can also be configured using a separate [aci_annotation](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/annotation) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). Tags can also be configured using a separate [aci_tag](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tag) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +## Importing + +An existing Relation To Consumed Contract Interface can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: + +``` +terraform import aci_relation_to_consumed_contract_interface.example_application_epg ... add all relevant DNs ... +``` + +Starting in Terraform version 1.5, an existing Relation To Consumed Contract Interface can be imported +using [import blocks](https://developer.hashicorp.com/terraform/language/import) via the following configuration: + +``` +import { + id = "... add all relevant DNs ..." + to = aci_relation_to_consumed_contract_interface.example_application_epg +} +``` diff --git a/docs/resources/relation_to_contract_master.md b/docs/resources/relation_to_contract_master.md new file mode 100644 index 000000000..6c989fe49 --- /dev/null +++ b/docs/resources/relation_to_contract_master.md @@ -0,0 +1,169 @@ +--- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). +subcategory: "Application Management" +layout: "aci" +page_title: "ACI: aci_relation_to_contract_master" +sidebar_current: "docs-aci-resource-aci_relation_to_contract_master" +description: |- + Manages ACI Relation To Contract Master +--- + +# aci_relation_to_contract_master # + +Manages ACI Relation To Contract Master + + + +## API Information ## + +* Class: [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview) + +* Supported in ACI versions: 2.3(1e) and later. + +* Distinguished Name Formats: + - `... add all relevant DNs ...` + - Too many DN formats to display, see model documentation for all possible parents of [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview). + - `uni/tn-{name}/ap-{name}/epg-{name}/rssecInherited-[{tDn}]` + - `uni/tn-{name}/ap-{name}/esg-{name}/rssecInherited-[{tDn}]` + +## GUI Information ## + +* Locations: + - `Tenants -> Application Profiles -> Application EPGs` + - `Tenants -> Application Profiles -> Endpoint Security Groups` + - `... add all locations ...` + +## Example Usage ## + +The configuration snippet below creates a Relation To Contract Master with only required attributes. + +```hcl + +resource "aci_relation_to_contract_master" "example_application_epg" { + parent_dn = aci_application_epg.example.id + target_dn = aci_endpoint_security_group.example.id +} + +resource "aci_relation_to_contract_master" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + target_dn = aci_endpoint_security_group.example.id +} + +``` +The configuration snippet below shows all possible attributes of the Relation To Contract Master. + +!> This example might not be valid configuration and is only used to show all possible attributes. + +```hcl + +resource "aci_relation_to_contract_master" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + target_dn = aci_endpoint_security_group.example.id + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +resource "aci_relation_to_contract_master" "full_example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + annotation = "annotation" + target_dn = aci_endpoint_security_group.example.id + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +``` + +All examples for the Relation To Contract Master resource can be found in the [examples](https://github.com/CiscoDevNet/terraform-provider-aci/tree/master/examples/resources/aci_relation_to_contract_master) folder. + +## Schema ## + +### Required ### + +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) + - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) + - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) + - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) + - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) + - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) + - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) + - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) + - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) + - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) + - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) + - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) + - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) + - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) + - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) + - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) + - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) + - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) + +* `target_dn` (tDn) - (string) The distinguished name of the target. + +### Read-Only ### + +* `id` - (string) The distinguished name (DN) of the Relation To Contract Master object. + +### Optional ### + +* `annotation` (annotation) - (string) The annotation of the Relation To Contract Master object. + - Default: `orchestrator:terraform` + +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). Annotations can also be configured using a separate [aci_annotation](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/annotation) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). Tags can also be configured using a separate [aci_tag](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tag) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +## Importing + +An existing Relation To Contract Master can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: + +``` +terraform import aci_relation_to_contract_master.example_application_epg ... add all relevant DNs ... +``` + +Starting in Terraform version 1.5, an existing Relation To Contract Master can be imported +using [import blocks](https://developer.hashicorp.com/terraform/language/import) via the following configuration: + +``` +import { + id = "... add all relevant DNs ..." + to = aci_relation_to_contract_master.example_application_epg +} +``` diff --git a/docs/resources/relation_to_fallback_route_group.md b/docs/resources/relation_to_fallback_route_group.md index c7acf8bd1..ea4630e40 100644 --- a/docs/resources/relation_to_fallback_route_group.md +++ b/docs/resources/relation_to_fallback_route_group.md @@ -36,7 +36,7 @@ The configuration snippet below creates a Relation To Fallback Route Group with resource "aci_relation_to_fallback_route_group" "example_l3_outside" { parent_dn = aci_l3_outside.example.id - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.example.id } ``` @@ -49,7 +49,7 @@ The configuration snippet below shows all possible attributes of the Relation To resource "aci_relation_to_fallback_route_group" "full_example_l3_outside" { parent_dn = aci_l3_outside.example.id annotation = "annotation" - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.example.id annotations = [ { key = "key_0" diff --git a/docs/resources/relation_to_intra_epg_contract.md b/docs/resources/relation_to_intra_epg_contract.md new file mode 100644 index 000000000..38403a4c1 --- /dev/null +++ b/docs/resources/relation_to_intra_epg_contract.md @@ -0,0 +1,169 @@ +--- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). +subcategory: "Application Management" +layout: "aci" +page_title: "ACI: aci_relation_to_intra_epg_contract" +sidebar_current: "docs-aci-resource-aci_relation_to_intra_epg_contract" +description: |- + Manages ACI Relation To Intra Epg Contract +--- + +# aci_relation_to_intra_epg_contract # + +Manages ACI Relation To Intra Epg Contract + + + +## API Information ## + +* Class: [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview) + +* Supported in ACI versions: 3.0(1k) and later. + +* Distinguished Name Formats: + - `... add all relevant DNs ...` + - Too many DN formats to display, see model documentation for all possible parents of [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview). + - `uni/tn-{name}/ap-{name}/epg-{name}/rsintraEpg-{tnVzBrCPName}` + - `uni/tn-{name}/ap-{name}/esg-{name}/rsintraEpg-{tnVzBrCPName}` + +## GUI Information ## + +* Locations: + - `Tenants -> Application Profiles -> Application EPGs -> Contracts` + - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` + - `... add all locations ...` + +## Example Usage ## + +The configuration snippet below creates a Relation To Intra Epg Contract with only required attributes. + +```hcl + +resource "aci_relation_to_intra_epg_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_name = aci_contract.example.name +} + +resource "aci_relation_to_intra_epg_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_name = aci_contract.example.name +} + +``` +The configuration snippet below shows all possible attributes of the Relation To Intra Epg Contract. + +!> This example might not be valid configuration and is only used to show all possible attributes. + +```hcl + +resource "aci_relation_to_intra_epg_contract" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + contract_name = aci_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +resource "aci_relation_to_intra_epg_contract" "full_example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + annotation = "annotation" + contract_name = aci_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +``` + +All examples for the Relation To Intra Epg Contract resource can be found in the [examples](https://github.com/CiscoDevNet/terraform-provider-aci/tree/master/examples/resources/aci_relation_to_intra_epg_contract) folder. + +## Schema ## + +### Required ### + +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) + - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) + - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) + - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) + - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) + - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) + - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) + - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) + - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) + - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) + - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) + - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) + - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) + - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) + - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) + - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) + - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) + - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) + +* `contract_name` (tnVzBrCPName) - (string) The binary contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. + +### Read-Only ### + +* `id` - (string) The distinguished name (DN) of the Relation To Intra Epg Contract object. + +### Optional ### + +* `annotation` (annotation) - (string) The annotation of the Relation To Intra Epg Contract object. + - Default: `orchestrator:terraform` + +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). Annotations can also be configured using a separate [aci_annotation](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/annotation) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). Tags can also be configured using a separate [aci_tag](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tag) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +## Importing + +An existing Relation To Intra Epg Contract can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: + +``` +terraform import aci_relation_to_intra_epg_contract.example_application_epg ... add all relevant DNs ... +``` + +Starting in Terraform version 1.5, an existing Relation To Intra Epg Contract can be imported +using [import blocks](https://developer.hashicorp.com/terraform/language/import) via the following configuration: + +``` +import { + id = "... add all relevant DNs ..." + to = aci_relation_to_intra_epg_contract.example_application_epg +} +``` diff --git a/docs/resources/relation_to_provided_contract.md b/docs/resources/relation_to_provided_contract.md new file mode 100644 index 000000000..d579ac827 --- /dev/null +++ b/docs/resources/relation_to_provided_contract.md @@ -0,0 +1,179 @@ +--- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). +subcategory: "Application Management" +layout: "aci" +page_title: "ACI: aci_relation_to_provided_contract" +sidebar_current: "docs-aci-resource-aci_relation_to_provided_contract" +description: |- + Manages ACI Relation To Provided Contract +--- + +# aci_relation_to_provided_contract # + +Manages ACI Relation To Provided Contract + + + +## API Information ## + +* Class: [fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview) + +* Supported in ACI versions: 1.0(1e) and later. + +* Distinguished Name Formats: + - `... add all relevant DNs ...` + - Too many DN formats to display, see model documentation for all possible parents of [fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview). + - `uni/tn-{name}/ap-{name}/epg-{name}/rsprov-{tnVzBrCPName}` + - `uni/tn-{name}/ap-{name}/esg-{name}/rsprov-{tnVzBrCPName}` + +## GUI Information ## + +* Locations: + - `Tenants -> Application Profiles -> Application EPGs -> Contracts` + - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` + - `... add all locations ...` + +## Example Usage ## + +The configuration snippet below creates a Relation To Provided Contract with only required attributes. + +```hcl + +resource "aci_relation_to_provided_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_name = aci_contract.example.name +} + +resource "aci_relation_to_provided_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_name = aci_contract.example.name +} + +``` +The configuration snippet below shows all possible attributes of the Relation To Provided Contract. + +!> This example might not be valid configuration and is only used to show all possible attributes. + +```hcl + +resource "aci_relation_to_provided_contract" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + match_criteria = "All" + priority = "level1" + contract_name = aci_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +resource "aci_relation_to_provided_contract" "full_example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + annotation = "annotation" + match_criteria = "All" + priority = "level1" + contract_name = aci_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +``` + +All examples for the Relation To Provided Contract resource can be found in the [examples](https://github.com/CiscoDevNet/terraform-provider-aci/tree/master/examples/resources/aci_relation_to_provided_contract) folder. + +## Schema ## + +### Required ### + +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) + - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) + - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) + - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) + - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) + - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) + - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) + - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) + - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) + - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) + - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) + - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) + - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) + - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) + - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) + - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) + - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) + - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) + +* `contract_name` (tnVzBrCPName) - (string) The provider contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. + +### Read-Only ### + +* `id` - (string) The distinguished name (DN) of the Relation To Provided Contract object. + +### Optional ### + +* `annotation` (annotation) - (string) The annotation of the Relation To Provided Contract object. + - Default: `orchestrator:terraform` +* `match_criteria` (matchT) - (string) The matched EPG type. + - Default: `AtleastOne` + - Valid Values: `All`, `AtleastOne`, `AtmostOne`, `None`. +* `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. + - Default: `unspecified` + - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. + +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). Annotations can also be configured using a separate [aci_annotation](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/annotation) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). Tags can also be configured using a separate [aci_tag](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tag) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +## Importing + +An existing Relation To Provided Contract can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: + +``` +terraform import aci_relation_to_provided_contract.example_application_epg ... add all relevant DNs ... +``` + +Starting in Terraform version 1.5, an existing Relation To Provided Contract can be imported +using [import blocks](https://developer.hashicorp.com/terraform/language/import) via the following configuration: + +``` +import { + id = "... add all relevant DNs ..." + to = aci_relation_to_provided_contract.example_application_epg +} +``` diff --git a/docs/resources/relation_to_taboo_contract.md b/docs/resources/relation_to_taboo_contract.md new file mode 100644 index 000000000..7f29ae97d --- /dev/null +++ b/docs/resources/relation_to_taboo_contract.md @@ -0,0 +1,144 @@ +--- +# Documentation generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). +subcategory: "Application Management" +layout: "aci" +page_title: "ACI: aci_relation_to_taboo_contract" +sidebar_current: "docs-aci-resource-aci_relation_to_taboo_contract" +description: |- + Manages ACI Relation To Taboo Contract +--- + +# aci_relation_to_taboo_contract # + +Manages ACI Relation To Taboo Contract + + + +## API Information ## + +* Class: [fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview) + +* Supported in ACI versions: 1.0(1e) and later. + +* Distinguished Name Formats: + - `... add all relevant DNs ...` + - Too many DN formats to display, see model documentation for all possible parents of [fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview). + - `uni/tn-{name}/ap-{name}/epg-{name}/rsprotBy-{tnVzTabooName}` + +## GUI Information ## + +* Locations: + - `Tenants -> Application Profiles -> Application EPGs -> Contracts` + - `... add all locations ...` + +## Example Usage ## + +The configuration snippet below creates a Relation To Taboo Contract with only required attributes. + +```hcl + +resource "aci_relation_to_taboo_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + taboo_contract_name = aci_taboo_contract.example.name +} + +``` +The configuration snippet below shows all possible attributes of the Relation To Taboo Contract. + +!> This example might not be valid configuration and is only used to show all possible attributes. + +```hcl + +resource "aci_relation_to_taboo_contract" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + taboo_contract_name = aci_taboo_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +``` + +All examples for the Relation To Taboo Contract resource can be found in the [examples](https://github.com/CiscoDevNet/terraform-provider-aci/tree/master/examples/resources/aci_relation_to_taboo_contract) folder. + +## Schema ## + +### Required ### + +* `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) + - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) + - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) + - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) + - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) + - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) + - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) + - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) + - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) + - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) + - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) + - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) + - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) + - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) + - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) + - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) + - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) + - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) + +* `taboo_contract_name` (tnVzTabooName) - (string) A contract for denying specific classes of traffic. Taboo rules are applied in the hardware before applying the rules of regular contracts. Without a contract, the default forwarding policy is to not allow any communication between EPGs. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/taboo_contract) with `aci_taboo_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/taboo_contract) with `data.aci_taboo_contract.example.name`. + +### Read-Only ### + +* `id` - (string) The distinguished name (DN) of the Relation To Taboo Contract object. + +### Optional ### + +* `annotation` (annotation) - (string) The annotation of the Relation To Taboo Contract object. + - Default: `orchestrator:terraform` + +* `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). Annotations can also be configured using a separate [aci_annotation](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/annotation) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +* `tags` - (list) A list of Tags (ACI object [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview)). Tags can also be configured using a separate [aci_tag](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tag) resource. This attribute is supported in ACI versions: 3.2(1l) and later. + + #### Required #### + + * `key` (key) - (string) The key used to uniquely identify this configuration object. + * `value` (value) - (string) The value of the property. + +## Importing + +An existing Relation To Taboo Contract can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: + +``` +terraform import aci_relation_to_taboo_contract.example_application_epg ... add all relevant DNs ... +``` + +Starting in Terraform version 1.5, an existing Relation To Taboo Contract can be imported +using [import blocks](https://developer.hashicorp.com/terraform/language/import) via the following configuration: + +``` +import { + id = "... add all relevant DNs ..." + to = aci_relation_to_taboo_contract.example_application_epg +} +``` diff --git a/docs/resources/tag.md b/docs/resources/tag.md index d879337bc..4e9a0fe08 100644 --- a/docs/resources/tag.md +++ b/docs/resources/tag.md @@ -64,25 +64,25 @@ All examples for the Tag resource can be found in the [examples](https://github. * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - Too many parent DNs to display, see model documentation for all possible parents of [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview). - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) + - [aci_application_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_profile) ([fvAp](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAp/overview)) - [aci_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf) ([fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)) + - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_endpoint_tag_ip](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_tag_ip) ([fvEpIpTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvEpIpTag/overview)) - [aci_endpoint_tag_mac](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_tag_mac) ([fvEpMacTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvEpMacTag/overview)) - [aci_vrf_fallback_route_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group) ([fvFBRGroup](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRGroup/overview)) - [aci_vrf_fallback_route_group_member](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group_member) ([fvFBRMember](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRMember/overview)) + - [aci_relation_to_consumed_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract) ([fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) + - [aci_relation_to_consumed_contract_interface](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract_interface) ([fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) + - [aci_relation_to_intra_epg_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_intra_epg_contract) ([fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) + - [aci_relation_to_taboo_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_taboo_contract) ([fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview)) + - [aci_relation_to_provided_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_provided_contract) ([fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)) + - [aci_relation_to_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_vrf) ([fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) + - [aci_relation_to_contract_master](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_contract_master) ([fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) - [aci_tenant](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tenant) ([fvTenant](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTenant/overview)) - [aci_l3out_consumer_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_consumer_label) ([l3extConsLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extConsLbl/overview)) - [aci_logical_node_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_profile) ([l3extLNodeP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLNodeP/overview)) - [aci_l3out_loopback_interface_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_loopback_interface_profile) ([l3extLoopBackIfP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLoopBackIfP/overview)) - [aci_l3_outside](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3_outside) ([l3extOut](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extOut/overview)) - - [aci_l3out_provider_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_provider_label) ([l3extProvLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extProvLbl/overview)) - - [aci_logical_node_to_fabric_node](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_to_fabric_node) ([l3extRsNodeL3OutAtt](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extRsNodeL3OutAtt/overview)) - - [aci_relation_to_fallback_route_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_fallback_route_group) ([l3extRsOutToFBRGroup](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extRsOutToFBRGroup/overview)) - - [aci_l3out_redistribute_policy](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_redistribute_policy) ([l3extRsRedistributePol](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extRsRedistributePol/overview)) - - [aci_external_management_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_management_network_instance_profile) ([mgmtInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInstP/overview)) - - [aci_relation_to_consumed_out_of_band_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_out_of_band_contract) ([mgmtRsOoBCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtRsOoBCons/overview)) - - [aci_external_management_network_subnet](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_management_network_subnet) ([mgmtSubnet](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtSubnet/overview)) - - [aci_l3out_node_sid_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_node_sid_profile) ([mplsNodeSidP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mplsNodeSidP/overview)) - - [aci_netflow_exporter_policy](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/netflow_exporter_policy) ([netflowExporterPol](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/netflowExporterPol/overview)) * `key` (key) - (string) The key used to uniquely identify this configuration object. * `value` (value) - (string) The value of the property. diff --git a/examples/data-sources/aci_endpoint_security_group/data-source.tf b/examples/data-sources/aci_endpoint_security_group/data-source.tf new file mode 100644 index 000000000..41be20c11 --- /dev/null +++ b/examples/data-sources/aci_endpoint_security_group/data-source.tf @@ -0,0 +1,5 @@ + +data "aci_endpoint_security_group" "example_application_profile" { + parent_dn = aci_application_profile.example.id + name = "test_name" +} diff --git a/examples/data-sources/aci_endpoint_security_group/provider.tf b/examples/data-sources/aci_endpoint_security_group/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/data-sources/aci_endpoint_security_group/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/data-sources/aci_relation_to_consumed_contract/data-source.tf b/examples/data-sources/aci_relation_to_consumed_contract/data-source.tf new file mode 100644 index 000000000..fa20f256d --- /dev/null +++ b/examples/data-sources/aci_relation_to_consumed_contract/data-source.tf @@ -0,0 +1,10 @@ + +data "aci_relation_to_consumed_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_name = aci_contract.example.name +} + +data "aci_relation_to_consumed_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_name = aci_contract.example.name +} diff --git a/examples/data-sources/aci_relation_to_consumed_contract/provider.tf b/examples/data-sources/aci_relation_to_consumed_contract/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/data-sources/aci_relation_to_consumed_contract/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/data-sources/aci_relation_to_consumed_contract_interface/data-source.tf b/examples/data-sources/aci_relation_to_consumed_contract_interface/data-source.tf new file mode 100644 index 000000000..e585ff575 --- /dev/null +++ b/examples/data-sources/aci_relation_to_consumed_contract_interface/data-source.tf @@ -0,0 +1,10 @@ + +data "aci_relation_to_consumed_contract_interface" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_interface_name = aci_contract_interface.example.name +} + +data "aci_relation_to_consumed_contract_interface" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_interface_name = aci_contract_interface.example.name +} diff --git a/examples/data-sources/aci_relation_to_consumed_contract_interface/provider.tf b/examples/data-sources/aci_relation_to_consumed_contract_interface/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/data-sources/aci_relation_to_consumed_contract_interface/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/data-sources/aci_relation_to_contract_master/data-source.tf b/examples/data-sources/aci_relation_to_contract_master/data-source.tf new file mode 100644 index 000000000..54d0e40c6 --- /dev/null +++ b/examples/data-sources/aci_relation_to_contract_master/data-source.tf @@ -0,0 +1,10 @@ + +data "aci_relation_to_contract_master" "example_application_epg" { + parent_dn = aci_application_epg.example.id + target_dn = aci_endpoint_security_group.example.id +} + +data "aci_relation_to_contract_master" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + target_dn = aci_endpoint_security_group.example.id +} diff --git a/examples/data-sources/aci_relation_to_contract_master/provider.tf b/examples/data-sources/aci_relation_to_contract_master/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/data-sources/aci_relation_to_contract_master/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/data-sources/aci_relation_to_fallback_route_group/data-source.tf b/examples/data-sources/aci_relation_to_fallback_route_group/data-source.tf index 147b177a0..bb54d27ed 100644 --- a/examples/data-sources/aci_relation_to_fallback_route_group/data-source.tf +++ b/examples/data-sources/aci_relation_to_fallback_route_group/data-source.tf @@ -1,5 +1,5 @@ data "aci_relation_to_fallback_route_group" "example_l3_outside" { parent_dn = aci_l3_outside.example.id - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.example.id } diff --git a/examples/data-sources/aci_relation_to_intra_epg_contract/data-source.tf b/examples/data-sources/aci_relation_to_intra_epg_contract/data-source.tf new file mode 100644 index 000000000..5f68b8bb6 --- /dev/null +++ b/examples/data-sources/aci_relation_to_intra_epg_contract/data-source.tf @@ -0,0 +1,10 @@ + +data "aci_relation_to_intra_epg_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_name = aci_contract.example.name +} + +data "aci_relation_to_intra_epg_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_name = aci_contract.example.name +} diff --git a/examples/data-sources/aci_relation_to_intra_epg_contract/provider.tf b/examples/data-sources/aci_relation_to_intra_epg_contract/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/data-sources/aci_relation_to_intra_epg_contract/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/data-sources/aci_relation_to_provided_contract/data-source.tf b/examples/data-sources/aci_relation_to_provided_contract/data-source.tf new file mode 100644 index 000000000..3d1435998 --- /dev/null +++ b/examples/data-sources/aci_relation_to_provided_contract/data-source.tf @@ -0,0 +1,10 @@ + +data "aci_relation_to_provided_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_name = aci_contract.example.name +} + +data "aci_relation_to_provided_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_name = aci_contract.example.name +} diff --git a/examples/data-sources/aci_relation_to_provided_contract/provider.tf b/examples/data-sources/aci_relation_to_provided_contract/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/data-sources/aci_relation_to_provided_contract/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/data-sources/aci_relation_to_taboo_contract/data-source.tf b/examples/data-sources/aci_relation_to_taboo_contract/data-source.tf new file mode 100644 index 000000000..d3f67ab55 --- /dev/null +++ b/examples/data-sources/aci_relation_to_taboo_contract/data-source.tf @@ -0,0 +1,5 @@ + +data "aci_relation_to_taboo_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + taboo_contract_name = aci_taboo_contract.example.name +} diff --git a/examples/data-sources/aci_relation_to_taboo_contract/provider.tf b/examples/data-sources/aci_relation_to_taboo_contract/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/data-sources/aci_relation_to_taboo_contract/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/resources/aci_endpoint_security_group/provider.tf b/examples/resources/aci_endpoint_security_group/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/resources/aci_endpoint_security_group/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/resources/aci_endpoint_security_group/resource-all-attributes.tf b/examples/resources/aci_endpoint_security_group/resource-all-attributes.tf new file mode 100644 index 000000000..99eb159d6 --- /dev/null +++ b/examples/resources/aci_endpoint_security_group/resource-all-attributes.tf @@ -0,0 +1,65 @@ + +resource "aci_endpoint_security_group" "full_example_application_profile" { + parent_dn = aci_application_profile.example.id + annotation = "annotation" + description = "description" + exception_tag = "exception_tag" + match_criteria = "All" + name = "test_name" + name_alias = "name_alias" + intra_esg_isolation = "enforced" + preferred_group_member = "exclude" + admin_state = "no" + relation_to_consumed_contracts = [ + { + annotation = "annotation_1" + priority = "level1" + contract_name = aci_contract.example.name + } + ] + relation_to_consumed_contract_interfaces = [ + { + annotation = "annotation_1" + priority = "level1" + contract_interface_name = aci_contract_interface.example.name + } + ] + relation_to_intra_epg_contracts = [ + { + annotation = "annotation_1" + contract_name = aci_contract.example.name + } + ] + relation_to_provided_contracts = [ + { + annotation = "annotation_1" + match_criteria = "All" + priority = "level1" + contract_name = aci_contract.example.name + } + ] + relation_to_vrf = [ + { + annotation = "annotation_1" + vrf_name = aci_vrf.example.name + } + ] + relation_to_contract_masters = [ + { + annotation = "annotation_1" + target_dn = "target_dn_0" + } + ] + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} diff --git a/examples/resources/aci_endpoint_security_group/resource.tf b/examples/resources/aci_endpoint_security_group/resource.tf new file mode 100644 index 000000000..3f2a53f5b --- /dev/null +++ b/examples/resources/aci_endpoint_security_group/resource.tf @@ -0,0 +1,5 @@ + +resource "aci_endpoint_security_group" "example_application_profile" { + parent_dn = aci_application_profile.example.id + name = "test_name" +} diff --git a/examples/resources/aci_out_of_band_contract/resource-all-attributes.tf b/examples/resources/aci_out_of_band_contract/resource-all-attributes.tf index 293499941..f84fa1fbc 100644 --- a/examples/resources/aci_out_of_band_contract/resource-all-attributes.tf +++ b/examples/resources/aci_out_of_band_contract/resource-all-attributes.tf @@ -2,7 +2,6 @@ resource "aci_out_of_band_contract" "full_example" { annotation = "annotation" description = "description" - intent = "estimate_add" name = "test_name" name_alias = "name_alias" owner_key = "owner_key" diff --git a/examples/resources/aci_relation_to_consumed_contract/provider.tf b/examples/resources/aci_relation_to_consumed_contract/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/resources/aci_relation_to_consumed_contract/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/resources/aci_relation_to_consumed_contract/resource-all-attributes.tf b/examples/resources/aci_relation_to_consumed_contract/resource-all-attributes.tf new file mode 100644 index 000000000..31e99c329 --- /dev/null +++ b/examples/resources/aci_relation_to_consumed_contract/resource-all-attributes.tf @@ -0,0 +1,38 @@ + +resource "aci_relation_to_consumed_contract" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + priority = "level1" + contract_name = aci_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +resource "aci_relation_to_consumed_contract" "full_example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + annotation = "annotation" + priority = "level1" + contract_name = aci_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} diff --git a/examples/resources/aci_relation_to_consumed_contract/resource.tf b/examples/resources/aci_relation_to_consumed_contract/resource.tf new file mode 100644 index 000000000..8bc891d2f --- /dev/null +++ b/examples/resources/aci_relation_to_consumed_contract/resource.tf @@ -0,0 +1,10 @@ + +resource "aci_relation_to_consumed_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_name = aci_contract.example.name +} + +resource "aci_relation_to_consumed_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_name = aci_contract.example.name +} diff --git a/examples/resources/aci_relation_to_consumed_contract_interface/provider.tf b/examples/resources/aci_relation_to_consumed_contract_interface/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/resources/aci_relation_to_consumed_contract_interface/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/resources/aci_relation_to_consumed_contract_interface/resource-all-attributes.tf b/examples/resources/aci_relation_to_consumed_contract_interface/resource-all-attributes.tf new file mode 100644 index 000000000..0846c8666 --- /dev/null +++ b/examples/resources/aci_relation_to_consumed_contract_interface/resource-all-attributes.tf @@ -0,0 +1,38 @@ + +resource "aci_relation_to_consumed_contract_interface" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + priority = "level1" + contract_interface_name = aci_contract_interface.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +resource "aci_relation_to_consumed_contract_interface" "full_example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + annotation = "annotation" + priority = "level1" + contract_interface_name = aci_contract_interface.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} diff --git a/examples/resources/aci_relation_to_consumed_contract_interface/resource.tf b/examples/resources/aci_relation_to_consumed_contract_interface/resource.tf new file mode 100644 index 000000000..3cf684b98 --- /dev/null +++ b/examples/resources/aci_relation_to_consumed_contract_interface/resource.tf @@ -0,0 +1,10 @@ + +resource "aci_relation_to_consumed_contract_interface" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_interface_name = aci_contract_interface.example.name +} + +resource "aci_relation_to_consumed_contract_interface" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_interface_name = aci_contract_interface.example.name +} diff --git a/examples/resources/aci_relation_to_contract_master/provider.tf b/examples/resources/aci_relation_to_contract_master/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/resources/aci_relation_to_contract_master/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/resources/aci_relation_to_contract_master/resource-all-attributes.tf b/examples/resources/aci_relation_to_contract_master/resource-all-attributes.tf new file mode 100644 index 000000000..f1b2bd5bf --- /dev/null +++ b/examples/resources/aci_relation_to_contract_master/resource-all-attributes.tf @@ -0,0 +1,36 @@ + +resource "aci_relation_to_contract_master" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + target_dn = aci_endpoint_security_group.example.id + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +resource "aci_relation_to_contract_master" "full_example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + annotation = "annotation" + target_dn = aci_endpoint_security_group.example.id + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} diff --git a/examples/resources/aci_relation_to_contract_master/resource.tf b/examples/resources/aci_relation_to_contract_master/resource.tf new file mode 100644 index 000000000..2f50f1d54 --- /dev/null +++ b/examples/resources/aci_relation_to_contract_master/resource.tf @@ -0,0 +1,10 @@ + +resource "aci_relation_to_contract_master" "example_application_epg" { + parent_dn = aci_application_epg.example.id + target_dn = aci_endpoint_security_group.example.id +} + +resource "aci_relation_to_contract_master" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + target_dn = aci_endpoint_security_group.example.id +} diff --git a/examples/resources/aci_relation_to_fallback_route_group/resource-all-attributes.tf b/examples/resources/aci_relation_to_fallback_route_group/resource-all-attributes.tf index 34cbde73b..089a6eafb 100644 --- a/examples/resources/aci_relation_to_fallback_route_group/resource-all-attributes.tf +++ b/examples/resources/aci_relation_to_fallback_route_group/resource-all-attributes.tf @@ -2,7 +2,7 @@ resource "aci_relation_to_fallback_route_group" "full_example_l3_outside" { parent_dn = aci_l3_outside.example.id annotation = "annotation" - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.example.id annotations = [ { key = "key_0" diff --git a/examples/resources/aci_relation_to_fallback_route_group/resource.tf b/examples/resources/aci_relation_to_fallback_route_group/resource.tf index 7649dd8fd..b0e9b0871 100644 --- a/examples/resources/aci_relation_to_fallback_route_group/resource.tf +++ b/examples/resources/aci_relation_to_fallback_route_group/resource.tf @@ -1,5 +1,5 @@ resource "aci_relation_to_fallback_route_group" "example_l3_outside" { parent_dn = aci_l3_outside.example.id - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.example.id } diff --git a/examples/resources/aci_relation_to_intra_epg_contract/provider.tf b/examples/resources/aci_relation_to_intra_epg_contract/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/resources/aci_relation_to_intra_epg_contract/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/resources/aci_relation_to_intra_epg_contract/resource-all-attributes.tf b/examples/resources/aci_relation_to_intra_epg_contract/resource-all-attributes.tf new file mode 100644 index 000000000..bc6161c18 --- /dev/null +++ b/examples/resources/aci_relation_to_intra_epg_contract/resource-all-attributes.tf @@ -0,0 +1,36 @@ + +resource "aci_relation_to_intra_epg_contract" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + contract_name = aci_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +resource "aci_relation_to_intra_epg_contract" "full_example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + annotation = "annotation" + contract_name = aci_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} diff --git a/examples/resources/aci_relation_to_intra_epg_contract/resource.tf b/examples/resources/aci_relation_to_intra_epg_contract/resource.tf new file mode 100644 index 000000000..cef4e5b71 --- /dev/null +++ b/examples/resources/aci_relation_to_intra_epg_contract/resource.tf @@ -0,0 +1,10 @@ + +resource "aci_relation_to_intra_epg_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_name = aci_contract.example.name +} + +resource "aci_relation_to_intra_epg_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_name = aci_contract.example.name +} diff --git a/examples/resources/aci_relation_to_provided_contract/provider.tf b/examples/resources/aci_relation_to_provided_contract/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/resources/aci_relation_to_provided_contract/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/resources/aci_relation_to_provided_contract/resource-all-attributes.tf b/examples/resources/aci_relation_to_provided_contract/resource-all-attributes.tf new file mode 100644 index 000000000..bed3f2f79 --- /dev/null +++ b/examples/resources/aci_relation_to_provided_contract/resource-all-attributes.tf @@ -0,0 +1,40 @@ + +resource "aci_relation_to_provided_contract" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + match_criteria = "All" + priority = "level1" + contract_name = aci_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +resource "aci_relation_to_provided_contract" "full_example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + annotation = "annotation" + match_criteria = "All" + priority = "level1" + contract_name = aci_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} diff --git a/examples/resources/aci_relation_to_provided_contract/resource.tf b/examples/resources/aci_relation_to_provided_contract/resource.tf new file mode 100644 index 000000000..d4fba1dba --- /dev/null +++ b/examples/resources/aci_relation_to_provided_contract/resource.tf @@ -0,0 +1,10 @@ + +resource "aci_relation_to_provided_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + contract_name = aci_contract.example.name +} + +resource "aci_relation_to_provided_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + contract_name = aci_contract.example.name +} diff --git a/examples/resources/aci_relation_to_taboo_contract/provider.tf b/examples/resources/aci_relation_to_taboo_contract/provider.tf new file mode 100644 index 000000000..975fca093 --- /dev/null +++ b/examples/resources/aci_relation_to_taboo_contract/provider.tf @@ -0,0 +1,14 @@ +terraform { + required_providers { + aci = { + source = "ciscodevnet/aci" + } + } +} + +provider "aci" { + username = "" + password = "" + url = "" + insecure = true +} \ No newline at end of file diff --git a/examples/resources/aci_relation_to_taboo_contract/resource-all-attributes.tf b/examples/resources/aci_relation_to_taboo_contract/resource-all-attributes.tf new file mode 100644 index 000000000..c6e4e55f0 --- /dev/null +++ b/examples/resources/aci_relation_to_taboo_contract/resource-all-attributes.tf @@ -0,0 +1,18 @@ + +resource "aci_relation_to_taboo_contract" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + taboo_contract_name = aci_taboo_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} diff --git a/examples/resources/aci_relation_to_taboo_contract/resource.tf b/examples/resources/aci_relation_to_taboo_contract/resource.tf new file mode 100644 index 000000000..752f8a0df --- /dev/null +++ b/examples/resources/aci_relation_to_taboo_contract/resource.tf @@ -0,0 +1,5 @@ + +resource "aci_relation_to_taboo_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + taboo_contract_name = aci_taboo_contract.example.name +} diff --git a/gen/definitions/classes.yaml b/gen/definitions/classes.yaml index a28175ee5..90c35f6a8 100644 --- a/gen/definitions/classes.yaml +++ b/gen/definitions/classes.yaml @@ -11,6 +11,9 @@ fvTenant: fvAEPg: resource_name: "application_epg" +fvAp: + resource_name: "application_profile" + fvCtx: resource_name: "vrf" @@ -20,6 +23,7 @@ vzCPIf: rtctrlProfile: resource_name: "route_control_profile" rn_format: "/prof-{name}" + exclude: true vzOOBBrCP: resource_name: "out_of_band_contract" @@ -218,3 +222,138 @@ mplsNodeSidP: - "uni/tn-{name}/out-{name}/lnodep-{name}/rsnodeL3OutAtt-[{tDn}]/lbp-[{addr}]/nodesidp-{sidoffset}" contained_by: - "l3extLoopBackIfP" + +fvESg: + ui_locations: + - "Tenants -> Application Profiles -> Endpoint Security Groups" + sub_category: "Application Management" + exclude_children: + - "fvRsProtBy" + migration_version: 1 + migration_blocks: + fvESg: + application_profile_dn: parent_dn + match_t: match_criteria + pc_enf_pref: intra_esg_isolation + pref_gr_memb: preferred_group_member + fvRsScope: + relation_fv_rs_scope: relation_to_vrf.vrf_name + fvRsIntraEpg: + relation_fv_rs_intra_epg: relation_to_intra_epg_contracts.contract_name + fvRsSecInherited: + relation_fv_rs_sec_inherited: relation_to_contract_masters.target_dn + fvRsCons: + relation_fv_rs_cons: relation_to_consumed_contracts + prio: relation_to_consumed_contracts.priority + target_dn: relation_to_consumed_contracts.contract_name + fvRsConsIf: + relation_fv_rs_cons_if: relation_to_consumed_contract_interfaces + prio: relation_to_consumed_contract_interfaces.priority + target_dn: relation_to_consumed_contract_interfaces.contract_interface_name + fvRsProv: + relation_fv_rs_prov: relation_to_provided_contracts + prio: relation_to_provided_contracts.priority + match_t: relation_to_provided_contracts.match_criteria + target_dn: relation_to_provided_contracts.contract_name + +fvRsScope: + resource_name: "relation_to_vrf" + +fvRsCons: + resource_name: "relation_to_consumed_contract" + example_classes: + - "fvAEPg" + - "fvESg" + dn_formats: + - "... add all relevant DNs ..." + - "uni/tn-{name}/ap-{name}/epg-{name}/rscons-{tnVzBrCPName}" + - "uni/tn-{name}/ap-{name}/esg-{name}/rscons-{tnVzBrCPName}" + - "Too many DN formats to display, see model documentation for all possible parents of [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)." + ui_locations: + - "Tenants -> Application Profiles -> Application EPGs -> Contracts" + - "Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts" + - "... add all locations ..." + sub_category: "Application Management" + +fvRsProv: + resource_name: "relation_to_provided_contract" + example_classes: + - "fvAEPg" + - "fvESg" + dn_formats: + - "... add all relevant DNs ..." + - "uni/tn-{name}/ap-{name}/epg-{name}/rsprov-{tnVzBrCPName}" + - "uni/tn-{name}/ap-{name}/esg-{name}/rsprov-{tnVzBrCPName}" + - "Too many DN formats to display, see model documentation for all possible parents of [fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)." + ui_locations: + - "Tenants -> Application Profiles -> Application EPGs -> Contracts" + - "Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts" + - "... add all locations ..." + sub_category: "Application Management" + +fvRsConsIf: + resource_name: "relation_to_consumed_contract_interface" + example_classes: + - "fvAEPg" + - "fvESg" + dn_formats: + - "... add all relevant DNs ..." + - "uni/tn-{name}/ap-{name}/epg-{name}/rsconsIf-{tnVzCPIfName}" + - "uni/tn-{name}/ap-{name}/esg-{name}/rsconsIf-{tnVzCPIfName}" + - "Too many DN formats to display, see model documentation for all possible parents of [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)." + ui_locations: + - "Tenants -> Application Profiles -> Application EPGs -> Contracts" + - "Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts" + - "... add all locations ..." + sub_category: "Application Management" + +fvRsProtBy: + resource_name: "relation_to_taboo_contract" + example_classes: + - "fvAEPg" + dn_formats: + - "... add all relevant DNs ..." + - "uni/tn-{name}/ap-{name}/epg-{name}/rsprotBy-{tnVzTabooName}" + - "Too many DN formats to display, see model documentation for all possible parents of [fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview)." + ui_locations: + - "Tenants -> Application Profiles -> Application EPGs -> Contracts" + - "... add all locations ..." + sub_category: "Application Management" + +fvRsIntraEpg: + resource_name: "relation_to_intra_epg_contract" + example_classes: + - "fvAEPg" + - "fvESg" + dn_formats: + - "... add all relevant DNs ..." + - "uni/tn-{name}/ap-{name}/epg-{name}/rsintraEpg-{tnVzBrCPName}" + - "uni/tn-{name}/ap-{name}/esg-{name}/rsintraEpg-{tnVzBrCPName}" + - "Too many DN formats to display, see model documentation for all possible parents of [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)." + ui_locations: + - "Tenants -> Application Profiles -> Application EPGs -> Contracts" + - "Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts" + - "... add all locations ..." + sub_category: "Application Management" + +fvRsSecInherited: + resource_name: "relation_to_contract_master" + example_classes: + - "fvAEPg" + - "fvESg" + dn_formats: + - "... add all relevant DNs ..." + - "uni/tn-{name}/ap-{name}/epg-{name}/rssecInherited-[{tDn}]" + - "uni/tn-{name}/ap-{name}/esg-{name}/rssecInherited-[{tDn}]" + - "Too many DN formats to display, see model documentation for all possible parents of [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)." + ui_locations: + - "Tenants -> Application Profiles -> Application EPGs" + - "Tenants -> Application Profiles -> Endpoint Security Groups" + - "... add all locations ..." + sub_category: "Application Management" + +vzBrCP: + resource_name: "contract" + +vzTaboo: + resource_name: "taboo_contract" diff --git a/gen/definitions/properties.yaml b/gen/definitions/properties.yaml index 7f582469f..be0c3b8b7 100644 --- a/gen/definitions/properties.yaml +++ b/gen/definitions/properties.yaml @@ -19,12 +19,15 @@ global: ctx_name: "vrf_name" id: "id_attribute" # id is a terraform reserved schema entry and needed in struct prio: "priority" + match_t: "match_criteria" descr: "description" + resource_name_doc_overwrite: Vrf: VRF Sid: "SR-MPLS Segment ID" ignores: - "userdom" + - "intent" l3extRsRedistributePol: overwrites: @@ -50,7 +53,6 @@ vzOOBBrCP: documentation: prio: "The priority of the %s object." targetDscp: "The target DSCP value of the %s object." - intent: "The Install Rules or Estimate Number of Rules" mgmtSubnet: test_values: @@ -190,29 +192,23 @@ fvFBRMember: - class_name: "fvFBRGroup" parent_dependency: "fvCtx" parent_dn: "aci_vrf_fallback_route_group.test.id" - class_in_parent: false l3extRsOutToFBRGroup: documentation: tDn: "The distinguished name of the VRF Fallback Route Group object." - test_values: - resource_required: - target_dn: aci_vrf_fallback_route_group.test.id - datasource_required: - target_dn: aci_vrf_fallback_route_group.test.id - datasource_non_existing: - target_dn: aci_vrf_fallback_route_group.test.id parents: - class_name: "l3extOut" parent_dependency: "fvTenant" parent_dn: "aci_l3_outside.test.id" - class_in_parent: false + target_classes: + - "fvFBRGroup" targets: - class_name: "fvFBRGroup" parent_dependency: "fvCtx" - parent_dependency_dn: "aci_vrf.test.id" - parent_dn: "aci_vrf_fallback_route_group.test.id" - target_dn: "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group" + target_dn: "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group_0" + relation_resource_name: "fallback_route_group" + properties: + name: "fallback_route_group_0" l3extProvLbl: test_values: @@ -233,7 +229,6 @@ l3extProvLbl: parent_dependency: "fvTenant" parent_dependency_name: "infra" parent_dn: "aci_l3_outside.test.id" - class_in_parent: false netflowMonitorPol: default_values: @@ -327,3 +322,100 @@ netflowRecordPol: - class_name: "fvTenant" parent_dependency: "" parent_dn: "aci_tenant.test.id" + +fvESg: + default_values: + shutdown: "no" + overwrites: + pref_gr_memb: "preferred_group_member" + pc_enf_pref: "intra_esg_isolation" + shutdown: "admin_state" + parents: + - class_name: "fvAp" + parent_dependency: "fvTenant" + ignores: + - "floodOnEncap" + - "prio" + +fvRsScope: + parents: + - class_name: "fvESg" + parent_dependency: "fvAp" + - class_name: "fvAEPg" + parent_dependency: "fvAp" + +fvRsCons: + parents: + - class_name: "fvESg" + parent_dependency: "fvAp" + - class_name: "fvAEPg" + parent_dependency: "fvAp" + +fvRsProv: + parents: + - class_name: "fvESg" + parent_dependency: "fvAp" + - class_name: "fvAEPg" + parent_dependency: "fvAp" + +fvRsConsIf: + parents: + - class_name: "fvESg" + parent_dependency: "fvAp" + - class_name: "fvAEPg" + parent_dependency: "fvAp" + +fvRsProtBy: + parents: + - class_name: "fvESg" + parent_dependency: "fvAp" + - class_name: "fvAEPg" + parent_dependency: "fvAp" + +fvRsIntraEpg: + parents: + - class_name: "fvESg" + parent_dependency: "fvAp" + - class_name: "fvAEPg" + parent_dependency: "fvAp" + +fvRsSecInherited: + parents: + - class_name: "fvAEPg" + parent_dependency: "fvAp" + target_classes: + - "fvAEPg" + - class_name: "fvESg" + parent_dependency: "fvAp" + target_classes: + - "fvESg" + + targets: + - class_name: "fvESg" + parent_dependency: "fvAp" + overwrite_parent_dn_key: "application_profile_dn" + target_dn: "uni/tn-test_tenant/ap-test_ap/esg-esg_0" + relation_resource_name: "contract_master" + properties: + name: "esg_0" + - class_name: "fvESg" + parent_dependency: "fvAp" + overwrite_parent_dn_key: "application_profile_dn" + target_dn: "uni/tn-test_tenant/ap-test_ap/esg-esg_1" + relation_resource_name: "contract_master" + properties: + name: "esg_1" + - class_name: "fvAEPg" + parent_dependency: "fvAp" + overwrite_parent_dn_key: "application_profile_dn" + target_dn: "uni/tn-test_tenant/ap-test_ap/epg-epg_2" + relation_resource_name: "contract_master" + properties: + name: "epg_2" + - class_name: "fvAEPg" + parent_dependency: "fvAp" + overwrite_parent_dn_key: "application_profile_dn" + target_dn: "uni/tn-test_tenant/ap-test_ap/epg-epg_3" + relation_resource_name: "contract_master" + properties: + name: "epg_3" diff --git a/gen/generator.go b/gen/generator.go index e738ce9d1..6130f83ec 100644 --- a/gen/generator.go +++ b/gen/generator.go @@ -89,7 +89,7 @@ var templateFuncs = template.FuncMap{ "createTestValue": func(val string) string { return fmt.Sprintf("test_%s", val) }, "createNonExistingValue": func(val string) string { return fmt.Sprintf("non_existing_%s", val) }, "getParentTestDependencies": GetParentTestDependencies, - "getTargetTestDependencies": GetTargetTestDependencies, + "getTestTargetDn": GetTestTargetDn, "getDefaultValues": GetDefaultValues, "fromInterfacesToString": FromInterfacesToString, "containsNoneAttributeValue": ContainsNoneAttributeValue, @@ -98,6 +98,7 @@ var templateFuncs = template.FuncMap{ "add": func(val1, val2 int) int { return val1 + val2 }, "substract": func(val1, val2 int) int { return val1 - val2 }, "isInterfaceSlice": IsInterfaceSlice, + "replace": Replace, "lookupTestValue": LookupTestValue, "lookupChildTestValue": LookupChildTestValue, "createParentDnValue": CreateParentDnValue, @@ -119,6 +120,10 @@ var templateFuncs = template.FuncMap{ "getNewChildAttributes": GetNewChildAttributes, } +func Replace(oldValue, newValue, inputString string) string { + return strings.Replace(inputString, oldValue, newValue, -1) +} + func GetMigrationType(valueType []string) string { if len(valueType) == 2 && valueType[0] == "set" && valueType[1] == "string" { return "Set" @@ -315,6 +320,19 @@ func LookupTestValue(classPkgName, propertyName string, testVars map[string]inte lookupValue = val.(string) } } + + if propertyName == "target_dn" { + targetResourceName := strings.TrimPrefix(GetResourceName(classPkgName, definitions), "relation_to_") + targets, ok := testVars["targets"].([]interface{}) + if ok { + for _, target := range targets { + if targetResourceName == target.(map[interface{}]interface{})["relation_resource_name"].(string) { + return target.(map[interface{}]interface{})["target_dn_ref"].(string) + } + } + } + } + return lookupValue } @@ -322,6 +340,7 @@ func LookupTestValue(classPkgName, propertyName string, testVars map[string]inte // Returns "test_value_for_child" if no value is defined in the testVars YAML file func LookupChildTestValue(classPkgName, childResourceName, propertyName string, testVars map[string]interface{}, testValueIndex int, definitions Definitions) interface{} { propertyName = GetOverwriteAttributeName(classPkgName, propertyName, definitions) + overwritePropertyValue := GetOverwriteAttributeValue(classPkgName, propertyName, "", "test_values_for_parent", testValueIndex, definitions) if overwritePropertyValue != "" { return overwritePropertyValue @@ -446,20 +465,6 @@ func getTestVars(model Model) (map[string]interface{}, error) { // Adds the resource name and resource class name to the testVars map to be used in test template rendering testVarsMap["resourceName"] = model.ResourceName testVarsMap["resourceClassName"] = model.ResourceClassName - testVarsMap["targetResourceName"] = model.TargetResourceName - testVarsMap["targetResourceClassName"] = model.TargetResourceClassName - testVarsMap["targetResourceParentClassName"] = "" - testVarsMap["targetDn"] = model.TargetDn - targets, targetsOk := testVarsMap["targets"] - if targetsOk && targets != nil { - if targets.([]interface{})[0].(map[interface{}]interface{})["parent_dependency"] != nil { - testVarsMap["targetResourceParentClassName"] = targets.([]interface{})[0].(map[interface{}]interface{})["parent_dependency"].(string) - } - - if targets.([]interface{})[0].(map[interface{}]interface{})["target_dn"] != "" { - testVarsMap["targetDn"] = targets.([]interface{})[0].(map[interface{}]interface{})["target_dn"].(string) - } - } return testVarsMap, nil } @@ -722,7 +727,7 @@ func main() { // Render the testvars file for the resource // First generate run would not mean the file is correct from beginning since some testvars would need to be manually overwritten in the properties definitions YAML file - SetModelTargetValues(model.PkgName, &model, classModels, definitions) + model.SetModelTestDependencies(classModels, definitions) renderTemplate("testvars.yaml.tmpl", fmt.Sprintf("%s.yaml", model.PkgName), testVarsPath, model) testVarsMap, err := getTestVars(model) if err != nil { @@ -798,11 +803,8 @@ type Model struct { DocumentationDnFormats []string DocumentationParentDns []string DocumentationExamples []string - TargetResourceClassName string - TargetResourceName string - TargetDn string - TargetProperties map[string]Property - TargetNamedProperties map[string]Property + TestDependencies []TestDependency + ChildTestDependencies []TestDependency DocumentationChildren []string ResourceNotes []string ResourceWarnings []string @@ -841,6 +843,18 @@ type Model struct { Include bool } +type TestDependency struct { + ClassName string + ParentDependency string + ParentDependencyDnRef string + ParentDnKey string + TargetDn string + TargetDnRef string + TargetResourceName string + RelationResourceName string + Properties map[string]string +} + type LegacyBlock struct { Name string NestingMode string @@ -1060,12 +1074,25 @@ func (m *Model) SetClassIdentifiers(classDetails interface{}) { func (m *Model) SetClassChildren(classDetails interface{}, pkgNames []string) { childClasses := []string{} + excludeChildClasses := []string{} + if classDetails, ok := m.Definitions.Classes[m.PkgName]; ok { + for key, value := range classDetails.(map[interface{}]interface{}) { + if key.(string) == "exclude_children" { + for _, child := range value.([]interface{}) { + if !slices.Contains(childClasses, child.(string)) { + excludeChildClasses = append(childClasses, child.(string)) + } + } + } + } + } + rnMap := classDetails.(map[string]interface{})["rnMap"].(map[string]interface{}) for rn, className := range rnMap { // TODO check if this condition is correct since there might be cases where that we should exclude if !strings.HasSuffix(rn, "-") || strings.HasPrefix(rn, "rs") || slices.Contains(alwaysIncludeChildren, className.(string)) { pkgName := strings.ReplaceAll(className.(string), ":", "") - if slices.Contains(pkgNames, pkgName) { + if slices.Contains(pkgNames, pkgName) && !slices.Contains(excludeChildClasses, pkgName) { childClasses = append(childClasses, pkgName) } } @@ -1677,76 +1704,6 @@ func GetOverwriteAttributeValue(classPkgName, propertyName, propertyValue, testT return propertyValue } -func GetParentTestDependencies(classPkgName string, index int, definitions Definitions) map[string]interface{} { - parentDependency := "" - classInParent := false - parentDependencyName := "" - if classDetails, ok := definitions.Properties[classPkgName]; ok { - for key, value := range classDetails.(map[interface{}]interface{}) { - if key.(string) == "parents" { - if len(value.([]interface{})) > index { - parentMap := value.([]interface{})[index].(map[interface{}]interface{}) - if pd, ok := parentMap["parent_dependency"]; ok { - parentDependency = pd.(string) - } - if cip, ok := parentMap["class_in_parent"]; ok { - classInParent = cip.(bool) - } - if pdn, ok := parentMap["parent_dependency_name"]; ok { - parentDependencyName = pdn.(string) - } - } - } - } - } - return map[string]interface{}{"parent_dependency": parentDependency, "class_in_parent": classInParent, "parent_dependency_name": parentDependencyName} -} - -func GetTargetTestDependencies(classPkgName string, index int, definitions Definitions) map[string]interface{} { - parentDependency := "" - grandParentDependency := "" - parentDependencyDn := "" - targetDn := "" - parentClassName := "" - if classDetails, ok := definitions.Properties[classPkgName]; ok { - for key, value := range classDetails.(map[interface{}]interface{}) { - if key.(string) == "targets" { - if len(value.([]interface{})) > index { - targetMap := value.([]interface{})[index].(map[interface{}]interface{}) - - if pd, ok := targetMap["parent_dependency"]; ok { - parentDependency = pd.(string) - } - - if gpd, ok := targetMap["grandparent_class_name"]; ok { - grandParentDependency = gpd.(string) - } - - if pd_dn, ok := targetMap["parent_dependency_dn"]; ok { - parentDependencyDn = pd_dn.(string) - } - - if doc_dn, ok := targetMap["target_dn"]; ok { - targetDn = doc_dn.(string) - } - - if pcn, ok := targetMap["class_name"]; ok { - parentClassName = pcn.(string) - } - } - } - } - } - - return map[string]interface{}{ - "parent_dependency": parentDependency, - "parent_dependency_dn": parentDependencyDn, - "grandparent_class_name": grandParentDependency, - "target_dn": targetDn, - "parent_class_name": parentClassName, - } -} - // Determine if possible parent classes in terraform configuration should be overwritten by contained_by from the classes.yaml file func GetOverwriteContainedBy(classDetails interface{}, classPkgName string, definitions Definitions) map[string]interface{} { containedBy := make(map[string]interface{}) @@ -1812,14 +1769,145 @@ func GetOverwriteExampleClasses(classPkgName string, definitions Definitions) [] return overwriteExampleClasses } -func SetModelTargetValues(PkgName string, model *Model, classModels map[string]Model, definitions Definitions) { - targetTestDependencies := GetTargetTestDependencies(model.PkgName, 0, definitions) - parentClassName := targetTestDependencies["parent_class_name"].(string) - model.TargetProperties = classModels[parentClassName].Properties - model.TargetNamedProperties = classModels[parentClassName].NamedProperties - model.TargetResourceClassName = classModels[parentClassName].PkgName - model.TargetDn = targetTestDependencies["target_dn"].(string) - model.TargetResourceName = GetResourceName(model.TargetResourceClassName, definitions) +func GetParentTestDependencies(classPkgName string, index int, definitions Definitions) map[string]interface{} { + parentDependency := "" + classInParent := false + parentDependencyName := "" + targetClasses := []string{} + + if classDetails, ok := definitions.Properties[classPkgName]; ok { + for key, value := range classDetails.(map[interface{}]interface{}) { + if key.(string) == "parents" { + if len(value.([]interface{})) > index { + parentMap := value.([]interface{})[index].(map[interface{}]interface{}) + if pd, ok := parentMap["parent_dependency"]; ok { + parentDependency = pd.(string) + } + if cip, ok := parentMap["class_in_parent"]; ok { + classInParent = cip.(bool) + } + if pdn, ok := parentMap["parent_dependency_name"]; ok { + parentDependencyName = pdn.(string) + } + if tc, ok := parentMap["target_classes"]; ok { + results := []string{} + for _, targetClass := range tc.([]interface{}) { + results = append(results, targetClass.(string)) + } + sort.Strings(results) + targetClasses = results + } + } + } + } + } + return map[string]interface{}{"parent_dependency": parentDependency, "class_in_parent": classInParent, "parent_dependency_name": parentDependencyName, "target_classes": targetClasses} +} + +func (m *Model) SetModelTestDependencies(classModels map[string]Model, definitions Definitions) { + + testDependencies := []TestDependency{} + if classDetails, ok := definitions.Properties[m.PkgName]; ok { + for key, value := range classDetails.(map[interface{}]interface{}) { + if key.(string) == "targets" { + for index, v := range value.([]interface{}) { + targetMap := v.(map[interface{}]interface{}) + if className, ok := targetMap["class_name"]; ok { + testDependencies = append(testDependencies, getTestDependency(className.(string), targetMap, definitions, index)) + } + } + } + } + } + + childTestDependencies := []TestDependency{} + for _, child := range m.ChildClasses { + if classDetails, ok := definitions.Properties[child]; ok { + for key, value := range classDetails.(map[interface{}]interface{}) { + if key.(string) == "targets" { + for index, v := range value.([]interface{}) { + targetMap := v.(map[interface{}]interface{}) + if className, ok := targetMap["class_name"]; ok && className.(string) == m.PkgName { + childTestDependencies = append(childTestDependencies, getTestDependency(className.(string), targetMap, definitions, index)) + } + } + } + } + } + } + + m.TestDependencies = testDependencies + m.ChildTestDependencies = childTestDependencies + +} + +func getTestDependency(className string, targetMap map[interface{}]interface{}, definitions Definitions, index int) TestDependency { + + testDependency := TestDependency{} + testDependency.ClassName = className + testDependency.TargetResourceName = GetResourceName(className, definitions) + testDependency.RelationResourceName = testDependency.TargetResourceName + testDependency.ParentDnKey = "parent_dn" + + if relationResourceName, ok := targetMap["relation_resource_name"]; ok { + testDependency.RelationResourceName = relationResourceName.(string) + } + + if parentDependency, ok := targetMap["parent_dependency"]; ok { + testDependency.ParentDependency = parentDependency.(string) + testDependency.ParentDependencyDnRef = fmt.Sprintf("%s_%s.test.id", providerName, GetResourceName(parentDependency.(string), definitions)) + } + + if targetDn, ok := targetMap["target_dn"]; ok { + testDependency.TargetDn = targetDn.(string) + testDependency.TargetDnRef = fmt.Sprintf("%s_%s.test_%d.id", providerName, GetResourceName(className, definitions), index) + } + + if properties, ok := targetMap["properties"]; ok { + testDependency.Properties = make(map[string]string) + for name, value := range properties.(map[interface{}]interface{}) { + testDependency.Properties[name.(string)] = value.(string) + } + } + + if overwriteKey, ok := targetMap["overwrite_parent_dn_key"]; ok { + testDependency.ParentDnKey = overwriteKey.(string) + } + + return testDependency +} + +func GetTestTargetDn(targets []interface{}, resourceName, targetDnValue string, reference bool, targetClasses interface{}, index int) string { + + var filteredTargets []interface{} + targetResourceName := strings.TrimPrefix(resourceName, "relation_to_") + + if targetClasses != nil { + // CHANGE logic here when allowing for multiple target classes in single resource + targetClass := targetClasses.([]interface{})[0].(string) + for _, target := range targets { + if targetClass == target.(map[interface{}]interface{})["class_name"].(string) { + filteredTargets = append(filteredTargets, target) + } + } + } else { + filteredTargets = targets + } + + for _, target := range filteredTargets { + targetRelationResourceName := target.(map[interface{}]interface{})["relation_resource_name"].(string) + if targetResourceName == targetRelationResourceName || strings.TrimSuffix(targetResourceName, "s") == targetRelationResourceName { + if index > 0 { + index = index - 1 + } else { + if reference { + return target.(map[interface{}]interface{})["target_dn_ref"].(string) + } + return target.(map[interface{}]interface{})["target_dn"].(string) + } + } + } + return targetDnValue } func (m *Model) GetClassForBlockName(definitions Definitions, blockName string) string { diff --git a/gen/meta/fvESg.json b/gen/meta/fvESg.json new file mode 100644 index 000000000..05a467843 --- /dev/null +++ b/gen/meta/fvESg.json @@ -0,0 +1,3513 @@ +{ + "fv:ESg": { + "contains": { + "aaa:RbacAnnotation": "", + "fault:Counts": "", + "fault:Delegate": "", + "fault:Inst": "", + "fv:CEp": "", + "fv:CtrctCtxDefCont": "", + "fv:EPSelector": "", + "fv:EPgSelector": "", + "fv:FltCounter15min": "", + "fv:FltCounter1d": "", + "fv:FltCounter1h": "", + "fv:FltCounter1mo": "", + "fv:FltCounter1qtr": "", + "fv:FltCounter1w": "", + "fv:FltCounter1year": "", + "fv:FltCounter5min": "", + "fv:FltCounterHist15min": "", + "fv:FltCounterHist1d": "", + "fv:FltCounterHist1h": "", + "fv:FltCounterHist1mo": "", + "fv:FltCounterHist1qtr": "", + "fv:FltCounterHist1w": "", + "fv:FltCounterHist1year": "", + "fv:FltCounterHist5min": "", + "fv:LIfCtxSelector": "", + "fv:OrchsInfo": "", + "fv:RInfoHolder": "", + "fv:RsCons": "", + "fv:RsConsIf": "", + "fv:RsCustQosPol": "", + "fv:RsGraphDef": "", + "fv:RsIntraEpg": "", + "fv:RsProtBy": "", + "fv:RsProv": "", + "fv:RsProvDef": "", + "fv:RsPublishESg": "", + "fv:RsScope": "", + "fv:RsSecInherited": "", + "fv:RtARemoteHostToEpg": "", + "fv:RtChassisEpg": "", + "fv:RtDcProfToEpg": "", + "fv:RtDcToEpg": "", + "fv:RtDestEpg": "", + "fv:RtDevEpg": "", + "fv:RtDevMgrEpg": "", + "fv:RtEpg": "", + "fv:RtExporterToEPg": "", + "fv:RtExtdevMgrMgmtEPg": "", + "fv:RtFromAbsEpg": "", + "fv:RtFromEsg": "", + "fv:RtFuncToEpg": "", + "fv:RtLIfCtxToInstP": "", + "fv:RtMatchEPg": "", + "fv:RtMgmtEPg": "", + "fv:RtNtpProvToEpg": "", + "fv:RtPoeEpg": "", + "fv:RtProfileToEpg": "", + "fv:RtProv": "", + "fv:RtSecInherited": "", + "fv:RtSecProvToEpg": "", + "fv:RtSrcToEpg": "", + "fv:RtSvcMgmtEpg": "", + "fv:RtSvrEpg": "", + "fv:RtSvrToMgmtEPg": "", + "fv:RtTermToEPg": "", + "fv:RtToAbsEpg": "", + "fv:RtToAbsEpgForEpgToEpg": "", + "fv:RtToEsgForEpgToEpg": "", + "fv:RtVConnToEpgEp": "", + "fv:RtVConnToEpgSubnet": "", + "fv:RtVsrcToEpg": "", + "fv:SharedService": "", + "fv:TagSelector": "", + "fv:UpdateContract": "", + "health:Inst": "", + "health:NodeInst": "", + "l2:EgrBytesAg15min": "", + "l2:EgrBytesAg1d": "", + "l2:EgrBytesAg1h": "", + "l2:EgrBytesAg1mo": "", + "l2:EgrBytesAg1qtr": "", + "l2:EgrBytesAg1w": "", + "l2:EgrBytesAg1year": "", + "l2:EgrBytesAgHist15min": "", + "l2:EgrBytesAgHist1d": "", + "l2:EgrBytesAgHist1h": "", + "l2:EgrBytesAgHist1mo": "", + "l2:EgrBytesAgHist1qtr": "", + "l2:EgrBytesAgHist1w": "", + "l2:EgrBytesAgHist1year": "", + "l2:EgrBytesPart15min": "", + "l2:EgrBytesPart1d": "", + "l2:EgrBytesPart1h": "", + "l2:EgrBytesPart1mo": "", + "l2:EgrBytesPart1qtr": "", + "l2:EgrBytesPart1w": "", + "l2:EgrBytesPart1year": "", + "l2:EgrBytesPart5min": "", + "l2:EgrBytesPartHist15min": "", + "l2:EgrBytesPartHist1d": "", + "l2:EgrBytesPartHist1h": "", + "l2:EgrBytesPartHist1mo": "", + "l2:EgrBytesPartHist1qtr": "", + "l2:EgrBytesPartHist1w": "", + "l2:EgrBytesPartHist1year": "", + "l2:EgrBytesPartHist5min": "", + "l2:EgrPktsAg15min": "", + "l2:EgrPktsAg1d": "", + "l2:EgrPktsAg1h": "", + "l2:EgrPktsAg1mo": "", + "l2:EgrPktsAg1qtr": "", + "l2:EgrPktsAg1w": "", + "l2:EgrPktsAg1year": "", + "l2:EgrPktsAgHist15min": "", + "l2:EgrPktsAgHist1d": "", + "l2:EgrPktsAgHist1h": "", + "l2:EgrPktsAgHist1mo": "", + "l2:EgrPktsAgHist1qtr": "", + "l2:EgrPktsAgHist1w": "", + "l2:EgrPktsAgHist1year": "", + "l2:EgrPktsPart15min": "", + "l2:EgrPktsPart1d": "", + "l2:EgrPktsPart1h": "", + "l2:EgrPktsPart1mo": "", + "l2:EgrPktsPart1qtr": "", + "l2:EgrPktsPart1w": "", + "l2:EgrPktsPart1year": "", + "l2:EgrPktsPart5min": "", + "l2:EgrPktsPartHist15min": "", + "l2:EgrPktsPartHist1d": "", + "l2:EgrPktsPartHist1h": "", + "l2:EgrPktsPartHist1mo": "", + "l2:EgrPktsPartHist1qtr": "", + "l2:EgrPktsPartHist1w": "", + "l2:EgrPktsPartHist1year": "", + "l2:EgrPktsPartHist5min": "", + "l2:IngrBytesAg15min": "", + "l2:IngrBytesAg1d": "", + "l2:IngrBytesAg1h": "", + "l2:IngrBytesAg1mo": "", + "l2:IngrBytesAg1qtr": "", + "l2:IngrBytesAg1w": "", + "l2:IngrBytesAg1year": "", + "l2:IngrBytesAgHist15min": "", + "l2:IngrBytesAgHist1d": "", + "l2:IngrBytesAgHist1h": "", + "l2:IngrBytesAgHist1mo": "", + "l2:IngrBytesAgHist1qtr": "", + "l2:IngrBytesAgHist1w": "", + "l2:IngrBytesAgHist1year": "", + "l2:IngrBytesPart15min": "", + "l2:IngrBytesPart1d": "", + "l2:IngrBytesPart1h": "", + "l2:IngrBytesPart1mo": "", + "l2:IngrBytesPart1qtr": "", + "l2:IngrBytesPart1w": "", + "l2:IngrBytesPart1year": "", + "l2:IngrBytesPart5min": "", + "l2:IngrBytesPartHist15min": "", + "l2:IngrBytesPartHist1d": "", + "l2:IngrBytesPartHist1h": "", + "l2:IngrBytesPartHist1mo": "", + "l2:IngrBytesPartHist1qtr": "", + "l2:IngrBytesPartHist1w": "", + "l2:IngrBytesPartHist1year": "", + "l2:IngrBytesPartHist5min": "", + "l2:IngrPktsAg15min": "", + "l2:IngrPktsAg1d": "", + "l2:IngrPktsAg1h": "", + "l2:IngrPktsAg1mo": "", + "l2:IngrPktsAg1qtr": "", + "l2:IngrPktsAg1w": "", + "l2:IngrPktsAg1year": "", + "l2:IngrPktsAgHist15min": "", + "l2:IngrPktsAgHist1d": "", + "l2:IngrPktsAgHist1h": "", + "l2:IngrPktsAgHist1mo": "", + "l2:IngrPktsAgHist1qtr": "", + "l2:IngrPktsAgHist1w": "", + "l2:IngrPktsAgHist1year": "", + "l2:IngrPktsPart15min": "", + "l2:IngrPktsPart1d": "", + "l2:IngrPktsPart1h": "", + "l2:IngrPktsPart1mo": "", + "l2:IngrPktsPart1qtr": "", + "l2:IngrPktsPart1w": "", + "l2:IngrPktsPart1year": "", + "l2:IngrPktsPart5min": "", + "l2:IngrPktsPartHist15min": "", + "l2:IngrPktsPartHist1d": "", + "l2:IngrPktsPartHist1h": "", + "l2:IngrPktsPartHist1mo": "", + "l2:IngrPktsPartHist1qtr": "", + "l2:IngrPktsPartHist1w": "", + "l2:IngrPktsPartHist1year": "", + "l2:IngrPktsPartHist5min": "", + "l3:MplsEgrBytesAg15min": "", + "l3:MplsEgrBytesAg1d": "", + "l3:MplsEgrBytesAg1h": "", + "l3:MplsEgrBytesAg1mo": "", + "l3:MplsEgrBytesAg1qtr": "", + "l3:MplsEgrBytesAg1w": "", + "l3:MplsEgrBytesAg1year": "", + "l3:MplsEgrBytesAgHist15min": "", + "l3:MplsEgrBytesAgHist1d": "", + "l3:MplsEgrBytesAgHist1h": "", + "l3:MplsEgrBytesAgHist1mo": "", + "l3:MplsEgrBytesAgHist1qtr": "", + "l3:MplsEgrBytesAgHist1w": "", + "l3:MplsEgrBytesAgHist1year": "", + "l3:MplsEgrBytesPart15min": "", + "l3:MplsEgrBytesPart1d": "", + "l3:MplsEgrBytesPart1h": "", + "l3:MplsEgrBytesPart1mo": "", + "l3:MplsEgrBytesPart1qtr": "", + "l3:MplsEgrBytesPart1w": "", + "l3:MplsEgrBytesPart1year": "", + "l3:MplsEgrBytesPart5min": "", + "l3:MplsEgrBytesPartHist15min": "", + "l3:MplsEgrBytesPartHist1d": "", + "l3:MplsEgrBytesPartHist1h": "", + "l3:MplsEgrBytesPartHist1mo": "", + "l3:MplsEgrBytesPartHist1qtr": "", + "l3:MplsEgrBytesPartHist1w": "", + "l3:MplsEgrBytesPartHist1year": "", + "l3:MplsEgrBytesPartHist5min": "", + "l3:MplsEgrPktsAg15min": "", + "l3:MplsEgrPktsAg1d": "", + "l3:MplsEgrPktsAg1h": "", + "l3:MplsEgrPktsAg1mo": "", + "l3:MplsEgrPktsAg1qtr": "", + "l3:MplsEgrPktsAg1w": "", + "l3:MplsEgrPktsAg1year": "", + "l3:MplsEgrPktsAgHist15min": "", + "l3:MplsEgrPktsAgHist1d": "", + "l3:MplsEgrPktsAgHist1h": "", + "l3:MplsEgrPktsAgHist1mo": "", + "l3:MplsEgrPktsAgHist1qtr": "", + "l3:MplsEgrPktsAgHist1w": "", + "l3:MplsEgrPktsAgHist1year": "", + "l3:MplsEgrPktsPart15min": "", + "l3:MplsEgrPktsPart1d": "", + "l3:MplsEgrPktsPart1h": "", + "l3:MplsEgrPktsPart1mo": "", + "l3:MplsEgrPktsPart1qtr": "", + "l3:MplsEgrPktsPart1w": "", + "l3:MplsEgrPktsPart1year": "", + "l3:MplsEgrPktsPart5min": "", + "l3:MplsEgrPktsPartHist15min": "", + "l3:MplsEgrPktsPartHist1d": "", + "l3:MplsEgrPktsPartHist1h": "", + "l3:MplsEgrPktsPartHist1mo": "", + "l3:MplsEgrPktsPartHist1qtr": "", + "l3:MplsEgrPktsPartHist1w": "", + "l3:MplsEgrPktsPartHist1year": "", + "l3:MplsEgrPktsPartHist5min": "", + "l3:MplsIngrBytesAg15min": "", + "l3:MplsIngrBytesAg1d": "", + "l3:MplsIngrBytesAg1h": "", + "l3:MplsIngrBytesAg1mo": "", + "l3:MplsIngrBytesAg1qtr": "", + "l3:MplsIngrBytesAg1w": "", + "l3:MplsIngrBytesAg1year": "", + "l3:MplsIngrBytesAgHist15min": "", + "l3:MplsIngrBytesAgHist1d": "", + "l3:MplsIngrBytesAgHist1h": "", + "l3:MplsIngrBytesAgHist1mo": "", + "l3:MplsIngrBytesAgHist1qtr": "", + "l3:MplsIngrBytesAgHist1w": "", + "l3:MplsIngrBytesAgHist1year": "", + "l3:MplsIngrBytesPart15min": "", + "l3:MplsIngrBytesPart1d": "", + "l3:MplsIngrBytesPart1h": "", + "l3:MplsIngrBytesPart1mo": "", + "l3:MplsIngrBytesPart1qtr": "", + "l3:MplsIngrBytesPart1w": "", + "l3:MplsIngrBytesPart1year": "", + "l3:MplsIngrBytesPart5min": "", + "l3:MplsIngrBytesPartHist15min": "", + "l3:MplsIngrBytesPartHist1d": "", + "l3:MplsIngrBytesPartHist1h": "", + "l3:MplsIngrBytesPartHist1mo": "", + "l3:MplsIngrBytesPartHist1qtr": "", + "l3:MplsIngrBytesPartHist1w": "", + "l3:MplsIngrBytesPartHist1year": "", + "l3:MplsIngrBytesPartHist5min": "", + "l3:MplsIngrPktsAg15min": "", + "l3:MplsIngrPktsAg1d": "", + "l3:MplsIngrPktsAg1h": "", + "l3:MplsIngrPktsAg1mo": "", + "l3:MplsIngrPktsAg1qtr": "", + "l3:MplsIngrPktsAg1w": "", + "l3:MplsIngrPktsAg1year": "", + "l3:MplsIngrPktsAgHist15min": "", + "l3:MplsIngrPktsAgHist1d": "", + "l3:MplsIngrPktsAgHist1h": "", + "l3:MplsIngrPktsAgHist1mo": "", + "l3:MplsIngrPktsAgHist1qtr": "", + "l3:MplsIngrPktsAgHist1w": "", + "l3:MplsIngrPktsAgHist1year": "", + "l3:MplsIngrPktsPart15min": "", + "l3:MplsIngrPktsPart1d": "", + "l3:MplsIngrPktsPart1h": "", + "l3:MplsIngrPktsPart1mo": "", + "l3:MplsIngrPktsPart1qtr": "", + "l3:MplsIngrPktsPart1w": "", + "l3:MplsIngrPktsPart1year": "", + "l3:MplsIngrPktsPart5min": "", + "l3:MplsIngrPktsPartHist15min": "", + "l3:MplsIngrPktsPartHist1d": "", + "l3:MplsIngrPktsPartHist1h": "", + "l3:MplsIngrPktsPartHist1mo": "", + "l3:MplsIngrPktsPartHist1qtr": "", + "l3:MplsIngrPktsPartHist1w": "", + "l3:MplsIngrPktsPartHist1year": "", + "l3:MplsIngrPktsPartHist5min": "", + "mdp:ClassId": "", + "orchs:LDevVipCfg": "", + "tag:AliasDelInst": "", + "tag:AliasInst": "", + "tag:Annotation": "", + "tag:ExtMngdInst": "", + "tag:Inst": "", + "tag:Tag": "", + "telemetry:MatchedSelector": "", + "vns:AbsCfgRel": "", + "vns:AbsFolder": "", + "vns:AbsParam": "", + "vns:CFolder": "", + "vns:CParam": "", + "vns:CRel": "", + "vns:CfgRelInst": "", + "vns:FolderInst": "", + "vns:GFolder": "", + "vns:GParam": "", + "vns:GRel": "", + "vns:ParamInst": "", + "vns:SvcPol": "", + "vz:ConsCtrctLbl": "", + "vz:ConsLbl": "", + "vz:ConsSubjLbl": "", + "vz:ProvCtrctLbl": "", + "vz:ProvLbl": "", + "vz:ProvSubjLbl": "" + }, + "rnMap": { + "CDfvFltCounter15min": "fv:FltCounter15min", + "CDfvFltCounter1d": "fv:FltCounter1d", + "CDfvFltCounter1h": "fv:FltCounter1h", + "CDfvFltCounter1mo": "fv:FltCounter1mo", + "CDfvFltCounter1qtr": "fv:FltCounter1qtr", + "CDfvFltCounter1w": "fv:FltCounter1w", + "CDfvFltCounter1year": "fv:FltCounter1year", + "CDfvFltCounter5min": "fv:FltCounter5min", + "CDl2EgrBytesAg15min": "l2:EgrBytesAg15min", + "CDl2EgrBytesAg1d": "l2:EgrBytesAg1d", + "CDl2EgrBytesAg1h": "l2:EgrBytesAg1h", + "CDl2EgrBytesAg1mo": "l2:EgrBytesAg1mo", + "CDl2EgrBytesAg1qtr": "l2:EgrBytesAg1qtr", + "CDl2EgrBytesAg1w": "l2:EgrBytesAg1w", + "CDl2EgrBytesAg1year": "l2:EgrBytesAg1year", + "CDl2EgrBytesPart15min-": "l2:EgrBytesPart15min", + "CDl2EgrBytesPart1d-": "l2:EgrBytesPart1d", + "CDl2EgrBytesPart1h-": "l2:EgrBytesPart1h", + "CDl2EgrBytesPart1mo-": "l2:EgrBytesPart1mo", + "CDl2EgrBytesPart1qtr-": "l2:EgrBytesPart1qtr", + "CDl2EgrBytesPart1w-": "l2:EgrBytesPart1w", + "CDl2EgrBytesPart1year-": "l2:EgrBytesPart1year", + "CDl2EgrBytesPart5min-": "l2:EgrBytesPart5min", + "CDl2EgrPktsAg15min": "l2:EgrPktsAg15min", + "CDl2EgrPktsAg1d": "l2:EgrPktsAg1d", + "CDl2EgrPktsAg1h": "l2:EgrPktsAg1h", + "CDl2EgrPktsAg1mo": "l2:EgrPktsAg1mo", + "CDl2EgrPktsAg1qtr": "l2:EgrPktsAg1qtr", + "CDl2EgrPktsAg1w": "l2:EgrPktsAg1w", + "CDl2EgrPktsAg1year": "l2:EgrPktsAg1year", + "CDl2EgrPktsPart15min-": "l2:EgrPktsPart15min", + "CDl2EgrPktsPart1d-": "l2:EgrPktsPart1d", + "CDl2EgrPktsPart1h-": "l2:EgrPktsPart1h", + "CDl2EgrPktsPart1mo-": "l2:EgrPktsPart1mo", + "CDl2EgrPktsPart1qtr-": "l2:EgrPktsPart1qtr", + "CDl2EgrPktsPart1w-": "l2:EgrPktsPart1w", + "CDl2EgrPktsPart1year-": "l2:EgrPktsPart1year", + "CDl2EgrPktsPart5min-": "l2:EgrPktsPart5min", + "CDl2IngrBytesAg15min": "l2:IngrBytesAg15min", + "CDl2IngrBytesAg1d": "l2:IngrBytesAg1d", + "CDl2IngrBytesAg1h": "l2:IngrBytesAg1h", + "CDl2IngrBytesAg1mo": "l2:IngrBytesAg1mo", + "CDl2IngrBytesAg1qtr": "l2:IngrBytesAg1qtr", + "CDl2IngrBytesAg1w": "l2:IngrBytesAg1w", + "CDl2IngrBytesAg1year": "l2:IngrBytesAg1year", + "CDl2IngrBytesPart15min-": "l2:IngrBytesPart15min", + "CDl2IngrBytesPart1d-": "l2:IngrBytesPart1d", + "CDl2IngrBytesPart1h-": "l2:IngrBytesPart1h", + "CDl2IngrBytesPart1mo-": "l2:IngrBytesPart1mo", + "CDl2IngrBytesPart1qtr-": "l2:IngrBytesPart1qtr", + "CDl2IngrBytesPart1w-": "l2:IngrBytesPart1w", + "CDl2IngrBytesPart1year-": "l2:IngrBytesPart1year", + "CDl2IngrBytesPart5min-": "l2:IngrBytesPart5min", + "CDl2IngrPktsAg15min": "l2:IngrPktsAg15min", + "CDl2IngrPktsAg1d": "l2:IngrPktsAg1d", + "CDl2IngrPktsAg1h": "l2:IngrPktsAg1h", + "CDl2IngrPktsAg1mo": "l2:IngrPktsAg1mo", + "CDl2IngrPktsAg1qtr": "l2:IngrPktsAg1qtr", + "CDl2IngrPktsAg1w": "l2:IngrPktsAg1w", + "CDl2IngrPktsAg1year": "l2:IngrPktsAg1year", + "CDl2IngrPktsPart15min-": "l2:IngrPktsPart15min", + "CDl2IngrPktsPart1d-": "l2:IngrPktsPart1d", + "CDl2IngrPktsPart1h-": "l2:IngrPktsPart1h", + "CDl2IngrPktsPart1mo-": "l2:IngrPktsPart1mo", + "CDl2IngrPktsPart1qtr-": "l2:IngrPktsPart1qtr", + "CDl2IngrPktsPart1w-": "l2:IngrPktsPart1w", + "CDl2IngrPktsPart1year-": "l2:IngrPktsPart1year", + "CDl2IngrPktsPart5min-": "l2:IngrPktsPart5min", + "CDl3MplsEgrBytesAg15min": "l3:MplsEgrBytesAg15min", + "CDl3MplsEgrBytesAg1d": "l3:MplsEgrBytesAg1d", + "CDl3MplsEgrBytesAg1h": "l3:MplsEgrBytesAg1h", + "CDl3MplsEgrBytesAg1mo": "l3:MplsEgrBytesAg1mo", + "CDl3MplsEgrBytesAg1qtr": "l3:MplsEgrBytesAg1qtr", + "CDl3MplsEgrBytesAg1w": "l3:MplsEgrBytesAg1w", + "CDl3MplsEgrBytesAg1year": "l3:MplsEgrBytesAg1year", + "CDl3MplsEgrBytesPart15min-": "l3:MplsEgrBytesPart15min", + "CDl3MplsEgrBytesPart1d-": "l3:MplsEgrBytesPart1d", + "CDl3MplsEgrBytesPart1h-": "l3:MplsEgrBytesPart1h", + "CDl3MplsEgrBytesPart1mo-": "l3:MplsEgrBytesPart1mo", + "CDl3MplsEgrBytesPart1qtr-": "l3:MplsEgrBytesPart1qtr", + "CDl3MplsEgrBytesPart1w-": "l3:MplsEgrBytesPart1w", + "CDl3MplsEgrBytesPart1year-": "l3:MplsEgrBytesPart1year", + "CDl3MplsEgrBytesPart5min-": "l3:MplsEgrBytesPart5min", + "CDl3MplsEgrPktsAg15min": "l3:MplsEgrPktsAg15min", + "CDl3MplsEgrPktsAg1d": "l3:MplsEgrPktsAg1d", + "CDl3MplsEgrPktsAg1h": "l3:MplsEgrPktsAg1h", + "CDl3MplsEgrPktsAg1mo": "l3:MplsEgrPktsAg1mo", + "CDl3MplsEgrPktsAg1qtr": "l3:MplsEgrPktsAg1qtr", + "CDl3MplsEgrPktsAg1w": "l3:MplsEgrPktsAg1w", + "CDl3MplsEgrPktsAg1year": "l3:MplsEgrPktsAg1year", + "CDl3MplsEgrPktsPart15min-": "l3:MplsEgrPktsPart15min", + "CDl3MplsEgrPktsPart1d-": "l3:MplsEgrPktsPart1d", + "CDl3MplsEgrPktsPart1h-": "l3:MplsEgrPktsPart1h", + "CDl3MplsEgrPktsPart1mo-": "l3:MplsEgrPktsPart1mo", + "CDl3MplsEgrPktsPart1qtr-": "l3:MplsEgrPktsPart1qtr", + "CDl3MplsEgrPktsPart1w-": "l3:MplsEgrPktsPart1w", + "CDl3MplsEgrPktsPart1year-": "l3:MplsEgrPktsPart1year", + "CDl3MplsEgrPktsPart5min-": "l3:MplsEgrPktsPart5min", + "CDl3MplsIngrBytesAg15min": "l3:MplsIngrBytesAg15min", + "CDl3MplsIngrBytesAg1d": "l3:MplsIngrBytesAg1d", + "CDl3MplsIngrBytesAg1h": "l3:MplsIngrBytesAg1h", + "CDl3MplsIngrBytesAg1mo": "l3:MplsIngrBytesAg1mo", + "CDl3MplsIngrBytesAg1qtr": "l3:MplsIngrBytesAg1qtr", + "CDl3MplsIngrBytesAg1w": "l3:MplsIngrBytesAg1w", + "CDl3MplsIngrBytesAg1year": "l3:MplsIngrBytesAg1year", + "CDl3MplsIngrBytesPart15min-": "l3:MplsIngrBytesPart15min", + "CDl3MplsIngrBytesPart1d-": "l3:MplsIngrBytesPart1d", + "CDl3MplsIngrBytesPart1h-": "l3:MplsIngrBytesPart1h", + "CDl3MplsIngrBytesPart1mo-": "l3:MplsIngrBytesPart1mo", + "CDl3MplsIngrBytesPart1qtr-": "l3:MplsIngrBytesPart1qtr", + "CDl3MplsIngrBytesPart1w-": "l3:MplsIngrBytesPart1w", + "CDl3MplsIngrBytesPart1year-": "l3:MplsIngrBytesPart1year", + "CDl3MplsIngrBytesPart5min-": "l3:MplsIngrBytesPart5min", + "CDl3MplsIngrPktsAg15min": "l3:MplsIngrPktsAg15min", + "CDl3MplsIngrPktsAg1d": "l3:MplsIngrPktsAg1d", + "CDl3MplsIngrPktsAg1h": "l3:MplsIngrPktsAg1h", + "CDl3MplsIngrPktsAg1mo": "l3:MplsIngrPktsAg1mo", + "CDl3MplsIngrPktsAg1qtr": "l3:MplsIngrPktsAg1qtr", + "CDl3MplsIngrPktsAg1w": "l3:MplsIngrPktsAg1w", + "CDl3MplsIngrPktsAg1year": "l3:MplsIngrPktsAg1year", + "CDl3MplsIngrPktsPart15min-": "l3:MplsIngrPktsPart15min", + "CDl3MplsIngrPktsPart1d-": "l3:MplsIngrPktsPart1d", + "CDl3MplsIngrPktsPart1h-": "l3:MplsIngrPktsPart1h", + "CDl3MplsIngrPktsPart1mo-": "l3:MplsIngrPktsPart1mo", + "CDl3MplsIngrPktsPart1qtr-": "l3:MplsIngrPktsPart1qtr", + "CDl3MplsIngrPktsPart1w-": "l3:MplsIngrPktsPart1w", + "CDl3MplsIngrPktsPart1year-": "l3:MplsIngrPktsPart1year", + "CDl3MplsIngrPktsPart5min-": "l3:MplsIngrPktsPart5min", + "CfgRelInst-": "vns:CfgRelInst", + "FI_C-": "vns:FolderInst", + "HDfvFltCounter15min-": "fv:FltCounterHist15min", + "HDfvFltCounter1d-": "fv:FltCounterHist1d", + "HDfvFltCounter1h-": "fv:FltCounterHist1h", + "HDfvFltCounter1mo-": "fv:FltCounterHist1mo", + "HDfvFltCounter1qtr-": "fv:FltCounterHist1qtr", + "HDfvFltCounter1w-": "fv:FltCounterHist1w", + "HDfvFltCounter1year-": "fv:FltCounterHist1year", + "HDfvFltCounter5min-": "fv:FltCounterHist5min", + "HDl2EgrBytesAg15min-": "l2:EgrBytesAgHist15min", + "HDl2EgrBytesAg1d-": "l2:EgrBytesAgHist1d", + "HDl2EgrBytesAg1h-": "l2:EgrBytesAgHist1h", + "HDl2EgrBytesAg1mo-": "l2:EgrBytesAgHist1mo", + "HDl2EgrBytesAg1qtr-": "l2:EgrBytesAgHist1qtr", + "HDl2EgrBytesAg1w-": "l2:EgrBytesAgHist1w", + "HDl2EgrBytesAg1year-": "l2:EgrBytesAgHist1year", + "HDl2EgrBytesPart15min-": "l2:EgrBytesPartHist15min", + "HDl2EgrBytesPart1d-": "l2:EgrBytesPartHist1d", + "HDl2EgrBytesPart1h-": "l2:EgrBytesPartHist1h", + "HDl2EgrBytesPart1mo-": "l2:EgrBytesPartHist1mo", + "HDl2EgrBytesPart1qtr-": "l2:EgrBytesPartHist1qtr", + "HDl2EgrBytesPart1w-": "l2:EgrBytesPartHist1w", + "HDl2EgrBytesPart1year-": "l2:EgrBytesPartHist1year", + "HDl2EgrBytesPart5min-": "l2:EgrBytesPartHist5min", + "HDl2EgrPktsAg15min-": "l2:EgrPktsAgHist15min", + "HDl2EgrPktsAg1d-": "l2:EgrPktsAgHist1d", + "HDl2EgrPktsAg1h-": "l2:EgrPktsAgHist1h", + "HDl2EgrPktsAg1mo-": "l2:EgrPktsAgHist1mo", + "HDl2EgrPktsAg1qtr-": "l2:EgrPktsAgHist1qtr", + "HDl2EgrPktsAg1w-": "l2:EgrPktsAgHist1w", + "HDl2EgrPktsAg1year-": "l2:EgrPktsAgHist1year", + "HDl2EgrPktsPart15min-": "l2:EgrPktsPartHist15min", + "HDl2EgrPktsPart1d-": "l2:EgrPktsPartHist1d", + "HDl2EgrPktsPart1h-": "l2:EgrPktsPartHist1h", + "HDl2EgrPktsPart1mo-": "l2:EgrPktsPartHist1mo", + "HDl2EgrPktsPart1qtr-": "l2:EgrPktsPartHist1qtr", + "HDl2EgrPktsPart1w-": "l2:EgrPktsPartHist1w", + "HDl2EgrPktsPart1year-": "l2:EgrPktsPartHist1year", + "HDl2EgrPktsPart5min-": "l2:EgrPktsPartHist5min", + "HDl2IngrBytesAg15min-": "l2:IngrBytesAgHist15min", + "HDl2IngrBytesAg1d-": "l2:IngrBytesAgHist1d", + "HDl2IngrBytesAg1h-": "l2:IngrBytesAgHist1h", + "HDl2IngrBytesAg1mo-": "l2:IngrBytesAgHist1mo", + "HDl2IngrBytesAg1qtr-": "l2:IngrBytesAgHist1qtr", + "HDl2IngrBytesAg1w-": "l2:IngrBytesAgHist1w", + "HDl2IngrBytesAg1year-": "l2:IngrBytesAgHist1year", + "HDl2IngrBytesPart15min-": "l2:IngrBytesPartHist15min", + "HDl2IngrBytesPart1d-": "l2:IngrBytesPartHist1d", + "HDl2IngrBytesPart1h-": "l2:IngrBytesPartHist1h", + "HDl2IngrBytesPart1mo-": "l2:IngrBytesPartHist1mo", + "HDl2IngrBytesPart1qtr-": "l2:IngrBytesPartHist1qtr", + "HDl2IngrBytesPart1w-": "l2:IngrBytesPartHist1w", + "HDl2IngrBytesPart1year-": "l2:IngrBytesPartHist1year", + "HDl2IngrBytesPart5min-": "l2:IngrBytesPartHist5min", + "HDl2IngrPktsAg15min-": "l2:IngrPktsAgHist15min", + "HDl2IngrPktsAg1d-": "l2:IngrPktsAgHist1d", + "HDl2IngrPktsAg1h-": "l2:IngrPktsAgHist1h", + "HDl2IngrPktsAg1mo-": "l2:IngrPktsAgHist1mo", + "HDl2IngrPktsAg1qtr-": "l2:IngrPktsAgHist1qtr", + "HDl2IngrPktsAg1w-": "l2:IngrPktsAgHist1w", + "HDl2IngrPktsAg1year-": "l2:IngrPktsAgHist1year", + "HDl2IngrPktsPart15min-": "l2:IngrPktsPartHist15min", + "HDl2IngrPktsPart1d-": "l2:IngrPktsPartHist1d", + "HDl2IngrPktsPart1h-": "l2:IngrPktsPartHist1h", + "HDl2IngrPktsPart1mo-": "l2:IngrPktsPartHist1mo", + "HDl2IngrPktsPart1qtr-": "l2:IngrPktsPartHist1qtr", + "HDl2IngrPktsPart1w-": "l2:IngrPktsPartHist1w", + "HDl2IngrPktsPart1year-": "l2:IngrPktsPartHist1year", + "HDl2IngrPktsPart5min-": "l2:IngrPktsPartHist5min", + "HDl3MplsEgrBytesAg15min-": "l3:MplsEgrBytesAgHist15min", + "HDl3MplsEgrBytesAg1d-": "l3:MplsEgrBytesAgHist1d", + "HDl3MplsEgrBytesAg1h-": "l3:MplsEgrBytesAgHist1h", + "HDl3MplsEgrBytesAg1mo-": "l3:MplsEgrBytesAgHist1mo", + "HDl3MplsEgrBytesAg1qtr-": "l3:MplsEgrBytesAgHist1qtr", + "HDl3MplsEgrBytesAg1w-": "l3:MplsEgrBytesAgHist1w", + "HDl3MplsEgrBytesAg1year-": "l3:MplsEgrBytesAgHist1year", + "HDl3MplsEgrBytesPart15min-": "l3:MplsEgrBytesPartHist15min", + "HDl3MplsEgrBytesPart1d-": "l3:MplsEgrBytesPartHist1d", + "HDl3MplsEgrBytesPart1h-": "l3:MplsEgrBytesPartHist1h", + "HDl3MplsEgrBytesPart1mo-": "l3:MplsEgrBytesPartHist1mo", + "HDl3MplsEgrBytesPart1qtr-": "l3:MplsEgrBytesPartHist1qtr", + "HDl3MplsEgrBytesPart1w-": "l3:MplsEgrBytesPartHist1w", + "HDl3MplsEgrBytesPart1year-": "l3:MplsEgrBytesPartHist1year", + "HDl3MplsEgrBytesPart5min-": "l3:MplsEgrBytesPartHist5min", + "HDl3MplsEgrPktsAg15min-": "l3:MplsEgrPktsAgHist15min", + "HDl3MplsEgrPktsAg1d-": "l3:MplsEgrPktsAgHist1d", + "HDl3MplsEgrPktsAg1h-": "l3:MplsEgrPktsAgHist1h", + "HDl3MplsEgrPktsAg1mo-": "l3:MplsEgrPktsAgHist1mo", + "HDl3MplsEgrPktsAg1qtr-": "l3:MplsEgrPktsAgHist1qtr", + "HDl3MplsEgrPktsAg1w-": "l3:MplsEgrPktsAgHist1w", + "HDl3MplsEgrPktsAg1year-": "l3:MplsEgrPktsAgHist1year", + "HDl3MplsEgrPktsPart15min-": "l3:MplsEgrPktsPartHist15min", + "HDl3MplsEgrPktsPart1d-": "l3:MplsEgrPktsPartHist1d", + "HDl3MplsEgrPktsPart1h-": "l3:MplsEgrPktsPartHist1h", + "HDl3MplsEgrPktsPart1mo-": "l3:MplsEgrPktsPartHist1mo", + "HDl3MplsEgrPktsPart1qtr-": "l3:MplsEgrPktsPartHist1qtr", + "HDl3MplsEgrPktsPart1w-": "l3:MplsEgrPktsPartHist1w", + "HDl3MplsEgrPktsPart1year-": "l3:MplsEgrPktsPartHist1year", + "HDl3MplsEgrPktsPart5min-": "l3:MplsEgrPktsPartHist5min", + "HDl3MplsIngrBytesAg15min-": "l3:MplsIngrBytesAgHist15min", + "HDl3MplsIngrBytesAg1d-": "l3:MplsIngrBytesAgHist1d", + "HDl3MplsIngrBytesAg1h-": "l3:MplsIngrBytesAgHist1h", + "HDl3MplsIngrBytesAg1mo-": "l3:MplsIngrBytesAgHist1mo", + "HDl3MplsIngrBytesAg1qtr-": "l3:MplsIngrBytesAgHist1qtr", + "HDl3MplsIngrBytesAg1w-": "l3:MplsIngrBytesAgHist1w", + "HDl3MplsIngrBytesAg1year-": "l3:MplsIngrBytesAgHist1year", + "HDl3MplsIngrBytesPart15min-": "l3:MplsIngrBytesPartHist15min", + "HDl3MplsIngrBytesPart1d-": "l3:MplsIngrBytesPartHist1d", + "HDl3MplsIngrBytesPart1h-": "l3:MplsIngrBytesPartHist1h", + "HDl3MplsIngrBytesPart1mo-": "l3:MplsIngrBytesPartHist1mo", + "HDl3MplsIngrBytesPart1qtr-": "l3:MplsIngrBytesPartHist1qtr", + "HDl3MplsIngrBytesPart1w-": "l3:MplsIngrBytesPartHist1w", + "HDl3MplsIngrBytesPart1year-": "l3:MplsIngrBytesPartHist1year", + "HDl3MplsIngrBytesPart5min-": "l3:MplsIngrBytesPartHist5min", + "HDl3MplsIngrPktsAg15min-": "l3:MplsIngrPktsAgHist15min", + "HDl3MplsIngrPktsAg1d-": "l3:MplsIngrPktsAgHist1d", + "HDl3MplsIngrPktsAg1h-": "l3:MplsIngrPktsAgHist1h", + "HDl3MplsIngrPktsAg1mo-": "l3:MplsIngrPktsAgHist1mo", + "HDl3MplsIngrPktsAg1qtr-": "l3:MplsIngrPktsAgHist1qtr", + "HDl3MplsIngrPktsAg1w-": "l3:MplsIngrPktsAgHist1w", + "HDl3MplsIngrPktsAg1year-": "l3:MplsIngrPktsAgHist1year", + "HDl3MplsIngrPktsPart15min-": "l3:MplsIngrPktsPartHist15min", + "HDl3MplsIngrPktsPart1d-": "l3:MplsIngrPktsPartHist1d", + "HDl3MplsIngrPktsPart1h-": "l3:MplsIngrPktsPartHist1h", + "HDl3MplsIngrPktsPart1mo-": "l3:MplsIngrPktsPartHist1mo", + "HDl3MplsIngrPktsPart1qtr-": "l3:MplsIngrPktsPartHist1qtr", + "HDl3MplsIngrPktsPart1w-": "l3:MplsIngrPktsPartHist1w", + "HDl3MplsIngrPktsPart1year-": "l3:MplsIngrPktsPartHist1year", + "HDl3MplsIngrPktsPart5min-": "l3:MplsIngrPktsPartHist5min", + "Orchs-": "fv:OrchsInfo", + "ParamInst-": "vns:ParamInst", + "absFolder-": "vns:AbsFolder", + "absParam-": "vns:AbsParam", + "absRel-": "vns:AbsCfgRel", + "alias": "tag:AliasInst", + "aliasdel-": "tag:AliasDelInst", + "annotationKey-": "tag:Annotation", + "cCtrctLbl-": "vz:ConsCtrctLbl", + "cFolder-": "vns:CFolder", + "cParam-": "vns:CParam", + "cRel-": "vns:CRel", + "cep-": "fv:CEp", + "conslbl-": "vz:ConsLbl", + "conssubjlbl-": "vz:ConsSubjLbl", + "ctrctCtxdefDn-": "fv:CtrctCtxDefCont", + "epgselector-": "fv:EPgSelector", + "epselector-": "fv:EPSelector", + "extmngd": "tag:ExtMngdInst", + "fault-": "fault:Inst", + "fd-": "fault:Delegate", + "fltCnts": "fault:Counts", + "gFolder-": "vns:GFolder", + "gParam-": "vns:GParam", + "gRel-": "vns:GRel", + "health": "health:Inst", + "lifctxselector-": "fv:LIfCtxSelector", + "lls-": "orchs:LDevVipCfg", + "matchedSel-": "telemetry:MatchedSelector", + "mdpClassId": "mdp:ClassId", + "nodehealth-": "health:NodeInst", + "pCtrctLbl-": "vz:ProvCtrctLbl", + "provlbl-": "vz:ProvLbl", + "provsubjlbl-": "vz:ProvSubjLbl", + "rbacDom-": "aaa:RbacAnnotation", + "rscons-": "fv:RsCons", + "rsconsIf-": "fv:RsConsIf", + "rscustQosPol": "fv:RsCustQosPol", + "rsgraphDef-": "fv:RsGraphDef", + "rsintraEpg-": "fv:RsIntraEpg", + "rsprotBy-": "fv:RsProtBy", + "rsprov-": "fv:RsProv", + "rsprovDef-": "fv:RsProvDef", + "rspublishESg-": "fv:RsPublishESg", + "rsscope": "fv:RsScope", + "rssecInherited-": "fv:RsSecInherited", + "rtaaaSecProvToEpg-": "fv:RtSecProvToEpg", + "rtauthSvrToMgmtEPg-": "fv:RtSvrToMgmtEPg", + "rtdatetimeNtpProvToEpg-": "fv:RtNtpProvToEpg", + "rtdbgacFromAbsEpg-": "fv:RtFromAbsEpg", + "rtdbgacFromEsg-": "fv:RtFromEsg", + "rtdbgacToAbsEpg-": "fv:RtToAbsEpg", + "rtdbgacToAbsEpgForEpgToEpg-": "fv:RtToAbsEpgForEpgToEpg", + "rtdbgacToEsgForEpgToEpg-": "fv:RtToEsgForEpgToEpg", + "rtdcProfToEpg": "fv:RtDcProfToEpg", + "rtdcToEpg": "fv:RtDcToEpg", + "rtdhcpProv-": "fv:RtProv", + "rtdnsProfileToEpg-": "fv:RtProfileToEpg", + "rtdnsepgSvrEpg-": "fv:RtSvrEpg", + "rtextdevExtdevMgrMgmtEPg-": "fv:RtExtdevMgrMgmtEPg", + "rtfileARemoteHostToEpg-": "fv:RtARemoteHostToEpg", + "rtinfraFuncToEpg-": "fv:RtFuncToEpg", + "rtmatchEPg-": "fv:RtMatchEPg", + "rtnetflowExporterToEPg-": "fv:RtExporterToEPg", + "rtpoePoeEpg-": "fv:RtPoeEpg", + "rtsecInherited-": "fv:RtSecInherited", + "rtsnmpEpg-": "fv:RtEpg", + "rtspanDestEpg-": "fv:RtDestEpg", + "rtspanSrcToEpg-": "fv:RtSrcToEpg", + "rtspanVsrcToEpg-": "fv:RtVsrcToEpg", + "rtvmmMgmtEPg-": "fv:RtMgmtEPg", + "rtvnsChassisEpg-": "fv:RtChassisEpg", + "rtvnsDevEpg-": "fv:RtDevEpg", + "rtvnsDevMgrEpg-": "fv:RtDevMgrEpg", + "rtvnsLIfCtxToInstP-": "fv:RtLIfCtxToInstP", + "rtvnsSvcMgmtEpg-": "fv:RtSvcMgmtEpg", + "rtvnsTermToEPg-": "fv:RtTermToEPg", + "rtvnsVConnToEpgEp-": "fv:RtVConnToEpgEp", + "rtvnsVConnToEpgSubnet-": "fv:RtVConnToEpgSubnet", + "sharedServiceAlloc": "fv:SharedService", + "svcpol_C-": "vns:SvcPol", + "tag-": "tag:Inst", + "tagKey-": "tag:Tag", + "tagselectorkey-": "fv:TagSelector", + "to-": "fv:RInfoHolder", + "updateContract": "fv:UpdateContract" + }, + "identifiedBy": [ + "name" + ], + "rnFormat": "esg-{name}", + "containedBy": { + "fv:Ap": "" + }, + "superClasses": [ + "fv:EPg", + "fv:ATg", + "fv:Comp", + "pol:Comp", + "pol:Obj", + "naming:NamedObject" + ], + "subClasses": { + + }, + "relationFrom": { + "fv:RtARemoteHostToEpg": "file:ARemoteHost", + "fv:RtChassisEpg": "vns:Chassis", + "fv:RtDcProfToEpg": "intersight:SwitchConnectivityProfile", + "fv:RtDcToEpg": "intersight:DeviceConnectorInst", + "fv:RtDestEpg": "span:ADest", + "fv:RtDevEpg": "vns:ALDev", + "fv:RtDevMgrEpg": "vns:DevMgr", + "fv:RtEpg": "snmp:ClientGrpP", + "fv:RtExporterToEPg": "netflow:AExporterPol", + "fv:RtExtdevMgrMgmtEPg": "extdev:MgrP", + "fv:RtFromAbsEpg": "dbgac:FromEpgCmn", + "fv:RtFromEsg": "dbgac:FromEpgCmn", + "fv:RtFuncToEpg": "infra:AFunc", + "fv:RtLIfCtxToInstP": "vns:LIfCtx", + "fv:RtMatchEPg": "fv:EPgSelector", + "fv:RtMgmtEPg": "vmm:CtrlrP", + "fv:RtNtpProvToEpg": "datetime:NtpProv", + "fv:RtPoeEpg": "poe:IfPol", + "fv:RtProfileToEpg": "dns:Profile", + "fv:RtProv": "dhcp:RelayP", + "fv:RtSecInherited": "fv:EPg", + "fv:RtSecProvToEpg": "aaa:AProvider", + "fv:RtSrcToEpg": "span:ASrc", + "fv:RtSvcMgmtEpg": "vns:ALDev", + "fv:RtSvrEpg": "dnsepg:ASvrGrp", + "fv:RtSvrToMgmtEPg": "auth:Svr", + "fv:RtTermToEPg": "vns:ATerm", + "fv:RtToAbsEpg": "dbgac:ToEpgCmn", + "fv:RtToAbsEpgForEpgToEpg": "dbgac:EpgToEpg", + "fv:RtToEsgForEpgToEpg": "dbgac:EpgToEpg", + "fv:RtVConnToEpgEp": "vns:VEpg", + "fv:RtVConnToEpgSubnet": "vns:VEpg", + "fv:RtVsrcToEpg": "span:VSrcDef" + }, + "relationTo": { + "fv:RsCons": "vz:BrCP", + "fv:RsConsIf": "vz:CPIf", + "fv:RsCustQosPol": "qos:CustomPol", + "fv:RsGraphDef": "vz:GraphCont", + "fv:RsIntraEpg": "vz:BrCP", + "fv:RsProtBy": "vz:Taboo", + "fv:RsProv": "vz:BrCP", + "fv:RsProvDef": "vz:CtrctEPgCont", + "fv:RsPublishESg": "mdp:Topic", + "fv:RsScope": "fv:Ctx", + "fv:RsSecInherited": "fv:EPg" + }, + "dnFormats": [ + "uni/tn-{name}/ap-{name}/esg-{name}" + ], + "writeAccess": [ + "admin", + "tenant-epg", + "tenant-network-profile" + ], + "readAccess": [ + "aaa", + "access-connectivity", + "access-equipment", + "access-protocol", + "admin", + "fabric-equipment", + "fabric-protocol", + "nw-svc-policy", + "ops", + "tenant-connectivity", + "tenant-epg", + "tenant-network-profile", + "tenant-protocol", + "tenant-security", + "vmm-policy" + ], + "faults": { + "F4195": "fltFvESgConfig-warning" + }, + "events": { + "E4217214": "creation||fv:ESg", + "E4217215": "modification||fv:ESg", + "E4217216": "deletion||fv:ESg" + }, + "stats": { + "fv:FltCounter15min": { + "comment": [ + "A class that represents the most current statistics for Fault Counter in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "fv:FltCounter1d": { + "comment": [ + "A class that represents the most current statistics for Fault Counter in a 1 day sampling interval. This class updates every hour." + ] + }, + "fv:FltCounter1h": { + "comment": [ + "A class that represents the most current statistics for Fault Counter in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "fv:FltCounter1mo": { + "comment": [ + "A class that represents the most current statistics for Fault Counter in a 1 month sampling interval. This class updates every day." + ] + }, + "fv:FltCounter1qtr": { + "comment": [ + "A class that represents the most current statistics for Fault Counter in a 1 quarter sampling interval. This class updates every day." + ] + }, + "fv:FltCounter1w": { + "comment": [ + "A class that represents the most current statistics for Fault Counter in a 1 week sampling interval. This class updates every day." + ] + }, + "fv:FltCounter1year": { + "comment": [ + "A class that represents the most current statistics for Fault Counter in a 1 year sampling interval. This class updates every day." + ] + }, + "fv:FltCounter5min": { + "comment": [ + "A class that represents the most current statistics for Fault Counter in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "fv:FltCounterHist15min": { + "comment": [ + "A class that represents historical statistics for Fault Counter in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "fv:FltCounterHist1d": { + "comment": [ + "A class that represents historical statistics for Fault Counter in a 1 day sampling interval. This class updates every hour." + ] + }, + "fv:FltCounterHist1h": { + "comment": [ + "A class that represents historical statistics for Fault Counter in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "fv:FltCounterHist1mo": { + "comment": [ + "A class that represents historical statistics for Fault Counter in a 1 month sampling interval. This class updates every day." + ] + }, + "fv:FltCounterHist1qtr": { + "comment": [ + "A class that represents historical statistics for Fault Counter in a 1 quarter sampling interval. This class updates every day." + ] + }, + "fv:FltCounterHist1w": { + "comment": [ + "A class that represents historical statistics for Fault Counter in a 1 week sampling interval. This class updates every day." + ] + }, + "fv:FltCounterHist1year": { + "comment": [ + "A class that represents historical statistics for Fault Counter in a 1 year sampling interval. This class updates every day." + ] + }, + "fv:FltCounterHist5min": { + "comment": [ + "A class that represents historical statistics for Fault Counter in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l2:EgrBytesAg15min": { + "comment": [ + "Egress byte. A class that represents the most current aggregated statistics for egress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:EgrBytesAg1d": { + "comment": [ + "Egress byte. A class that represents the most current aggregated statistics for egress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:EgrBytesAg1h": { + "comment": [ + "Egress byte. A class that represents the most current aggregated statistics for egress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:EgrBytesAg1mo": { + "comment": [ + "Egress byte. A class that represents the most current aggregated statistics for egress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesAg1qtr": { + "comment": [ + "Egress byte. A class that represents the most current aggregated statistics for egress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesAg1w": { + "comment": [ + "Egress byte. A class that represents the most current aggregated statistics for egress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesAg1year": { + "comment": [ + "Egress byte. A class that represents the most current aggregated statistics for egress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesAgHist15min": { + "comment": [ + "Egress byte. A class that represents historical aggregated statistics for egress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:EgrBytesAgHist1d": { + "comment": [ + "Egress byte. A class that represents historical aggregated statistics for egress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:EgrBytesAgHist1h": { + "comment": [ + "Egress byte. A class that represents historical aggregated statistics for egress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:EgrBytesAgHist1mo": { + "comment": [ + "Egress byte. A class that represents historical aggregated statistics for egress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesAgHist1qtr": { + "comment": [ + "Egress byte. A class that represents historical aggregated statistics for egress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesAgHist1w": { + "comment": [ + "Egress byte. A class that represents historical aggregated statistics for egress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesAgHist1year": { + "comment": [ + "Egress byte. A class that represents historical aggregated statistics for egress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesPart15min": { + "comment": [ + "Egress byte. A class that represents the most current portion of the statistics for egress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:EgrBytesPart1d": { + "comment": [ + "Egress byte. A class that represents the most current portion of the statistics for egress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:EgrBytesPart1h": { + "comment": [ + "Egress byte. A class that represents the most current portion of the statistics for egress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:EgrBytesPart1mo": { + "comment": [ + "Egress byte. A class that represents the most current portion of the statistics for egress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesPart1qtr": { + "comment": [ + "Egress byte. A class that represents the most current portion of the statistics for egress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesPart1w": { + "comment": [ + "Egress byte. A class that represents the most current portion of the statistics for egress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesPart1year": { + "comment": [ + "Egress byte. A class that represents the most current portion of the statistics for egress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesPart5min": { + "comment": [ + "Egress byte. A class that represents the most current portion of the statistics for egress bytes in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l2:EgrBytesPartHist15min": { + "comment": [ + "Egress byte. A class that represents historical portion of the statistics for egress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:EgrBytesPartHist1d": { + "comment": [ + "Egress byte. A class that represents historical portion of the statistics for egress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:EgrBytesPartHist1h": { + "comment": [ + "Egress byte. A class that represents historical portion of the statistics for egress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:EgrBytesPartHist1mo": { + "comment": [ + "Egress byte. A class that represents historical portion of the statistics for egress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesPartHist1qtr": { + "comment": [ + "Egress byte. A class that represents historical portion of the statistics for egress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesPartHist1w": { + "comment": [ + "Egress byte. A class that represents historical portion of the statistics for egress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesPartHist1year": { + "comment": [ + "Egress byte. A class that represents historical portion of the statistics for egress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:EgrBytesPartHist5min": { + "comment": [ + "Egress byte. A class that represents historical portion of the statistics for egress bytes in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l2:EgrPktsAg15min": { + "comment": [ + "Egress packet. A class that represents the most current aggregated statistics for egress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:EgrPktsAg1d": { + "comment": [ + "Egress packet. A class that represents the most current aggregated statistics for egress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:EgrPktsAg1h": { + "comment": [ + "Egress packet. A class that represents the most current aggregated statistics for egress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:EgrPktsAg1mo": { + "comment": [ + "Egress packet. A class that represents the most current aggregated statistics for egress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsAg1qtr": { + "comment": [ + "Egress packet. A class that represents the most current aggregated statistics for egress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsAg1w": { + "comment": [ + "Egress packet. A class that represents the most current aggregated statistics for egress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsAg1year": { + "comment": [ + "Egress packet. A class that represents the most current aggregated statistics for egress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsAgHist15min": { + "comment": [ + "Egress packet. A class that represents historical aggregated statistics for egress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:EgrPktsAgHist1d": { + "comment": [ + "Egress packet. A class that represents historical aggregated statistics for egress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:EgrPktsAgHist1h": { + "comment": [ + "Egress packet. A class that represents historical aggregated statistics for egress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:EgrPktsAgHist1mo": { + "comment": [ + "Egress packet. A class that represents historical aggregated statistics for egress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsAgHist1qtr": { + "comment": [ + "Egress packet. A class that represents historical aggregated statistics for egress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsAgHist1w": { + "comment": [ + "Egress packet. A class that represents historical aggregated statistics for egress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsAgHist1year": { + "comment": [ + "Egress packet. A class that represents historical aggregated statistics for egress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsPart15min": { + "comment": [ + "Egress packet. A class that represents the most current portion of the statistics for egress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:EgrPktsPart1d": { + "comment": [ + "Egress packet. A class that represents the most current portion of the statistics for egress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:EgrPktsPart1h": { + "comment": [ + "Egress packet. A class that represents the most current portion of the statistics for egress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:EgrPktsPart1mo": { + "comment": [ + "Egress packet. A class that represents the most current portion of the statistics for egress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsPart1qtr": { + "comment": [ + "Egress packet. A class that represents the most current portion of the statistics for egress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsPart1w": { + "comment": [ + "Egress packet. A class that represents the most current portion of the statistics for egress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsPart1year": { + "comment": [ + "Egress packet. A class that represents the most current portion of the statistics for egress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsPart5min": { + "comment": [ + "Egress packet. A class that represents the most current portion of the statistics for egress packets in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l2:EgrPktsPartHist15min": { + "comment": [ + "Egress packet. A class that represents historical portion of the statistics for egress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:EgrPktsPartHist1d": { + "comment": [ + "Egress packet. A class that represents historical portion of the statistics for egress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:EgrPktsPartHist1h": { + "comment": [ + "Egress packet. A class that represents historical portion of the statistics for egress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:EgrPktsPartHist1mo": { + "comment": [ + "Egress packet. A class that represents historical portion of the statistics for egress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsPartHist1qtr": { + "comment": [ + "Egress packet. A class that represents historical portion of the statistics for egress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsPartHist1w": { + "comment": [ + "Egress packet. A class that represents historical portion of the statistics for egress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsPartHist1year": { + "comment": [ + "Egress packet. A class that represents historical portion of the statistics for egress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:EgrPktsPartHist5min": { + "comment": [ + "Egress packet. A class that represents historical portion of the statistics for egress packets in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l2:IngrBytesAg15min": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:IngrBytesAg1d": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:IngrBytesAg1h": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:IngrBytesAg1mo": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesAg1qtr": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesAg1w": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesAg1year": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesAgHist15min": { + "comment": [ + "A class that represents historical aggregated statistics for ingress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:IngrBytesAgHist1d": { + "comment": [ + "A class that represents historical aggregated statistics for ingress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:IngrBytesAgHist1h": { + "comment": [ + "A class that represents historical aggregated statistics for ingress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:IngrBytesAgHist1mo": { + "comment": [ + "A class that represents historical aggregated statistics for ingress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesAgHist1qtr": { + "comment": [ + "A class that represents historical aggregated statistics for ingress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesAgHist1w": { + "comment": [ + "A class that represents historical aggregated statistics for ingress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesAgHist1year": { + "comment": [ + "A class that represents historical aggregated statistics for ingress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesPart15min": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:IngrBytesPart1d": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:IngrBytesPart1h": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:IngrBytesPart1mo": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesPart1qtr": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesPart1w": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesPart1year": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesPart5min": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress bytes in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l2:IngrBytesPartHist15min": { + "comment": [ + "A class that represents historical portion of the statistics for ingress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:IngrBytesPartHist1d": { + "comment": [ + "A class that represents historical portion of the statistics for ingress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:IngrBytesPartHist1h": { + "comment": [ + "A class that represents historical portion of the statistics for ingress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:IngrBytesPartHist1mo": { + "comment": [ + "A class that represents historical portion of the statistics for ingress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesPartHist1qtr": { + "comment": [ + "A class that represents historical portion of the statistics for ingress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesPartHist1w": { + "comment": [ + "A class that represents historical portion of the statistics for ingress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesPartHist1year": { + "comment": [ + "A class that represents historical portion of the statistics for ingress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:IngrBytesPartHist5min": { + "comment": [ + "A class that represents historical portion of the statistics for ingress bytes in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l2:IngrPktsAg15min": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:IngrPktsAg1d": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:IngrPktsAg1h": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:IngrPktsAg1mo": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsAg1qtr": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsAg1w": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsAg1year": { + "comment": [ + "A class that represents the most current aggregated statistics for ingress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsAgHist15min": { + "comment": [ + "A class that represents historical aggregated statistics for ingress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:IngrPktsAgHist1d": { + "comment": [ + "A class that represents historical aggregated statistics for ingress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:IngrPktsAgHist1h": { + "comment": [ + "A class that represents historical aggregated statistics for ingress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:IngrPktsAgHist1mo": { + "comment": [ + "A class that represents historical aggregated statistics for ingress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsAgHist1qtr": { + "comment": [ + "A class that represents historical aggregated statistics for ingress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsAgHist1w": { + "comment": [ + "A class that represents historical aggregated statistics for ingress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsAgHist1year": { + "comment": [ + "A class that represents historical aggregated statistics for ingress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsPart15min": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:IngrPktsPart1d": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:IngrPktsPart1h": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:IngrPktsPart1mo": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsPart1qtr": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsPart1w": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsPart1year": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsPart5min": { + "comment": [ + "A class that represents the most current portion of the statistics for ingress packets in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l2:IngrPktsPartHist15min": { + "comment": [ + "A class that represents historical portion of the statistics for ingress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l2:IngrPktsPartHist1d": { + "comment": [ + "A class that represents historical portion of the statistics for ingress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l2:IngrPktsPartHist1h": { + "comment": [ + "A class that represents historical portion of the statistics for ingress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l2:IngrPktsPartHist1mo": { + "comment": [ + "A class that represents historical portion of the statistics for ingress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsPartHist1qtr": { + "comment": [ + "A class that represents historical portion of the statistics for ingress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsPartHist1w": { + "comment": [ + "A class that represents historical portion of the statistics for ingress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsPartHist1year": { + "comment": [ + "A class that represents historical portion of the statistics for ingress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l2:IngrPktsPartHist5min": { + "comment": [ + "A class that represents historical portion of the statistics for ingress packets in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l3:MplsEgrBytesAg15min": { + "comment": [ + "Mpls egress bytes. A class that represents the most current aggregated statistics for mpls egress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsEgrBytesAg1d": { + "comment": [ + "Mpls egress bytes. A class that represents the most current aggregated statistics for mpls egress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsEgrBytesAg1h": { + "comment": [ + "Mpls egress bytes. A class that represents the most current aggregated statistics for mpls egress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsEgrBytesAg1mo": { + "comment": [ + "Mpls egress bytes. A class that represents the most current aggregated statistics for mpls egress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesAg1qtr": { + "comment": [ + "Mpls egress bytes. A class that represents the most current aggregated statistics for mpls egress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesAg1w": { + "comment": [ + "Mpls egress bytes. A class that represents the most current aggregated statistics for mpls egress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesAg1year": { + "comment": [ + "Mpls egress bytes. A class that represents the most current aggregated statistics for mpls egress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesAgHist15min": { + "comment": [ + "Mpls egress bytes. A class that represents historical aggregated statistics for mpls egress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsEgrBytesAgHist1d": { + "comment": [ + "Mpls egress bytes. A class that represents historical aggregated statistics for mpls egress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsEgrBytesAgHist1h": { + "comment": [ + "Mpls egress bytes. A class that represents historical aggregated statistics for mpls egress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsEgrBytesAgHist1mo": { + "comment": [ + "Mpls egress bytes. A class that represents historical aggregated statistics for mpls egress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesAgHist1qtr": { + "comment": [ + "Mpls egress bytes. A class that represents historical aggregated statistics for mpls egress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesAgHist1w": { + "comment": [ + "Mpls egress bytes. A class that represents historical aggregated statistics for mpls egress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesAgHist1year": { + "comment": [ + "Mpls egress bytes. A class that represents historical aggregated statistics for mpls egress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesPart15min": { + "comment": [ + "Mpls egress bytes. A class that represents the most current portion of the statistics for mpls egress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsEgrBytesPart1d": { + "comment": [ + "Mpls egress bytes. A class that represents the most current portion of the statistics for mpls egress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsEgrBytesPart1h": { + "comment": [ + "Mpls egress bytes. A class that represents the most current portion of the statistics for mpls egress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsEgrBytesPart1mo": { + "comment": [ + "Mpls egress bytes. A class that represents the most current portion of the statistics for mpls egress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesPart1qtr": { + "comment": [ + "Mpls egress bytes. A class that represents the most current portion of the statistics for mpls egress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesPart1w": { + "comment": [ + "Mpls egress bytes. A class that represents the most current portion of the statistics for mpls egress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesPart1year": { + "comment": [ + "Mpls egress bytes. A class that represents the most current portion of the statistics for mpls egress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesPart5min": { + "comment": [ + "Mpls egress bytes. A class that represents the most current portion of the statistics for mpls egress bytes in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l3:MplsEgrBytesPartHist15min": { + "comment": [ + "Mpls egress bytes. A class that represents historical portion of the statistics for mpls egress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsEgrBytesPartHist1d": { + "comment": [ + "Mpls egress bytes. A class that represents historical portion of the statistics for mpls egress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsEgrBytesPartHist1h": { + "comment": [ + "Mpls egress bytes. A class that represents historical portion of the statistics for mpls egress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsEgrBytesPartHist1mo": { + "comment": [ + "Mpls egress bytes. A class that represents historical portion of the statistics for mpls egress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesPartHist1qtr": { + "comment": [ + "Mpls egress bytes. A class that represents historical portion of the statistics for mpls egress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesPartHist1w": { + "comment": [ + "Mpls egress bytes. A class that represents historical portion of the statistics for mpls egress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesPartHist1year": { + "comment": [ + "Mpls egress bytes. A class that represents historical portion of the statistics for mpls egress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrBytesPartHist5min": { + "comment": [ + "Mpls egress bytes. A class that represents historical portion of the statistics for mpls egress bytes in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l3:MplsEgrPktsAg15min": { + "comment": [ + "Mpls egress packets. A class that represents the most current aggregated statistics for mpls egress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsEgrPktsAg1d": { + "comment": [ + "Mpls egress packets. A class that represents the most current aggregated statistics for mpls egress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsEgrPktsAg1h": { + "comment": [ + "Mpls egress packets. A class that represents the most current aggregated statistics for mpls egress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsEgrPktsAg1mo": { + "comment": [ + "Mpls egress packets. A class that represents the most current aggregated statistics for mpls egress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsAg1qtr": { + "comment": [ + "Mpls egress packets. A class that represents the most current aggregated statistics for mpls egress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsAg1w": { + "comment": [ + "Mpls egress packets. A class that represents the most current aggregated statistics for mpls egress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsAg1year": { + "comment": [ + "Mpls egress packets. A class that represents the most current aggregated statistics for mpls egress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsAgHist15min": { + "comment": [ + "Mpls egress packets. A class that represents historical aggregated statistics for mpls egress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsEgrPktsAgHist1d": { + "comment": [ + "Mpls egress packets. A class that represents historical aggregated statistics for mpls egress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsEgrPktsAgHist1h": { + "comment": [ + "Mpls egress packets. A class that represents historical aggregated statistics for mpls egress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsEgrPktsAgHist1mo": { + "comment": [ + "Mpls egress packets. A class that represents historical aggregated statistics for mpls egress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsAgHist1qtr": { + "comment": [ + "Mpls egress packets. A class that represents historical aggregated statistics for mpls egress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsAgHist1w": { + "comment": [ + "Mpls egress packets. A class that represents historical aggregated statistics for mpls egress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsAgHist1year": { + "comment": [ + "Mpls egress packets. A class that represents historical aggregated statistics for mpls egress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsPart15min": { + "comment": [ + "Mpls egress packets. A class that represents the most current portion of the statistics for mpls egress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsEgrPktsPart1d": { + "comment": [ + "Mpls egress packets. A class that represents the most current portion of the statistics for mpls egress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsEgrPktsPart1h": { + "comment": [ + "Mpls egress packets. A class that represents the most current portion of the statistics for mpls egress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsEgrPktsPart1mo": { + "comment": [ + "Mpls egress packets. A class that represents the most current portion of the statistics for mpls egress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsPart1qtr": { + "comment": [ + "Mpls egress packets. A class that represents the most current portion of the statistics for mpls egress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsPart1w": { + "comment": [ + "Mpls egress packets. A class that represents the most current portion of the statistics for mpls egress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsPart1year": { + "comment": [ + "Mpls egress packets. A class that represents the most current portion of the statistics for mpls egress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsPart5min": { + "comment": [ + "Mpls egress packets. A class that represents the most current portion of the statistics for mpls egress packets in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l3:MplsEgrPktsPartHist15min": { + "comment": [ + "Mpls egress packets. A class that represents historical portion of the statistics for mpls egress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsEgrPktsPartHist1d": { + "comment": [ + "Mpls egress packets. A class that represents historical portion of the statistics for mpls egress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsEgrPktsPartHist1h": { + "comment": [ + "Mpls egress packets. A class that represents historical portion of the statistics for mpls egress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsEgrPktsPartHist1mo": { + "comment": [ + "Mpls egress packets. A class that represents historical portion of the statistics for mpls egress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsPartHist1qtr": { + "comment": [ + "Mpls egress packets. A class that represents historical portion of the statistics for mpls egress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsPartHist1w": { + "comment": [ + "Mpls egress packets. A class that represents historical portion of the statistics for mpls egress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsPartHist1year": { + "comment": [ + "Mpls egress packets. A class that represents historical portion of the statistics for mpls egress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsEgrPktsPartHist5min": { + "comment": [ + "Mpls egress packets. A class that represents historical portion of the statistics for mpls egress packets in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l3:MplsIngrBytesAg15min": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current aggregated statistics for mpls ingress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsIngrBytesAg1d": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current aggregated statistics for mpls ingress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsIngrBytesAg1h": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current aggregated statistics for mpls ingress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsIngrBytesAg1mo": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current aggregated statistics for mpls ingress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesAg1qtr": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current aggregated statistics for mpls ingress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesAg1w": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current aggregated statistics for mpls ingress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesAg1year": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current aggregated statistics for mpls ingress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesAgHist15min": { + "comment": [ + "Mpls ingress bytes. A class that represents historical aggregated statistics for mpls ingress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsIngrBytesAgHist1d": { + "comment": [ + "Mpls ingress bytes. A class that represents historical aggregated statistics for mpls ingress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsIngrBytesAgHist1h": { + "comment": [ + "Mpls ingress bytes. A class that represents historical aggregated statistics for mpls ingress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsIngrBytesAgHist1mo": { + "comment": [ + "Mpls ingress bytes. A class that represents historical aggregated statistics for mpls ingress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesAgHist1qtr": { + "comment": [ + "Mpls ingress bytes. A class that represents historical aggregated statistics for mpls ingress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesAgHist1w": { + "comment": [ + "Mpls ingress bytes. A class that represents historical aggregated statistics for mpls ingress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesAgHist1year": { + "comment": [ + "Mpls ingress bytes. A class that represents historical aggregated statistics for mpls ingress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesPart15min": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current portion of the statistics for mpls ingress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsIngrBytesPart1d": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current portion of the statistics for mpls ingress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsIngrBytesPart1h": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current portion of the statistics for mpls ingress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsIngrBytesPart1mo": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current portion of the statistics for mpls ingress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesPart1qtr": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current portion of the statistics for mpls ingress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesPart1w": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current portion of the statistics for mpls ingress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesPart1year": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current portion of the statistics for mpls ingress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesPart5min": { + "comment": [ + "Mpls ingress bytes. A class that represents the most current portion of the statistics for mpls ingress bytes in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l3:MplsIngrBytesPartHist15min": { + "comment": [ + "Mpls ingress bytes. A class that represents historical portion of the statistics for mpls ingress bytes in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsIngrBytesPartHist1d": { + "comment": [ + "Mpls ingress bytes. A class that represents historical portion of the statistics for mpls ingress bytes in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsIngrBytesPartHist1h": { + "comment": [ + "Mpls ingress bytes. A class that represents historical portion of the statistics for mpls ingress bytes in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsIngrBytesPartHist1mo": { + "comment": [ + "Mpls ingress bytes. A class that represents historical portion of the statistics for mpls ingress bytes in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesPartHist1qtr": { + "comment": [ + "Mpls ingress bytes. A class that represents historical portion of the statistics for mpls ingress bytes in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesPartHist1w": { + "comment": [ + "Mpls ingress bytes. A class that represents historical portion of the statistics for mpls ingress bytes in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesPartHist1year": { + "comment": [ + "Mpls ingress bytes. A class that represents historical portion of the statistics for mpls ingress bytes in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrBytesPartHist5min": { + "comment": [ + "Mpls ingress bytes. A class that represents historical portion of the statistics for mpls ingress bytes in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l3:MplsIngrPktsAg15min": { + "comment": [ + "Mpls ingress packet. A class that represents the most current aggregated statistics for mpls ingress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsIngrPktsAg1d": { + "comment": [ + "Mpls ingress packet. A class that represents the most current aggregated statistics for mpls ingress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsIngrPktsAg1h": { + "comment": [ + "Mpls ingress packet. A class that represents the most current aggregated statistics for mpls ingress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsIngrPktsAg1mo": { + "comment": [ + "Mpls ingress packet. A class that represents the most current aggregated statistics for mpls ingress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsAg1qtr": { + "comment": [ + "Mpls ingress packet. A class that represents the most current aggregated statistics for mpls ingress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsAg1w": { + "comment": [ + "Mpls ingress packet. A class that represents the most current aggregated statistics for mpls ingress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsAg1year": { + "comment": [ + "Mpls ingress packet. A class that represents the most current aggregated statistics for mpls ingress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsAgHist15min": { + "comment": [ + "Mpls ingress packet. A class that represents historical aggregated statistics for mpls ingress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsIngrPktsAgHist1d": { + "comment": [ + "Mpls ingress packet. A class that represents historical aggregated statistics for mpls ingress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsIngrPktsAgHist1h": { + "comment": [ + "Mpls ingress packet. A class that represents historical aggregated statistics for mpls ingress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsIngrPktsAgHist1mo": { + "comment": [ + "Mpls ingress packet. A class that represents historical aggregated statistics for mpls ingress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsAgHist1qtr": { + "comment": [ + "Mpls ingress packet. A class that represents historical aggregated statistics for mpls ingress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsAgHist1w": { + "comment": [ + "Mpls ingress packet. A class that represents historical aggregated statistics for mpls ingress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsAgHist1year": { + "comment": [ + "Mpls ingress packet. A class that represents historical aggregated statistics for mpls ingress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsPart15min": { + "comment": [ + "Mpls ingress packet. A class that represents the most current portion of the statistics for mpls ingress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsIngrPktsPart1d": { + "comment": [ + "Mpls ingress packet. A class that represents the most current portion of the statistics for mpls ingress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsIngrPktsPart1h": { + "comment": [ + "Mpls ingress packet. A class that represents the most current portion of the statistics for mpls ingress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsIngrPktsPart1mo": { + "comment": [ + "Mpls ingress packet. A class that represents the most current portion of the statistics for mpls ingress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsPart1qtr": { + "comment": [ + "Mpls ingress packet. A class that represents the most current portion of the statistics for mpls ingress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsPart1w": { + "comment": [ + "Mpls ingress packet. A class that represents the most current portion of the statistics for mpls ingress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsPart1year": { + "comment": [ + "Mpls ingress packet. A class that represents the most current portion of the statistics for mpls ingress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsPart5min": { + "comment": [ + "Mpls ingress packet. A class that represents the most current portion of the statistics for mpls ingress packets in a 5 minute sampling interval. This class updates every 10 seconds." + ] + }, + "l3:MplsIngrPktsPartHist15min": { + "comment": [ + "Mpls ingress packet. A class that represents historical portion of the statistics for mpls ingress packets in a 15 minute sampling interval. This class updates every 5 minutes." + ] + }, + "l3:MplsIngrPktsPartHist1d": { + "comment": [ + "Mpls ingress packet. A class that represents historical portion of the statistics for mpls ingress packets in a 1 day sampling interval. This class updates every hour." + ] + }, + "l3:MplsIngrPktsPartHist1h": { + "comment": [ + "Mpls ingress packet. A class that represents historical portion of the statistics for mpls ingress packets in a 1 hour sampling interval. This class updates every 15 minutes." + ] + }, + "l3:MplsIngrPktsPartHist1mo": { + "comment": [ + "Mpls ingress packet. A class that represents historical portion of the statistics for mpls ingress packets in a 1 month sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsPartHist1qtr": { + "comment": [ + "Mpls ingress packet. A class that represents historical portion of the statistics for mpls ingress packets in a 1 quarter sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsPartHist1w": { + "comment": [ + "Mpls ingress packet. A class that represents historical portion of the statistics for mpls ingress packets in a 1 week sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsPartHist1year": { + "comment": [ + "Mpls ingress packet. A class that represents historical portion of the statistics for mpls ingress packets in a 1 year sampling interval. This class updates every day." + ] + }, + "l3:MplsIngrPktsPartHist5min": { + "comment": [ + "Mpls ingress packet. A class that represents historical portion of the statistics for mpls ingress packets in a 5 minute sampling interval. This class updates every 10 seconds." + ] + } + }, + "versions": "5.0(1k)-", + "isAbstract": false, + "isConfigurable": true, + "isContextRoot": false, + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false, + "isEncrypted": false, + "isExportable": true, + "isPersistent": true, + "isSubjectToQuota": true, + "isObservable": true, + "hasStats": true, + "isStat": false, + "isFaultable": true, + "isDomainable": false, + "isHealthScorable": true, + "shouldCollectHealthStats": false, + "healthCollectionSource": "node", + "hasEventRules": false, + "abstractionLayer": "logical", + "apicNxProcessing": false, + "monitoringPolicySource": "Explicit", + "isCreatableDeletable": "always", + "platformFlavors": [ + "apic" + ], + "classId": "16474", + "className": "ESg", + "classPkg": "fv", + "featureTag": "", + "moCategory": "Regular", + "label": "Endpoint Security Group", + "properties": { + "annotation": { + "versions": "5.0(1k)-", + "comment": [ + "User annotation. Suggested format orchestrator:value" + ], + "isConfigurable": true, + "propGlobalId": "56101", + "propLocalId": "8719", + "label": "Annotation", + "baseType": "string:Basic", + "modelType": "mo:Annotation", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 128, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "childAction": { + "versions": "1.0(1e)-", + "comment": [ + "Delete or ignore. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "4", + "propLocalId": "5", + "label": "childAction", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationChildAction", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "16384", "localName": "deleteAll", + "platformFlavors": [ + + ], + "label": "Delete All "}, + { "value": "8192", "localName": "deleteNonPresent", + "platformFlavors": [ + + ], + "label": "Delete Non Present "}, + { "value": "4096", "localName": "ignore", + "platformFlavors": [ + + ], + "label": "Ignore "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "configIssues": { + "versions": "1.0(1e)-", + "comment": [ + "Bitmask representation of the configuration issues found during the endpoint group deployment." + ], + "isConfigurable": false, + "propGlobalId": "1715", + "propLocalId": "153", + "label": "Config Issues", + "baseType": "scalar:Bitmask64", + "modelType": "fv:ConfigIssues", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2048", "localName": "allow-useg-inconsistent", + "platformFlavors": [ + + ], + "comment": [ + "allow useg Validations" + ], + "label": "allow-useg flag inconsistent across vmm domain (DVS) attaches "}, + { "value": "256", "localName": "bd-id-not-allocated", + "platformFlavors": [ + + ], + "label": "BD IDs Not Allocated "}, + { "value": "1", "localName": "bd-not-present", + "platformFlavors": [ + + ], + "comment": [ + "BD Validations" + ], + "label": "BD Not present "}, + { "value": "512", "localName": "context-id-not-allocated", + "platformFlavors": [ + + ], + "label": "Context IDs Not Allocated "}, + { "value": "2", "localName": "context-not-present", + "platformFlavors": [ + + ], + "comment": [ + "Context Validations" + ], + "label": "Context Not present. Configure Context and/or attach Context to Bridge-group domain for application EPG or attach Context to ESG for security group. "}, + { "value": "none", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "8", "localName": "encap-assignment", + "platformFlavors": [ + + ], + "label": "Encapsulation Not Valid "}, + { "value": "0x4000", "localName": "esg-association-contract-inheritance-present", + "platformFlavors": [ + + ], + "comment": [ + "EPgSelector Contract Inheritance Validations" + ], + "label": "Security features (contract inheritance) present on the EPG mapped to an ESG via an EPG Selector (fvEPgSelector). Once appropriate contract configuration is done on the ESG, delete any contract association on this EPG. "}, + { "value": "0x2000", "localName": "esg-association-contract-present", + "platformFlavors": [ + + ], + "comment": [ + "EPgSelector Contract Validations" + ], + "label": "Security features (contract association) present on the EPG mapped to an ESG via an EPG Selector (fvEPgSelector). Once appropriate contract configuration is done on the ESG, delete any contract association on this EPG. "}, + { "value": "0x8000", "localName": "esg-association-contract-taboo-present", + "platformFlavors": [ + + ], + "comment": [ + "EPgSelector Taboo Contract Validations" + ], + "label": "Security features (Taboo contract) present on the EPG mapped to an ESG via an EPG Selector (fvEPgSelector). Once appropriate contract configuration is done on the ESG, delete any contract association on this EPG. "}, + { "value": "0x10000", "localName": "esg-tag-selector-match-obj-not-associated", + "platformFlavors": [ + + ], + "comment": [ + "ESG TagSelector Duplicate Detected" + ], + "label": "a Tag Selector is matching an object, but the object is not associated to this ESG since it is matching multiple ESG Tag Selectors at the same time. Check under ESG - > Operational -> Tag Selectors tab for further information "}, + { "value": "4", "localName": "id-not-allocated", + "platformFlavors": [ + + ], + "label": "IDs Not Allocated "}, + { "value": "1024", "localName": "instrimedcy-unsupported", + "platformFlavors": [ + + ], + "comment": [ + "Deployment Immediacy Validation" + ], + "label": "On-Demand deployment immediacy is not supported for uSeg EPG associated to VMware DVS domain "}, + { "value": "32", "localName": "invalid-rel-to-rtctrlProfile", + "platformFlavors": [ + + ], + "label": "Invalid Association to Route Control Policy "}, + { "value": "128", "localName": "l3port-and-sub-interface-on-path", + "platformFlavors": [ + + ], + "label": "L3 Port and Sub-Interface Not Allowed on Same Path "}, + { "value": "4096", "localName": "no-conslbl-association", + "platformFlavors": [ + + ], + "comment": [ + "MPLS InstP Validations" + ], + "label": "No consumer label association for the MPLS external EPG "}, + { "value": "0", "localName": "none", + "platformFlavors": [ + + ], + "label": "none "}, + { "value": "64", "localName": "not-associated-with-mgmt-zone", + "platformFlavors": [ + + ], + "label": "Not Associated With Management Zone "} + ], + "default": "none", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "configSt": { + "versions": "1.0(1e)-", + "comment": [ + "The configuration state of the endpoint group." + ], + "isConfigurable": false, + "propGlobalId": "1714", + "propLocalId": "474", + "label": "Deployment Status", + "baseType": "scalar:Enum8", + "modelType": "pol:ConfigSt", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "applied", + "platformFlavors": [ + + ], + "comment": [ + "Configuration applied." + ], + "label": "applied "}, + { "value": "1", "localName": "applying", + "platformFlavors": [ + + ], + "comment": [ + "Configuration is getting applied." + ], + "label": "applying "}, + { "value": "not-applied", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "3", "localName": "failed-to-apply", + "platformFlavors": [ + + ], + "comment": [ + "Failed to apply configuration" + ], + "label": "failed-to-apply "}, + { "value": "0", "localName": "not-applied", + "platformFlavors": [ + + ], + "comment": [ + "Configuration is not applied." + ], + "label": "not-applied "}, + { "value": "4", "localName": "temp-failed-to-apply", + "platformFlavors": [ + + ], + "comment": [ + "Temporary failure. No faults are raised for this kind of failure." + ], + "label": "temp-failed-to-apply "} + ], + "default": "not-applied", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "descr": { + "versions": "1.0(1e)-", + "comment": [ + "Specifies the description of a policy component." + ], + "isConfigurable": true, + "propGlobalId": "5582", + "propLocalId": "28", + "label": "Description", + "baseType": "string:Basic", + "modelType": "naming:Descr", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": true, + "likeProp": "naming:Described:descr", + "validators": [ + {"min" : 0, "max": 128, + "regexs": [ + {"regex" : "^[a-zA-Z0-9\\\\!#$%()*,-./:;@ _{|}~?&+]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "dn": { + "versions": "1.0(1e)-", + "comment": [ + "A tag or metadata is a non-hierarchical keyword or term assigned to the fabric module." + ], + "isConfigurable": false, + "propGlobalId": "1", + "propLocalId": "2", + "label": "dn", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "exceptionTag": { + "versions": "3.2(1l)-", + "isConfigurable": true, + "propGlobalId": "37061", + "propLocalId": "8661", + "label": "Contract Exception Tag", + "baseType": "string:Basic", + "modelType": "string:Basic", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 512 } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "extMngdBy": { + "versions": "5.0(1k)-", + "comment": [ + "Indicates which orchestrator is managing this MO" + ], + "isConfigurable": false, + "propGlobalId": "56102", + "propLocalId": "8023", + "label": "Managed By", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ExtMngdByType", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "undefined", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "msc", + "platformFlavors": [ + + ], + "label": "MSC "}, + { "value": "0", "localName": "undefined", + "platformFlavors": [ + + ], + "label": "Undefined "} + ], + "default": "undefined", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "floodOnEncap": { + "versions": "3.1(1i)-", + "comment": [ + "Control at EPG level if the traffic L2\n Multicast/Broadcast and Link Local Layer should\n be flooded only on ENCAP or based on bridg-domain\n settings" + ], + "isConfigurable": true, + "propGlobalId": "35418", + "propLocalId": "8264", + "label": "Handling of L2 Multicast/Broadcast and Link-Layer traffic at EPG level", + "baseType": "scalar:Enum8", + "modelType": "fv:FloodOnEncap", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "disabled", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "disabled", + "platformFlavors": [ + + ], + "comment": [ + "Flood on encapsulation for EPG is disabled, which\n essentially means it will take the behavior from\n bridge-domain" + ], + "label": "Disabled "}, + { "value": "1", "localName": "enabled", + "platformFlavors": [ + + ], + "comment": [ + "Flood on encapsulation for EPG is enabled, this\n will override bridge-domain settings" + ], + "label": "Enabled "} + ], + "default": "disabled", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "isSharedSrvMsiteEPg": { + "versions": "4.0(1h)-", + "isConfigurable": false, + "propGlobalId": "45493", + "propLocalId": "7934", + "label": "Multisite Shared Service EPG", + "baseType": "scalar:Bool", + "modelType": "scalar:Bool", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "false", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "false", "localName": "no", + "platformFlavors": [ + + ], + "label": "No "}, + { "value": "true", "localName": "yes", + "platformFlavors": [ + + ], + "label": "Yes "} + ], + "default": "no", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "lcOwn": { + "versions": "1.0(1e)-", + "comment": [ + "A value that indicates how this object was created. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "9", + "propLocalId": "9", + "label": "lcOwn", + "baseType": "scalar:Enum8", + "modelType": "mo:Owner", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "local", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "4", "localName": "implicit", + "platformFlavors": [ + + ], + "label": "Implicit "}, + { "value": "0", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "policy", + "platformFlavors": [ + + ], + "label": "Policy "}, + { "value": "2", "localName": "replica", + "platformFlavors": [ + + ], + "label": "Replica "}, + { "value": "3", "localName": "resolveOnBehalf", + "platformFlavors": [ + + ], + "label": "Resolved On Behalf "} + ], + "default": "local", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "matchT": { + "versions": "1.0(1e)-", + "comment": [ + "The provider label match criteria." + ], + "isConfigurable": true, + "propGlobalId": "1726", + "propLocalId": "552", + "label": "Provider Label Match Criteria", + "baseType": "scalar:Enum8", + "modelType": "vz:MatchT", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "1", "localName": "All", + "platformFlavors": [ + + ], + "comment": [ + "Logical AND i.e. &&" + ], + "label": "All "}, + { "value": "2", "localName": "AtleastOne", + "platformFlavors": [ + + ], + "comment": [ + "Logical OR i.e. ||" + ], + "label": "At Least One "}, + { "value": "3", "localName": "AtmostOne", + "platformFlavors": [ + + ], + "comment": [ + "Logical XOR" + ], + "label": "At Most One "}, + { "value": "4", "localName": "None", + "platformFlavors": [ + + ], + "comment": [ + "Logical NOT i.e. !" + ], + "label": "None "}, + { "value": "AtleastOne", "localName": "defaultValue", + "platformFlavors": [ + + ], + "comment": [ + "default is OR" + ], + "label": " "} + ], + "default": "AtleastOne", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "modTs": { + "versions": "1.0(1e)-", + "comment": [ + "The time when this object was last modified." + ], + "isConfigurable": false, + "propGlobalId": "7", + "propLocalId": "7", + "label": "modTs", + "baseType": "scalar:Date", + "modelType": "mo:TStamp", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "never", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "never", + "platformFlavors": [ + + ], + "label": "Never "} + ], + "default": "never", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "monPolDn": { + "versions": "5.0(1k)-", + "comment": [ + "The monitoring policy attached to this observable object." + ], + "isConfigurable": false, + "propGlobalId": "56097", + "propLocalId": "228", + "label": "Monitoring Policy", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "name": { + "versions": "5.0(1k)-", + "comment": [ + "The name of the object." + ], + "isConfigurable": true, + "propGlobalId": "56081", + "propLocalId": "13", + "label": "Name", + "baseType": "string:Basic", + "modelType": "naming:Name", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": false, + "readOnly": false, + "isNaming": true, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validators": [ + {"min" : 1, "max": 64, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "nameAlias": { + "versions": "2.2(1k)-", + "isConfigurable": true, + "propGlobalId": "28417", + "propLocalId": "6719", + "label": "Display Name", + "baseType": "string:Basic", + "modelType": "naming:NameAlias", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 63, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "pcEnfPref": { + "versions": "5.0(1k)-", + "comment": [ + "Represents parameter used by the node (i.e. Leaf)\n to enforce filter rules in this EPG" + ], + "isConfigurable": true, + "propGlobalId": "57156", + "propLocalId": "914", + "label": "Policy Control Enforcement", + "baseType": "scalar:Enum8", + "modelType": "fv:PcEnfPref", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "unenforced", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "enforced", + "platformFlavors": [ + + ], + "comment": [ + "Enforce access control rules for this private network" + ], + "label": "Enforced "}, + { "value": "2", "localName": "unenforced", + "platformFlavors": [ + + ], + "comment": [ + "Do not enforce access control rules for this private network" + ], + "label": "Unenforced "} + ], + "default": "unenforced", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "pcTag": { + "versions": "1.0(1e)-", + "comment": [ + "The classification tag used for policy enforcement and zoning." + ], + "isConfigurable": false, + "propGlobalId": "1717", + "propLocalId": "551", + "label": "Policy Enforcement Tag", + "baseType": "scalar:Uint32", + "modelType": "vz:GPCTag", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "0", "localName": "any", + "platformFlavors": [ + + ], + "label": "any "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "pcTagAllocSrc": { + "versions": "5.2(1g)-", + "isConfigurable": false, + "propGlobalId": "63907", + "propLocalId": "14043", + "label": "pcTag Allocation Source", + "baseType": "scalar:Enum8", + "modelType": "fv:PcTagAllocationSource", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "idmanager", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "esg", + "platformFlavors": [ + + ], + "label": "ESG "}, + { "value": "0", "localName": "idmanager", + "platformFlavors": [ + + ], + "label": "ID Manager "}, + { "value": "2", "localName": "mso", + "platformFlavors": [ + + ], + "label": "MSO "} + ], + "default": "idmanager", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "prefGrMemb": { + "versions": "2.1(1h)-", + "comment": [ + "Represents parameter used to determine\n if EPg is part of a group that does not\n a contract for communication" + ], + "isConfigurable": true, + "propGlobalId": "27679", + "propLocalId": "6456", + "label": "Preferred Group Member", + "baseType": "scalar:Enum8", + "modelType": "fv:PrefGrMemb", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "exclude", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "2", "localName": "exclude", + "platformFlavors": [ + + ], + "comment": [ + "EPg is NOT part of preferred group member" + ], + "label": "Exclude "}, + { "value": "1", "localName": "include", + "platformFlavors": [ + + ], + "comment": [ + "EPg is part of preferred group member" + ], + "label": "Include "} + ], + "default": "exclude", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "prio": { + "versions": "1.0(1e)-", + "comment": [ + "The QoS priority class identifier." + ], + "isConfigurable": true, + "propGlobalId": "1718", + "propLocalId": "172", + "label": "QOS Class", + "baseType": "scalar:Enum8", + "modelType": "qos:TenantPrio", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 9 } + ], + "validValues": [ + { "value": "unspecified", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "3", "localName": "level1", + "platformFlavors": [ + + ], + "label": "Level1 "}, + { "value": "2", "localName": "level2", + "platformFlavors": [ + + ], + "label": "Level2 "}, + { "value": "1", "localName": "level3", + "platformFlavors": [ + + ], + "comment": [ + "User configurable classes" + ], + "label": "Level3 (Default) "}, + { "value": "9", "localName": "level4", + "platformFlavors": [ + + ], + "label": "Level4 "}, + { "value": "8", "localName": "level5", + "platformFlavors": [ + + ], + "label": "Level5 "}, + { "value": "7", "localName": "level6", + "platformFlavors": [ + + ], + "label": "Level6 "}, + { "value": "0", "localName": "unspecified", + "platformFlavors": [ + + ], + "label": "Unspecified "} + ], + "default": "unspecified", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rn": { + "versions": "1.0(1e)-", + "comment": [ + "Identifies an object from its siblings within the context of its parent object. The distinguished name contains a sequence of relative names." + ], + "isConfigurable": false, + "propGlobalId": "2", + "propLocalId": "3", + "label": "rn", + "baseType": "reference:BinRN", + "modelType": "reference:BinRN", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "scope": { + "versions": "1.0(1e)-", + "comment": [ + "" + ], + "isConfigurable": false, + "propGlobalId": "1716", + "propLocalId": "1", + "label": "scope", + "baseType": "scalar:Uint32", + "modelType": "fv:ScopeId", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "0", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "0", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "shutdown": { + "versions": "5.2(1g)-", + "isConfigurable": true, + "propGlobalId": "62712", + "propLocalId": "9699", + "label": "Withdraw ESg Configuration from all Nodes in the Fabric", + "baseType": "scalar:Bool", + "modelType": "scalar:Bool", + "needsPropDelimiters": false, + "uitype": "boolean", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "false", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "false", "localName": "no", + "platformFlavors": [ + + ], + "label": "No "}, + { "value": "true", "localName": "yes", + "platformFlavors": [ + + ], + "label": "Yes "} + ], + "default": "false", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "status": { + "versions": "1.0(1e)-", + "comment": [ + "The upgrade status. This property is for internal use only." + ], + "isConfigurable": false, + "propGlobalId": "3", + "propLocalId": "4", + "label": "status", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationStatus", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "created", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be created. An error is returned if the object already exists. \nIn the return value of a setter method: indicates that an object has been created. \n" + ], + "label": "Created "}, + { "value": "8", "localName": "deleted", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be deleted. \nIn the return value of a setter method: indicates that an object has been deleted.\n" + ], + "label": "Deleted "}, + { "value": "4", "localName": "modified", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be modified \nIn the return value of a setter method: indicates that an object has been modified.\n" + ], + "label": "Modified "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "triggerSt": { + "versions": "1.0(1e)-", + "comment": [ + "" + ], + "isConfigurable": false, + "propGlobalId": "1725", + "propLocalId": "898", + "label": "Ability to Trigger Task", + "baseType": "scalar:Enum8", + "modelType": "fv:TriggerSt", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "not_triggerable", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "not_triggerable", + "platformFlavors": [ + + ], + "label": "not_triggerable "}, + { "value": "1", "localName": "triggerable", + "platformFlavors": [ + + ], + "label": "triggerable "} + ], + "default": "not_triggerable", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "txId": { + "versions": "1.1(2h)-", + "comment": [ + "The identifier of the transaction in which the user action occurred." + ], + "isConfigurable": false, + "propGlobalId": "21191", + "propLocalId": "64", + "label": "Transaction Id when EPg was created", + "baseType": "scalar:Uint64", + "modelType": "scalar:Uint64", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "uid": { + "versions": "1.0(1e)-", + "comment": [ + "A unique identifier for this object." + ], + "isConfigurable": false, + "propGlobalId": "8", + "propLocalId": "8", + "label": "uid", + "baseType": "scalar:Uint16", + "modelType": "scalar:Uint16", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "userdom": { + "versions": "5.0(1k)-", + "isConfigurable": true, + "propGlobalId": "60657", + "propLocalId": "13244", + "label": "userdom", + "baseType": "string:Basic", + "modelType": "mo:UserDomType", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 1024, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "validValues": [ + { "value": "all", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "all", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + } + } + } +} diff --git a/gen/meta/fvRsCons.json b/gen/meta/fvRsCons.json new file mode 100644 index 000000000..61b15e541 --- /dev/null +++ b/gen/meta/fvRsCons.json @@ -0,0 +1,1461 @@ +{ + "fv:RsCons": { + "contains": { + "aaa:RbacAnnotation": "", + "fault:Counts": "", + "fault:Inst": "", + "fv:CollectionCont": "", + "health:Inst": "", + "tag:AliasDelInst": "", + "tag:AliasInst": "", + "tag:Annotation": "", + "tag:ExtMngdInst": "", + "tag:Inst": "", + "tag:Tag": "", + "vz:ConsLbl": "", + "vz:ConsSubjLbl": "" + }, + "rnMap": { + "alias": "tag:AliasInst", + "aliasdel-": "tag:AliasDelInst", + "annotationKey-": "tag:Annotation", + "collectionDn-": "fv:CollectionCont", + "conslbl-": "vz:ConsLbl", + "conssubjlbl-": "vz:ConsSubjLbl", + "extmngd": "tag:ExtMngdInst", + "fault-": "fault:Inst", + "fltCnts": "fault:Counts", + "health": "health:Inst", + "rbacDom-": "aaa:RbacAnnotation", + "tag-": "tag:Inst", + "tagKey-": "tag:Tag" + }, + "identifiedBy": [ + "tnVzBrCPName" + ], + "rnFormat": "rscons-{tnVzBrCPName}", + "containedBy": { + "cloud:EPg": "", + "cloud:ExtEPg": "", + "cloud:ISvcEPg": "", + "cloud:SvcEPg": "", + "dhcp:CRelPg": "", + "dhcp:PRelPg": "", + "fv:AEPg": "", + "fv:ESg": "", + "fv:IntEPg": "", + "fv:TnlEPg": "", + "infra:CEPg": "", + "infra:PEPg": "", + "l2ext:InstP": "", + "l3ext:InstP": "", + "l3ext:InstPDef": "", + "mgmt:InB": "", + "vns:EPpInfo": "", + "vns:REPpInfo": "", + "vns:SDEPpInfo": "", + "vns:SHEPpInfo": "" + }, + "superClasses": [ + "fv:EPgToCollection", + "pol:NToRef", + "reln:To", + "reln:Inst" + ], + "subClasses": { + + }, + "relationInfo": { + "type": "named", + "cardinality": "n-to-m", + "fromMo": "fv:EPg", + "fromRelMo": "fv:RsCons", + "toMo": "vz:BrCP", + "toRelMo": "vz:RtCons", + "enforceable": true, + "resolvable": true + }, + "dnFormats": [ + "uni/tn-{name}/intap/intepg-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/cloudsvcepg-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/ap-{name}/esg-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/rscons-{tnVzBrCPName}", + "uni/svcdefcont/tensvcdef-{name}/ldevdef-[{lDevDn}]/sepg-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/ldevdef-[{lDevDn}]/sepg-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/sepg-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/cloudextepg-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/cloudepg-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/Tnlepg-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/epgDn-[{shEpgDn}]/rscons-{tnVzBrCPName}", + "outdefcont-{id}/rsoutDefContToOut-[{tDn}]/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/acIpToIp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/acExtToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/acEpToExt-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/acEpToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/acAnyToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/acEpToAny-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/epgToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/epToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/ipToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/epgToIp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/epgToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/epp/sec-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/epp/fv-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/epp/rtd-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/ldevCtx-c-{ctrctNameOrLbl}-g-{graphNameOrLbl}-n-{nodeNameOrLbl}/lIfCtx-c-{connNameOrLbl}/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/outdef-{name}/instPdef-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/bd-[{bdDn}]/rscons-{tnVzBrCPName}", + "uni/ldev-[{priKey}]-ctx-[{ctxDn}]-bd-[{bdDn}]/rscons-{tnVzBrCPName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/G-{graphRn}-N-{nodeRn}-C-{connRn}/rscons-{tnVzBrCPName}", + "uni/vDev-[{priKey}]-tn-[{tnDn}]-ctx-{ctxName}/rndrInfo/eppContr/G-{graphRn}-N-{nodeRn}-C-{connRn}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/clp-{name}/cepg-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/provp-{name}/pepg-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/provp-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/clp-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/mgmtp-{name}/inb-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/ap-{name}/epg-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/out-{name}/instP-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/l2out-{name}/instP-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/clp-{name}/cdhcp-{name}/rscons-{tnVzBrCPName}", + "uni/tn-{name}/provp-{name}/pdhcp-{name}/rscons-{tnVzBrCPName}" + ], + "writeAccess": [ + "admin", + "tenant-epg", + "tenant-network-profile" + ], + "readAccess": [ + "admin", + "ops", + "tenant-epg", + "tenant-network-profile", + "tenant-security" + ], + "faults": { + "F0967": "fltFvRsConsResolveFail" + }, + "events": { + "E4214159": "creation||fv:RsCons", + "E4214160": "modification||fv:RsCons", + "E4214161": "deletion||fv:RsCons" + }, + "stats": { + + }, + "versions": "1.0(1e)-", + "isAbstract": false, + "isConfigurable": true, + "isContextRoot": false, + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false, + "isEncrypted": false, + "isExportable": true, + "isPersistent": true, + "isSubjectToQuota": true, + "isObservable": true, + "hasStats": false, + "isStat": false, + "isFaultable": true, + "isDomainable": false, + "isHealthScorable": true, + "shouldCollectHealthStats": false, + "healthCollectionSource": "faults", + "hasEventRules": false, + "abstractionLayer": "regular", + "apicNxProcessing": false, + "monitoringPolicySource": "Parent", + "isCreatableDeletable": "always", + "platformFlavors": [ + + ], + "classId": "1904", + "className": "RsCons", + "classPkg": "fv", + "featureTag": "", + "moCategory": "RelationshipToLocal", + "label": "Contract Consumer", + "comment": [ + "The Consumer contract profile information." + ], + "properties": { + "accessPrivilege": { + "versions": "5.2(1g)-", + "isConfigurable": false, + "propGlobalId": "63569", + "propLocalId": "13107", + "label": "accessPrivilege", + "baseType": "scalar:Enum8", + "modelType": "fv:AccessPrivilegeType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "1", "localName": "SYSTEM", + "platformFlavors": [ + + ], + "label": "System Created "}, + { "value": "0", "localName": "USER", + "platformFlavors": [ + + ], + "label": "User Created "}, + { "value": "USER", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "USER", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "annotation": { + "versions": "3.2(1l)-", + "comment": [ + "User annotation. Suggested format orchestrator:value" + ], + "isConfigurable": true, + "propGlobalId": "37652", + "propLocalId": "8719", + "label": "Annotation", + "baseType": "string:Basic", + "modelType": "mo:Annotation", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 128, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "childAction": { + "versions": "1.0(1e)-", + "comment": [ + "Delete or ignore. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "4", + "propLocalId": "5", + "label": "childAction", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationChildAction", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "16384", "localName": "deleteAll", + "platformFlavors": [ + + ], + "label": "Delete All "}, + { "value": "8192", "localName": "deleteNonPresent", + "platformFlavors": [ + + ], + "label": "Delete Non Present "}, + { "value": "4096", "localName": "ignore", + "platformFlavors": [ + + ], + "label": "Ignore "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "ctrctUpd": { + "versions": "1.0(1e)-", + "comment": [ + "Indicates if the information about the contract/bundle/group an endpoint group is associated to will be sent from the endpoint group shard or contract shard." + ], + "isConfigurable": false, + "propGlobalId": "1722", + "propLocalId": "563", + "label": "Contract Update", + "baseType": "scalar:Enum8", + "modelType": "fv:CtrctUpd", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "0", "localName": "ctrct", + "platformFlavors": [ + + ], + "label": "Contract "}, + { "value": "not_defined", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "epg", + "platformFlavors": [ + + ], + "label": "EPG "}, + { "value": "0", "localName": "not_defined", + "platformFlavors": [ + + ], + "label": "Not Defined "} + ], + "default": "not_defined", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "deplInfo": { + "versions": "1.0(1e)-", + "comment": [ + "null" + ], + "isConfigurable": false, + "propGlobalId": "12200", + "propLocalId": "3978", + "label": "deplInfo", + "baseType": "scalar:Bitmask8", + "modelType": "vz:DeplInfo", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "8", "localName": "No_Matching_Provider", + "platformFlavors": [ + + ], + "label": "No Matching Provider "}, + { "value": "4", "localName": "No_Subjects", + "platformFlavors": [ + + ], + "label": "No Subjects "}, + { "value": "0", "localName": "None", + "platformFlavors": [ + + ], + "label": "None "}, + { "value": "2", "localName": "Not_Associated_To_Context", + "platformFlavors": [ + + ], + "label": "Not Associated To Context "}, + { "value": "1", "localName": "PCTag_Not_Allocated", + "platformFlavors": [ + + ], + "label": "PC Tag Not Allocated "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "dn": { + "versions": "1.0(1e)-", + "comment": [ + "A tag or metadata is a non-hierarchical keyword or term assigned to the fabric module." + ], + "isConfigurable": false, + "propGlobalId": "1", + "propLocalId": "2", + "label": "dn", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "extMngdBy": { + "versions": "3.2(1l)-", + "comment": [ + "Indicates which orchestrator is managing this MO" + ], + "isConfigurable": false, + "propGlobalId": "39791", + "propLocalId": "8023", + "label": "Managed By", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ExtMngdByType", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "undefined", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "msc", + "platformFlavors": [ + + ], + "label": "MSC "}, + { "value": "0", "localName": "undefined", + "platformFlavors": [ + + ], + "label": "Undefined "} + ], + "default": "undefined", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "forceResolve": { + "versions": "1.0(1e)-", + "comment": [ + "Whether the relation should force pull the target." + ], + "isConfigurable": false, + "propGlobalId": "107", + "propLocalId": "83", + "label": "Force Resolve", + "baseType": "scalar:Bool", + "modelType": "scalar:Bool", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "true", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "false", "localName": "no", + "platformFlavors": [ + + ], + "label": "No "}, + { "value": "true", "localName": "yes", + "platformFlavors": [ + + ], + "label": "Yes "} + ], + "default": "yes", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "intent": { + "versions": "4.2(1i)-", + "isConfigurable": true, + "propGlobalId": "55646", + "propLocalId": "12600", + "label": "Install Rules or Estimate Number of Rules", + "baseType": "scalar:Enum8", + "modelType": "vz:Intent", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "install", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "2", "localName": "estimate_add", + "platformFlavors": [ + + ], + "label": "Process Configuration and Estimate Number of Rules for Adding Contract "}, + { "value": "1", "localName": "estimate_delete", + "platformFlavors": [ + + ], + "label": "Process Configuration and Estimate Number of Rules for Deleting Contract "}, + { "value": "0", "localName": "install", + "platformFlavors": [ + + ], + "label": "Install Rules in Hardware "} + ], + "default": "install", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "lcOwn": { + "versions": "1.0(1e)-", + "comment": [ + "A value that indicates how this object was created. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "9", + "propLocalId": "9", + "label": "lcOwn", + "baseType": "scalar:Enum8", + "modelType": "mo:Owner", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "local", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "4", "localName": "implicit", + "platformFlavors": [ + + ], + "label": "Implicit "}, + { "value": "0", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "policy", + "platformFlavors": [ + + ], + "label": "Policy "}, + { "value": "2", "localName": "replica", + "platformFlavors": [ + + ], + "label": "Replica "}, + { "value": "3", "localName": "resolveOnBehalf", + "platformFlavors": [ + + ], + "label": "Resolved On Behalf "} + ], + "default": "local", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "modTs": { + "versions": "1.0(1e)-", + "comment": [ + "The time when this object was last modified." + ], + "isConfigurable": false, + "propGlobalId": "7", + "propLocalId": "7", + "label": "modTs", + "baseType": "scalar:Date", + "modelType": "mo:TStamp", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "never", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "never", + "platformFlavors": [ + + ], + "label": "Never "} + ], + "default": "never", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "monPolDn": { + "versions": "1.0(1e)-", + "comment": [ + "The monitoring policy attached to this observable object." + ], + "isConfigurable": false, + "propGlobalId": "14257", + "propLocalId": "228", + "label": "Monitoring Policy", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "prio": { + "versions": "1.0(1e)-", + "comment": [ + "The system class determines the quality of service and priority for the consumer traffic." + ], + "isConfigurable": true, + "propGlobalId": "12201", + "propLocalId": "172", + "label": "prio", + "baseType": "scalar:Enum8", + "modelType": "qos:TenantPrio", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 9 } + ], + "validValues": [ + { "value": "unspecified", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "3", "localName": "level1", + "platformFlavors": [ + + ], + "label": "Level1 "}, + { "value": "2", "localName": "level2", + "platformFlavors": [ + + ], + "label": "Level2 "}, + { "value": "1", "localName": "level3", + "platformFlavors": [ + + ], + "comment": [ + "User configurable classes" + ], + "label": "Level3 (Default) "}, + { "value": "9", "localName": "level4", + "platformFlavors": [ + + ], + "label": "Level4 "}, + { "value": "8", "localName": "level5", + "platformFlavors": [ + + ], + "label": "Level5 "}, + { "value": "7", "localName": "level6", + "platformFlavors": [ + + ], + "label": "Level6 "}, + { "value": "0", "localName": "unspecified", + "platformFlavors": [ + + ], + "label": "Unspecified "} + ], + "default": "unspecified", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rType": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the type of resolver." + ], + "isConfigurable": false, + "propGlobalId": "106", + "propLocalId": "82", + "label": "Resolver Type", + "baseType": "scalar:Enum8", + "modelType": "reln:ResolverType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "mo", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "3", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "2", "localName": "service", + "platformFlavors": [ + + ], + "label": "Service "} + ], + "default": "mo", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rn": { + "versions": "1.0(1e)-", + "comment": [ + "Identifies an object from its siblings within the context of its parent object. The distinguished name contains a sequence of relative names." + ], + "isConfigurable": false, + "propGlobalId": "2", + "propLocalId": "3", + "label": "rn", + "baseType": "reference:BinRN", + "modelType": "reference:BinRN", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "state": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "103", + "propLocalId": "26", + "label": "State", + "baseType": "scalar:Enum8", + "modelType": "reln:State", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "5", "localName": "cardinality-violation", + "platformFlavors": [ + + ], + "comment": [ + "cardinality violation - When relations are created such that\n they violate the cardinality, state of the relation would be\n set to this." + ], + "label": "Cardinality Violation "}, + { "value": "unformed", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "formed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is formed with the target object" + ], + "label": "Formed "}, + { "value": "4", "localName": "invalid-target", + "platformFlavors": [ + + ], + "comment": [ + "invalid target DN" + ], + "label": "Invalid Target "}, + { "value": "2", "localName": "missing-target", + "platformFlavors": [ + + ], + "comment": [ + "target does not exist" + ], + "label": "Missing Target "}, + { "value": "0", "localName": "unformed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is not formed" + ], + "label": "Unformed "} + ], + "default": "unformed", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "stateQual": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state qualifier of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "104", + "propLocalId": "80", + "label": "State Qualifier", + "baseType": "scalar:Enum8", + "modelType": "reln:StateQual", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "default-target", + "platformFlavors": [ + + ], + "comment": [ + "target not specified, using default" + ], + "label": "Target Not Specified "}, + { "value": "none", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mismatch-target", + "platformFlavors": [ + + ], + "comment": [ + "target not found, using default" + ], + "label": "Target Not Found "}, + { "value": "0", "localName": "none", + "platformFlavors": [ + + ], + "comment": [ + "no issue" + ], + "label": "None "} + ], + "default": "none", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "status": { + "versions": "1.0(1e)-", + "comment": [ + "The upgrade status. This property is for internal use only." + ], + "isConfigurable": false, + "propGlobalId": "3", + "propLocalId": "4", + "label": "status", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationStatus", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "created", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be created. An error is returned if the object already exists. \nIn the return value of a setter method: indicates that an object has been created. \n" + ], + "label": "Created "}, + { "value": "8", "localName": "deleted", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be deleted. \nIn the return value of a setter method: indicates that an object has been deleted.\n" + ], + "label": "Deleted "}, + { "value": "4", "localName": "modified", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be modified \nIn the return value of a setter method: indicates that an object has been modified.\n" + ], + "label": "Modified "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tCl": { + "versions": "1.0(1e)-", + "comment": [ + "null" + ], + "isConfigurable": false, + "propGlobalId": "12199", + "propLocalId": "78", + "label": "Target Class", + "baseType": "scalar:Enum16", + "modelType": "reln:ClassId", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validValues": [ + { "value": "1300", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "unspecified", + "platformFlavors": [ + + ], + "label": "unspecified "}, + { "value": "1300", "localName": "vzBrCP", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "vzBrCP", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tContextDn": { + "versions": "1.0(1e)-", + "comment": [ + "Specifies the target context distinguished name." + ], + "isConfigurable": false, + "propGlobalId": "4990", + "propLocalId": "2530", + "label": "Target-context", + "baseType": "reference:BinRef", + "modelType": "reln:Dn", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tDn": { + "versions": "1.0(1e)-", + "comment": [ + "The distinguished name of the target." + ], + "isConfigurable": false, + "propGlobalId": "100", + "propLocalId": "77", + "label": "Target-dn", + "baseType": "reference:BinRef", + "modelType": "reln:Dn", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tRn": { + "versions": "1.0(1e)-", + "comment": [ + "Specifies the target's related name." + ], + "isConfigurable": false, + "propGlobalId": "4989", + "propLocalId": "2529", + "label": "Target-rn", + "baseType": "string:Basic", + "modelType": "string:Basic", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tType": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the type of target. The target type for this object is named." + ], + "isConfigurable": false, + "propGlobalId": "4988", + "propLocalId": "81", + "label": "Target Type", + "baseType": "scalar:Enum8", + "modelType": "reln:TargetType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "all", + "platformFlavors": [ + + ], + "label": "All "}, + { "value": "name", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "0", "localName": "name", + "platformFlavors": [ + + ], + "label": "Name "} + ], + "default": "name", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tnVzBrCPName": { + "versions": "1.0(1e)-", + "comment": [ + "The consumer contract name." + ], + "isConfigurable": true, + "propGlobalId": "12198", + "propLocalId": "3977", + "label": "Name", + "baseType": "string:Basic", + "modelType": "naming:Name", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": false, + "readOnly": false, + "isNaming": true, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 1, "max": 64, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "triggerSt": { + "versions": "1.0(1e)-", + "comment": [ + "The ability to trigger a task" + ], + "isConfigurable": false, + "propGlobalId": "1723", + "propLocalId": "898", + "label": "Ability to Trigger Task", + "baseType": "scalar:Enum8", + "modelType": "fv:TriggerSt", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "not_triggerable", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "not_triggerable", + "platformFlavors": [ + + ], + "label": "not_triggerable "}, + { "value": "1", "localName": "triggerable", + "platformFlavors": [ + + ], + "label": "triggerable "} + ], + "default": "not_triggerable", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "uid": { + "versions": "1.0(1e)-", + "comment": [ + "A unique identifier for this object." + ], + "isConfigurable": false, + "propGlobalId": "8", + "propLocalId": "8", + "label": "uid", + "baseType": "scalar:Uint16", + "modelType": "scalar:Uint16", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "updateCollection": { + "versions": "1.1(1j)-", + "isConfigurable": false, + "propGlobalId": "20832", + "propLocalId": "5372", + "label": "Implicitly Set Transaction Update", + "baseType": "scalar:Bool", + "modelType": "scalar:Bool", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "false", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "false", "localName": "no", + "platformFlavors": [ + + ], + "label": "No "}, + { "value": "true", "localName": "yes", + "platformFlavors": [ + + ], + "label": "Yes "} + ], + "default": "no", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "userdom": { + "versions": "5.0(1k)-", + "isConfigurable": true, + "propGlobalId": "60657", + "propLocalId": "13244", + "label": "userdom", + "baseType": "string:Basic", + "modelType": "mo:UserDomType", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 1024, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "validValues": [ + { "value": "all", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "all", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + } + } + } +} diff --git a/gen/meta/fvRsConsIf.json b/gen/meta/fvRsConsIf.json new file mode 100644 index 000000000..04cbfa455 --- /dev/null +++ b/gen/meta/fvRsConsIf.json @@ -0,0 +1,1267 @@ +{ + "fv:RsConsIf": { + "contains": { + "aaa:RbacAnnotation": "", + "fault:Counts": "", + "fault:Inst": "", + "health:Inst": "", + "tag:AliasDelInst": "", + "tag:AliasInst": "", + "tag:Annotation": "", + "tag:ExtMngdInst": "", + "tag:Inst": "", + "tag:Tag": "", + "vz:ConsLbl": "", + "vz:ConsSubjLbl": "" + }, + "rnMap": { + "alias": "tag:AliasInst", + "aliasdel-": "tag:AliasDelInst", + "annotationKey-": "tag:Annotation", + "conslbl-": "vz:ConsLbl", + "conssubjlbl-": "vz:ConsSubjLbl", + "extmngd": "tag:ExtMngdInst", + "fault-": "fault:Inst", + "fltCnts": "fault:Counts", + "health": "health:Inst", + "rbacDom-": "aaa:RbacAnnotation", + "tag-": "tag:Inst", + "tagKey-": "tag:Tag" + }, + "identifiedBy": [ + "tnVzCPIfName" + ], + "rnFormat": "rsconsIf-{tnVzCPIfName}", + "containedBy": { + "cloud:EPg": "", + "cloud:ExtEPg": "", + "cloud:ISvcEPg": "", + "cloud:SvcEPg": "", + "dhcp:CRelPg": "", + "dhcp:PRelPg": "", + "fv:AEPg": "", + "fv:ESg": "", + "fv:IntEPg": "", + "fv:TnlEPg": "", + "infra:CEPg": "", + "infra:PEPg": "", + "l2ext:InstP": "", + "l3ext:InstP": "", + "l3ext:InstPDef": "", + "mgmt:InB": "", + "vns:EPpInfo": "", + "vns:REPpInfo": "", + "vns:SDEPpInfo": "", + "vns:SHEPpInfo": "" + }, + "superClasses": [ + "fv:EPgToInterface", + "pol:NToRef", + "reln:To", + "reln:Inst" + ], + "subClasses": { + + }, + "relationInfo": { + "type": "named", + "cardinality": "n-to-m", + "fromMo": "fv:EPg", + "fromRelMo": "fv:RsConsIf", + "toMo": "vz:CPIf", + "toRelMo": "vz:RtConsIf", + "enforceable": true, + "resolvable": true + }, + "dnFormats": [ + "uni/tn-{name}/intap/intepg-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/cloudapp-{name}/cloudsvcepg-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/cloudapp-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/ap-{name}/esg-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/cloudapp-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/cloudapp-{name}/rsconsIf-{tnVzCPIfName}", + "uni/svcdefcont/tensvcdef-{name}/ldevdef-[{lDevDn}]/sepg-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/ldevdef-[{lDevDn}]/sepg-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/cloudapp-{name}/sepg-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/cloudapp-{name}/cloudextepg-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/cloudapp-{name}/cloudepg-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/cloudapp-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/Tnlepg-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/epgDn-[{shEpgDn}]/rsconsIf-{tnVzCPIfName}", + "outdefcont-{id}/rsoutDefContToOut-[{tDn}]/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/acIpToIp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/acExtToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/acEpToExt-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/acEpToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/acAnyToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/acEpToAny-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/epgToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/epToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/ipToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/epgToIp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/epgToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/epp/sec-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/epp/fv-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/epp/rtd-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/ldevCtx-c-{ctrctNameOrLbl}-g-{graphNameOrLbl}-n-{nodeNameOrLbl}/lIfCtx-c-{connNameOrLbl}/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/outdef-{name}/instPdef-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/bd-[{bdDn}]/rsconsIf-{tnVzCPIfName}", + "uni/ldev-[{priKey}]-ctx-[{ctxDn}]-bd-[{bdDn}]/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/G-{graphRn}-N-{nodeRn}-C-{connRn}/rsconsIf-{tnVzCPIfName}", + "uni/vDev-[{priKey}]-tn-[{tnDn}]-ctx-{ctxName}/rndrInfo/eppContr/G-{graphRn}-N-{nodeRn}-C-{connRn}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/clp-{name}/cepg-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/provp-{name}/pepg-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/provp-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/clp-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/mgmtp-{name}/inb-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/ap-{name}/epg-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/out-{name}/instP-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/l2out-{name}/instP-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/clp-{name}/cdhcp-{name}/rsconsIf-{tnVzCPIfName}", + "uni/tn-{name}/provp-{name}/pdhcp-{name}/rsconsIf-{tnVzCPIfName}" + ], + "writeAccess": [ + "admin", + "tenant-epg", + "tenant-network-profile" + ], + "readAccess": [ + "admin", + "ops", + "tenant-epg", + "tenant-network-profile", + "tenant-security" + ], + "faults": { + "F0970": "fltFvRsConsIfResolveFail" + }, + "events": { + "E4214162": "creation||fv:RsConsIf", + "E4214163": "modification||fv:RsConsIf", + "E4214164": "deletion||fv:RsConsIf" + }, + "stats": { + + }, + "versions": "1.0(1e)-", + "isAbstract": false, + "isConfigurable": true, + "isContextRoot": false, + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false, + "isEncrypted": false, + "isExportable": true, + "isPersistent": true, + "isSubjectToQuota": true, + "isObservable": true, + "hasStats": false, + "isStat": false, + "isFaultable": true, + "isDomainable": false, + "isHealthScorable": true, + "shouldCollectHealthStats": false, + "healthCollectionSource": "faults", + "hasEventRules": false, + "abstractionLayer": "regular", + "apicNxProcessing": false, + "monitoringPolicySource": "Parent", + "isCreatableDeletable": "always", + "platformFlavors": [ + + ], + "classId": "1906", + "className": "RsConsIf", + "classPkg": "fv", + "featureTag": "", + "moCategory": "RelationshipToLocal", + "label": "Contract Interface", + "comment": [ + "A contract for which the EPG will be a consumer." + ], + "properties": { + "annotation": { + "versions": "3.2(1l)-", + "comment": [ + "User annotation. Suggested format orchestrator:value" + ], + "isConfigurable": true, + "propGlobalId": "37653", + "propLocalId": "8719", + "label": "Annotation", + "baseType": "string:Basic", + "modelType": "mo:Annotation", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 128, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "childAction": { + "versions": "1.0(1e)-", + "comment": [ + "Delete or ignore. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "4", + "propLocalId": "5", + "label": "childAction", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationChildAction", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "16384", "localName": "deleteAll", + "platformFlavors": [ + + ], + "label": "Delete All "}, + { "value": "8192", "localName": "deleteNonPresent", + "platformFlavors": [ + + ], + "label": "Delete Non Present "}, + { "value": "4096", "localName": "ignore", + "platformFlavors": [ + + ], + "label": "Ignore "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "deplInfo": { + "versions": "1.0(1e)-", + "comment": [ + "null" + ], + "isConfigurable": false, + "propGlobalId": "12217", + "propLocalId": "3978", + "label": "deplInfo", + "baseType": "scalar:Bitmask8", + "modelType": "vz:DeplInfo", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "8", "localName": "No_Matching_Provider", + "platformFlavors": [ + + ], + "label": "No Matching Provider "}, + { "value": "4", "localName": "No_Subjects", + "platformFlavors": [ + + ], + "label": "No Subjects "}, + { "value": "0", "localName": "None", + "platformFlavors": [ + + ], + "label": "None "}, + { "value": "2", "localName": "Not_Associated_To_Context", + "platformFlavors": [ + + ], + "label": "Not Associated To Context "}, + { "value": "1", "localName": "PCTag_Not_Allocated", + "platformFlavors": [ + + ], + "label": "PC Tag Not Allocated "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "dn": { + "versions": "1.0(1e)-", + "comment": [ + "A tag or metadata is a non-hierarchical keyword or term assigned to the fabric module." + ], + "isConfigurable": false, + "propGlobalId": "1", + "propLocalId": "2", + "label": "dn", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "extMngdBy": { + "versions": "3.2(1l)-", + "comment": [ + "Indicates which orchestrator is managing this MO" + ], + "isConfigurable": false, + "propGlobalId": "39792", + "propLocalId": "8023", + "label": "Managed By", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ExtMngdByType", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "undefined", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "msc", + "platformFlavors": [ + + ], + "label": "MSC "}, + { "value": "0", "localName": "undefined", + "platformFlavors": [ + + ], + "label": "Undefined "} + ], + "default": "undefined", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "forceResolve": { + "versions": "1.0(1e)-", + "comment": [ + "Whether the relation should force pull the target." + ], + "isConfigurable": false, + "propGlobalId": "107", + "propLocalId": "83", + "label": "Force Resolve", + "baseType": "scalar:Bool", + "modelType": "scalar:Bool", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "true", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "false", "localName": "no", + "platformFlavors": [ + + ], + "label": "No "}, + { "value": "true", "localName": "yes", + "platformFlavors": [ + + ], + "label": "Yes "} + ], + "default": "yes", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "lcOwn": { + "versions": "1.0(1e)-", + "comment": [ + "A value that indicates how this object was created. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "9", + "propLocalId": "9", + "label": "lcOwn", + "baseType": "scalar:Enum8", + "modelType": "mo:Owner", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "local", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "4", "localName": "implicit", + "platformFlavors": [ + + ], + "label": "Implicit "}, + { "value": "0", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "policy", + "platformFlavors": [ + + ], + "label": "Policy "}, + { "value": "2", "localName": "replica", + "platformFlavors": [ + + ], + "label": "Replica "}, + { "value": "3", "localName": "resolveOnBehalf", + "platformFlavors": [ + + ], + "label": "Resolved On Behalf "} + ], + "default": "local", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "modTs": { + "versions": "1.0(1e)-", + "comment": [ + "The time when this object was last modified." + ], + "isConfigurable": false, + "propGlobalId": "7", + "propLocalId": "7", + "label": "modTs", + "baseType": "scalar:Date", + "modelType": "mo:TStamp", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "never", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "never", + "platformFlavors": [ + + ], + "label": "Never "} + ], + "default": "never", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "monPolDn": { + "versions": "1.0(1e)-", + "comment": [ + "The monitoring policy attached to this observable object." + ], + "isConfigurable": false, + "propGlobalId": "14258", + "propLocalId": "228", + "label": "Monitoring Policy", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "prio": { + "versions": "1.0(1e)-", + "comment": [ + "The contract interface priority." + ], + "isConfigurable": true, + "propGlobalId": "12218", + "propLocalId": "172", + "label": "prio", + "baseType": "scalar:Enum8", + "modelType": "qos:TenantPrio", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 9 } + ], + "validValues": [ + { "value": "unspecified", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "3", "localName": "level1", + "platformFlavors": [ + + ], + "label": "Level1 "}, + { "value": "2", "localName": "level2", + "platformFlavors": [ + + ], + "label": "Level2 "}, + { "value": "1", "localName": "level3", + "platformFlavors": [ + + ], + "comment": [ + "User configurable classes" + ], + "label": "Level3 (Default) "}, + { "value": "9", "localName": "level4", + "platformFlavors": [ + + ], + "label": "Level4 "}, + { "value": "8", "localName": "level5", + "platformFlavors": [ + + ], + "label": "Level5 "}, + { "value": "7", "localName": "level6", + "platformFlavors": [ + + ], + "label": "Level6 "}, + { "value": "0", "localName": "unspecified", + "platformFlavors": [ + + ], + "label": "Unspecified "} + ], + "default": "unspecified", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rType": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the type of resolver." + ], + "isConfigurable": false, + "propGlobalId": "106", + "propLocalId": "82", + "label": "Resolver Type", + "baseType": "scalar:Enum8", + "modelType": "reln:ResolverType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "mo", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "3", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "2", "localName": "service", + "platformFlavors": [ + + ], + "label": "Service "} + ], + "default": "mo", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rn": { + "versions": "1.0(1e)-", + "comment": [ + "Identifies an object from its siblings within the context of its parent object. The distinguished name contains a sequence of relative names." + ], + "isConfigurable": false, + "propGlobalId": "2", + "propLocalId": "3", + "label": "rn", + "baseType": "reference:BinRN", + "modelType": "reference:BinRN", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "state": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "103", + "propLocalId": "26", + "label": "State", + "baseType": "scalar:Enum8", + "modelType": "reln:State", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "5", "localName": "cardinality-violation", + "platformFlavors": [ + + ], + "comment": [ + "cardinality violation - When relations are created such that\n they violate the cardinality, state of the relation would be\n set to this." + ], + "label": "Cardinality Violation "}, + { "value": "unformed", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "formed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is formed with the target object" + ], + "label": "Formed "}, + { "value": "4", "localName": "invalid-target", + "platformFlavors": [ + + ], + "comment": [ + "invalid target DN" + ], + "label": "Invalid Target "}, + { "value": "2", "localName": "missing-target", + "platformFlavors": [ + + ], + "comment": [ + "target does not exist" + ], + "label": "Missing Target "}, + { "value": "0", "localName": "unformed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is not formed" + ], + "label": "Unformed "} + ], + "default": "unformed", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "stateQual": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state qualifier of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "104", + "propLocalId": "80", + "label": "State Qualifier", + "baseType": "scalar:Enum8", + "modelType": "reln:StateQual", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "default-target", + "platformFlavors": [ + + ], + "comment": [ + "target not specified, using default" + ], + "label": "Target Not Specified "}, + { "value": "none", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mismatch-target", + "platformFlavors": [ + + ], + "comment": [ + "target not found, using default" + ], + "label": "Target Not Found "}, + { "value": "0", "localName": "none", + "platformFlavors": [ + + ], + "comment": [ + "no issue" + ], + "label": "None "} + ], + "default": "none", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "status": { + "versions": "1.0(1e)-", + "comment": [ + "The upgrade status. This property is for internal use only." + ], + "isConfigurable": false, + "propGlobalId": "3", + "propLocalId": "4", + "label": "status", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationStatus", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "created", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be created. An error is returned if the object already exists. \nIn the return value of a setter method: indicates that an object has been created. \n" + ], + "label": "Created "}, + { "value": "8", "localName": "deleted", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be deleted. \nIn the return value of a setter method: indicates that an object has been deleted.\n" + ], + "label": "Deleted "}, + { "value": "4", "localName": "modified", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be modified \nIn the return value of a setter method: indicates that an object has been modified.\n" + ], + "label": "Modified "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tCl": { + "versions": "1.0(1e)-", + "comment": [ + "null" + ], + "isConfigurable": false, + "propGlobalId": "12216", + "propLocalId": "78", + "label": "Target Class", + "baseType": "scalar:Enum16", + "modelType": "reln:ClassId", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validValues": [ + { "value": "1308", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "unspecified", + "platformFlavors": [ + + ], + "label": "unspecified "}, + { "value": "1308", "localName": "vzCPIf", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "vzCPIf", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tContextDn": { + "versions": "1.0(1e)-", + "comment": [ + "Specifies the target context distinguished name." + ], + "isConfigurable": false, + "propGlobalId": "4990", + "propLocalId": "2530", + "label": "Target-context", + "baseType": "reference:BinRef", + "modelType": "reln:Dn", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tDn": { + "versions": "1.0(1e)-", + "comment": [ + "The distinguished name of the target." + ], + "isConfigurable": false, + "propGlobalId": "100", + "propLocalId": "77", + "label": "Target-dn", + "baseType": "reference:BinRef", + "modelType": "reln:Dn", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tRn": { + "versions": "1.0(1e)-", + "comment": [ + "Specifies the target's related name." + ], + "isConfigurable": false, + "propGlobalId": "4989", + "propLocalId": "2529", + "label": "Target-rn", + "baseType": "string:Basic", + "modelType": "string:Basic", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tType": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the type of target. The target type for this object is named." + ], + "isConfigurable": false, + "propGlobalId": "4988", + "propLocalId": "81", + "label": "Target Type", + "baseType": "scalar:Enum8", + "modelType": "reln:TargetType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "all", + "platformFlavors": [ + + ], + "label": "All "}, + { "value": "name", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "0", "localName": "name", + "platformFlavors": [ + + ], + "label": "Name "} + ], + "default": "name", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tnVzCPIfName": { + "versions": "1.0(1e)-", + "comment": [ + "The contract interface name." + ], + "isConfigurable": true, + "propGlobalId": "12215", + "propLocalId": "3981", + "label": "Name", + "baseType": "string:Basic", + "modelType": "naming:Name", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": false, + "readOnly": false, + "isNaming": true, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 1, "max": 64, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "uid": { + "versions": "1.0(1e)-", + "comment": [ + "A unique identifier for this object." + ], + "isConfigurable": false, + "propGlobalId": "8", + "propLocalId": "8", + "label": "uid", + "baseType": "scalar:Uint16", + "modelType": "scalar:Uint16", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "updateCollection": { + "versions": "1.1(1j)-", + "isConfigurable": false, + "propGlobalId": "20833", + "propLocalId": "5372", + "label": "Implicitly Set Transaction Update", + "baseType": "scalar:Bool", + "modelType": "scalar:Bool", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "false", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "false", "localName": "no", + "platformFlavors": [ + + ], + "label": "No "}, + { "value": "true", "localName": "yes", + "platformFlavors": [ + + ], + "label": "Yes "} + ], + "default": "no", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "userdom": { + "versions": "5.0(1k)-", + "isConfigurable": true, + "propGlobalId": "60657", + "propLocalId": "13244", + "label": "userdom", + "baseType": "string:Basic", + "modelType": "mo:UserDomType", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 1024, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "validValues": [ + { "value": "all", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "all", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + } + } + } +} diff --git a/gen/meta/fvRsIntraEpg.json b/gen/meta/fvRsIntraEpg.json new file mode 100644 index 000000000..b712335fc --- /dev/null +++ b/gen/meta/fvRsIntraEpg.json @@ -0,0 +1,1278 @@ +{ + "fv:RsIntraEpg": { + "contains": { + "aaa:RbacAnnotation": "", + "fault:Counts": "", + "fault:Inst": "", + "fv:CollectionCont": "", + "health:Inst": "", + "tag:AliasDelInst": "", + "tag:AliasInst": "", + "tag:Annotation": "", + "tag:ExtMngdInst": "", + "tag:Inst": "", + "tag:Tag": "" + }, + "rnMap": { + "alias": "tag:AliasInst", + "aliasdel-": "tag:AliasDelInst", + "annotationKey-": "tag:Annotation", + "collectionDn-": "fv:CollectionCont", + "extmngd": "tag:ExtMngdInst", + "fault-": "fault:Inst", + "fltCnts": "fault:Counts", + "health": "health:Inst", + "rbacDom-": "aaa:RbacAnnotation", + "tag-": "tag:Inst", + "tagKey-": "tag:Tag" + }, + "identifiedBy": [ + "tnVzBrCPName" + ], + "rnFormat": "rsintraEpg-{tnVzBrCPName}", + "containedBy": { + "cloud:EPg": "", + "cloud:ExtEPg": "", + "cloud:ISvcEPg": "", + "cloud:SvcEPg": "", + "dhcp:CRelPg": "", + "dhcp:PRelPg": "", + "fv:AEPg": "", + "fv:ESg": "", + "fv:IntEPg": "", + "fv:TnlEPg": "", + "infra:CEPg": "", + "infra:PEPg": "", + "l2ext:InstP": "", + "l3ext:InstP": "", + "l3ext:InstPDef": "", + "mgmt:InB": "", + "vns:EPpInfo": "", + "vns:REPpInfo": "", + "vns:SDEPpInfo": "", + "vns:SHEPpInfo": "" + }, + "superClasses": [ + "fv:EPgToCollection", + "pol:NToRef", + "reln:To", + "reln:Inst" + ], + "subClasses": { + + }, + "relationInfo": { + "type": "named", + "cardinality": "n-to-m", + "fromMo": "fv:EPg", + "fromRelMo": "fv:RsIntraEpg", + "toMo": "vz:BrCP", + "toRelMo": "vz:RtIntraEpg", + "enforceable": true, + "resolvable": true + }, + "dnFormats": [ + "uni/tn-{name}/intap/intepg-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/cloudsvcepg-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/ap-{name}/esg-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/svcdefcont/tensvcdef-{name}/ldevdef-[{lDevDn}]/sepg-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/ldevdef-[{lDevDn}]/sepg-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/sepg-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/cloudextepg-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/cloudepg-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/Tnlepg-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/epgDn-[{shEpgDn}]/rsintraEpg-{tnVzBrCPName}", + "outdefcont-{id}/rsoutDefContToOut-[{tDn}]/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/acIpToIp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/acExtToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/acEpToExt-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/acEpToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/acAnyToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/acEpToAny-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/epgToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/epToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/ipToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/epgToIp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/epgToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/epp/sec-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/epp/fv-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/epp/rtd-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/ldevCtx-c-{ctrctNameOrLbl}-g-{graphNameOrLbl}-n-{nodeNameOrLbl}/lIfCtx-c-{connNameOrLbl}/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/outdef-{name}/instPdef-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/bd-[{bdDn}]/rsintraEpg-{tnVzBrCPName}", + "uni/ldev-[{priKey}]-ctx-[{ctxDn}]-bd-[{bdDn}]/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/G-{graphRn}-N-{nodeRn}-C-{connRn}/rsintraEpg-{tnVzBrCPName}", + "uni/vDev-[{priKey}]-tn-[{tnDn}]-ctx-{ctxName}/rndrInfo/eppContr/G-{graphRn}-N-{nodeRn}-C-{connRn}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/clp-{name}/cepg-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/provp-{name}/pepg-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/provp-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/clp-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/mgmtp-{name}/inb-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/ap-{name}/epg-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/out-{name}/instP-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/l2out-{name}/instP-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/clp-{name}/cdhcp-{name}/rsintraEpg-{tnVzBrCPName}", + "uni/tn-{name}/provp-{name}/pdhcp-{name}/rsintraEpg-{tnVzBrCPName}" + ], + "writeAccess": [ + "admin", + "tenant-epg", + "tenant-network-profile" + ], + "readAccess": [ + "admin", + "ops", + "tenant-epg", + "tenant-network-profile" + ], + "faults": { + "F2774": "fltFvRsIntraEpgResolveFail" + }, + "events": { + "E4214955": "creation||fv:RsIntraEpg", + "E4214956": "modification||fv:RsIntraEpg", + "E4214957": "deletion||fv:RsIntraEpg" + }, + "stats": { + + }, + "versions": "3.0(1k)-", + "isAbstract": false, + "isConfigurable": true, + "isContextRoot": false, + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false, + "isEncrypted": false, + "isExportable": true, + "isPersistent": true, + "isSubjectToQuota": false, + "isObservable": true, + "hasStats": false, + "isStat": false, + "isFaultable": true, + "isDomainable": false, + "isHealthScorable": true, + "shouldCollectHealthStats": false, + "healthCollectionSource": "faults", + "hasEventRules": false, + "abstractionLayer": "regular", + "apicNxProcessing": false, + "monitoringPolicySource": "Parent", + "isCreatableDeletable": "always", + "platformFlavors": [ + + ], + "classId": "10690", + "className": "RsIntraEpg", + "classPkg": "fv", + "featureTag": "", + "moCategory": "RelationshipToLocal", + "label": "Intra EPg Contract", + "comment": [ + "Intra EPg contract:\n Represents that the EPg is moving from \"allow all within epg\" mode\n to a \"deny all within epg\" mode.\n The only type of traffic allowed between EPs in this EPg is the one\n specified by contracts EPg associates to with this relation." + ], + "properties": { + "annotation": { + "versions": "3.2(1l)-", + "comment": [ + "User annotation. Suggested format orchestrator:value" + ], + "isConfigurable": true, + "propGlobalId": "38701", + "propLocalId": "8719", + "label": "Annotation", + "baseType": "string:Basic", + "modelType": "mo:Annotation", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 128, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "childAction": { + "versions": "1.0(1e)-", + "comment": [ + "Delete or ignore. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "4", + "propLocalId": "5", + "label": "childAction", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationChildAction", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "16384", "localName": "deleteAll", + "platformFlavors": [ + + ], + "label": "Delete All "}, + { "value": "8192", "localName": "deleteNonPresent", + "platformFlavors": [ + + ], + "label": "Delete Non Present "}, + { "value": "4096", "localName": "ignore", + "platformFlavors": [ + + ], + "label": "Ignore "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "ctrctUpd": { + "versions": "1.0(1e)-", + "comment": [ + "Indicates if the information about the contract/bundle/group an endpoint group is associated to will be sent from the endpoint group shard or contract shard." + ], + "isConfigurable": false, + "propGlobalId": "1722", + "propLocalId": "563", + "label": "Contract Update", + "baseType": "scalar:Enum8", + "modelType": "fv:CtrctUpd", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "0", "localName": "ctrct", + "platformFlavors": [ + + ], + "label": "Contract "}, + { "value": "not_defined", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "epg", + "platformFlavors": [ + + ], + "label": "EPG "}, + { "value": "0", "localName": "not_defined", + "platformFlavors": [ + + ], + "label": "Not Defined "} + ], + "default": "not_defined", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "dn": { + "versions": "1.0(1e)-", + "comment": [ + "A tag or metadata is a non-hierarchical keyword or term assigned to the fabric module." + ], + "isConfigurable": false, + "propGlobalId": "1", + "propLocalId": "2", + "label": "dn", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "extMngdBy": { + "versions": "3.2(1l)-", + "comment": [ + "Indicates which orchestrator is managing this MO" + ], + "isConfigurable": false, + "propGlobalId": "40840", + "propLocalId": "8023", + "label": "Managed By", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ExtMngdByType", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "undefined", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "msc", + "platformFlavors": [ + + ], + "label": "MSC "}, + { "value": "0", "localName": "undefined", + "platformFlavors": [ + + ], + "label": "Undefined "} + ], + "default": "undefined", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "forceResolve": { + "versions": "1.0(1e)-", + "comment": [ + "Whether the relation should force pull the target." + ], + "isConfigurable": false, + "propGlobalId": "107", + "propLocalId": "83", + "label": "Force Resolve", + "baseType": "scalar:Bool", + "modelType": "scalar:Bool", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "true", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "false", "localName": "no", + "platformFlavors": [ + + ], + "label": "No "}, + { "value": "true", "localName": "yes", + "platformFlavors": [ + + ], + "label": "Yes "} + ], + "default": "yes", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "intent": { + "versions": "4.2(1i)-", + "isConfigurable": true, + "propGlobalId": "55646", + "propLocalId": "12600", + "label": "Install Rules or Estimate Number of Rules", + "baseType": "scalar:Enum8", + "modelType": "vz:Intent", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "install", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "2", "localName": "estimate_add", + "platformFlavors": [ + + ], + "label": "Process Configuration and Estimate Number of Rules for Adding Contract "}, + { "value": "1", "localName": "estimate_delete", + "platformFlavors": [ + + ], + "label": "Process Configuration and Estimate Number of Rules for Deleting Contract "}, + { "value": "0", "localName": "install", + "platformFlavors": [ + + ], + "label": "Install Rules in Hardware "} + ], + "default": "install", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "lcOwn": { + "versions": "1.0(1e)-", + "comment": [ + "A value that indicates how this object was created. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "9", + "propLocalId": "9", + "label": "lcOwn", + "baseType": "scalar:Enum8", + "modelType": "mo:Owner", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "local", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "4", "localName": "implicit", + "platformFlavors": [ + + ], + "label": "Implicit "}, + { "value": "0", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "policy", + "platformFlavors": [ + + ], + "label": "Policy "}, + { "value": "2", "localName": "replica", + "platformFlavors": [ + + ], + "label": "Replica "}, + { "value": "3", "localName": "resolveOnBehalf", + "platformFlavors": [ + + ], + "label": "Resolved On Behalf "} + ], + "default": "local", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "modTs": { + "versions": "1.0(1e)-", + "comment": [ + "The time when this object was last modified." + ], + "isConfigurable": false, + "propGlobalId": "7", + "propLocalId": "7", + "label": "modTs", + "baseType": "scalar:Date", + "modelType": "mo:TStamp", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "never", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "never", + "platformFlavors": [ + + ], + "label": "Never "} + ], + "default": "never", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "monPolDn": { + "versions": "3.0(1k)-", + "comment": [ + "The monitoring policy attached to this observable object." + ], + "isConfigurable": false, + "propGlobalId": "33323", + "propLocalId": "228", + "label": "Monitoring Policy", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rType": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the type of resolver." + ], + "isConfigurable": false, + "propGlobalId": "106", + "propLocalId": "82", + "label": "Resolver Type", + "baseType": "scalar:Enum8", + "modelType": "reln:ResolverType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "mo", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "3", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "2", "localName": "service", + "platformFlavors": [ + + ], + "label": "Service "} + ], + "default": "mo", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rn": { + "versions": "1.0(1e)-", + "comment": [ + "Identifies an object from its siblings within the context of its parent object. The distinguished name contains a sequence of relative names." + ], + "isConfigurable": false, + "propGlobalId": "2", + "propLocalId": "3", + "label": "rn", + "baseType": "reference:BinRN", + "modelType": "reference:BinRN", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "state": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "103", + "propLocalId": "26", + "label": "State", + "baseType": "scalar:Enum8", + "modelType": "reln:State", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "5", "localName": "cardinality-violation", + "platformFlavors": [ + + ], + "comment": [ + "cardinality violation - When relations are created such that\n they violate the cardinality, state of the relation would be\n set to this." + ], + "label": "Cardinality Violation "}, + { "value": "unformed", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "formed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is formed with the target object" + ], + "label": "Formed "}, + { "value": "4", "localName": "invalid-target", + "platformFlavors": [ + + ], + "comment": [ + "invalid target DN" + ], + "label": "Invalid Target "}, + { "value": "2", "localName": "missing-target", + "platformFlavors": [ + + ], + "comment": [ + "target does not exist" + ], + "label": "Missing Target "}, + { "value": "0", "localName": "unformed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is not formed" + ], + "label": "Unformed "} + ], + "default": "unformed", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "stateQual": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state qualifier of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "104", + "propLocalId": "80", + "label": "State Qualifier", + "baseType": "scalar:Enum8", + "modelType": "reln:StateQual", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "default-target", + "platformFlavors": [ + + ], + "comment": [ + "target not specified, using default" + ], + "label": "Target Not Specified "}, + { "value": "none", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mismatch-target", + "platformFlavors": [ + + ], + "comment": [ + "target not found, using default" + ], + "label": "Target Not Found "}, + { "value": "0", "localName": "none", + "platformFlavors": [ + + ], + "comment": [ + "no issue" + ], + "label": "None "} + ], + "default": "none", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "status": { + "versions": "1.0(1e)-", + "comment": [ + "The upgrade status. This property is for internal use only." + ], + "isConfigurable": false, + "propGlobalId": "3", + "propLocalId": "4", + "label": "status", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationStatus", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "created", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be created. An error is returned if the object already exists. \nIn the return value of a setter method: indicates that an object has been created. \n" + ], + "label": "Created "}, + { "value": "8", "localName": "deleted", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be deleted. \nIn the return value of a setter method: indicates that an object has been deleted.\n" + ], + "label": "Deleted "}, + { "value": "4", "localName": "modified", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be modified \nIn the return value of a setter method: indicates that an object has been modified.\n" + ], + "label": "Modified "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tCl": { + "versions": "3.0(1k)-", + "comment": [ + "The class ID of the target object. This property is managed internally and should not be modified by the user." + ], + "isConfigurable": false, + "propGlobalId": "33320", + "propLocalId": "78", + "label": "Target Class", + "baseType": "scalar:Enum16", + "modelType": "reln:ClassId", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validValues": [ + { "value": "1300", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "unspecified", + "platformFlavors": [ + + ], + "label": "unspecified "}, + { "value": "1300", "localName": "vzBrCP", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "vzBrCP", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tContextDn": { + "versions": "1.0(1e)-", + "comment": [ + "Specifies the target context distinguished name." + ], + "isConfigurable": false, + "propGlobalId": "4990", + "propLocalId": "2530", + "label": "Target-context", + "baseType": "reference:BinRef", + "modelType": "reln:Dn", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tDn": { + "versions": "1.0(1e)-", + "comment": [ + "The distinguished name of the target." + ], + "isConfigurable": false, + "propGlobalId": "100", + "propLocalId": "77", + "label": "Target-dn", + "baseType": "reference:BinRef", + "modelType": "reln:Dn", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tRn": { + "versions": "1.0(1e)-", + "comment": [ + "Specifies the target's related name." + ], + "isConfigurable": false, + "propGlobalId": "4989", + "propLocalId": "2529", + "label": "Target-rn", + "baseType": "string:Basic", + "modelType": "string:Basic", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tType": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the type of target. The target type for this object is named." + ], + "isConfigurable": false, + "propGlobalId": "4988", + "propLocalId": "81", + "label": "Target Type", + "baseType": "scalar:Enum8", + "modelType": "reln:TargetType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "all", + "platformFlavors": [ + + ], + "label": "All "}, + { "value": "name", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "0", "localName": "name", + "platformFlavors": [ + + ], + "label": "Name "} + ], + "default": "name", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tnVzBrCPName": { + "versions": "3.0(1k)-", + "comment": [ + "The binary contract name." + ], + "isConfigurable": true, + "propGlobalId": "33319", + "propLocalId": "3977", + "label": "Name", + "baseType": "string:Basic", + "modelType": "naming:Name", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": false, + "readOnly": false, + "isNaming": true, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 1, "max": 64, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "triggerSt": { + "versions": "1.0(1e)-", + "comment": [ + "The ability to trigger a task" + ], + "isConfigurable": false, + "propGlobalId": "1723", + "propLocalId": "898", + "label": "Ability to Trigger Task", + "baseType": "scalar:Enum8", + "modelType": "fv:TriggerSt", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "not_triggerable", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "not_triggerable", + "platformFlavors": [ + + ], + "label": "not_triggerable "}, + { "value": "1", "localName": "triggerable", + "platformFlavors": [ + + ], + "label": "triggerable "} + ], + "default": "not_triggerable", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "uid": { + "versions": "1.0(1e)-", + "comment": [ + "A unique identifier for this object." + ], + "isConfigurable": false, + "propGlobalId": "8", + "propLocalId": "8", + "label": "uid", + "baseType": "scalar:Uint16", + "modelType": "scalar:Uint16", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "updateCollection": { + "versions": "1.1(1j)-", + "isConfigurable": false, + "propGlobalId": "20832", + "propLocalId": "5372", + "label": "Implicitly Set Transaction Update", + "baseType": "scalar:Bool", + "modelType": "scalar:Bool", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "false", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "false", "localName": "no", + "platformFlavors": [ + + ], + "label": "No "}, + { "value": "true", "localName": "yes", + "platformFlavors": [ + + ], + "label": "Yes "} + ], + "default": "no", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "userdom": { + "versions": "5.0(1k)-", + "isConfigurable": true, + "propGlobalId": "60657", + "propLocalId": "13244", + "label": "userdom", + "baseType": "string:Basic", + "modelType": "mo:UserDomType", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 1024, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "validValues": [ + { "value": "all", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "all", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + } + } + } +} diff --git a/gen/meta/fvRsProtBy.json b/gen/meta/fvRsProtBy.json new file mode 100644 index 000000000..1d1e06210 --- /dev/null +++ b/gen/meta/fvRsProtBy.json @@ -0,0 +1,1123 @@ +{ + "fv:RsProtBy": { + "contains": { + "aaa:RbacAnnotation": "", + "fault:Counts": "", + "fault:Inst": "", + "fv:TabooCtxDefCont": "", + "health:Inst": "", + "tag:Annotation": "", + "tag:Tag": "" + }, + "rnMap": { + "annotationKey-": "tag:Annotation", + "fault-": "fault:Inst", + "fltCnts": "fault:Counts", + "health": "health:Inst", + "rbacDom-": "aaa:RbacAnnotation", + "tabooCtxdefDn-": "fv:TabooCtxDefCont", + "tagKey-": "tag:Tag" + }, + "identifiedBy": [ + "tnVzTabooName" + ], + "rnFormat": "rsprotBy-{tnVzTabooName}", + "containedBy": { + "cloud:EPg": "", + "cloud:ExtEPg": "", + "cloud:ISvcEPg": "", + "cloud:SvcEPg": "", + "dhcp:CRelPg": "", + "dhcp:PRelPg": "", + "fv:AEPg": "", + "fv:ESg": "", + "fv:IntEPg": "", + "fv:TnlEPg": "", + "infra:CEPg": "", + "infra:PEPg": "", + "l2ext:InstP": "", + "l3ext:InstP": "", + "l3ext:InstPDef": "", + "mgmt:InB": "", + "vns:EPpInfo": "", + "vns:REPpInfo": "", + "vns:SDEPpInfo": "", + "vns:SHEPpInfo": "" + }, + "superClasses": [ + "pol:NToRef", + "reln:To", + "reln:Inst" + ], + "subClasses": { + + }, + "relationInfo": { + "type": "named", + "cardinality": "n-to-m", + "fromMo": "fv:EPg", + "fromRelMo": "fv:RsProtBy", + "toMo": "vz:Taboo", + "toRelMo": "vz:RtProtBy", + "enforceable": true, + "resolvable": true + }, + "dnFormats": [ + "uni/tn-{name}/intap/intepg-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/cloudapp-{name}/cloudsvcepg-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/cloudapp-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/ap-{name}/esg-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/cloudapp-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/cloudapp-{name}/rsprotBy-{tnVzTabooName}", + "uni/svcdefcont/tensvcdef-{name}/ldevdef-[{lDevDn}]/sepg-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/ldevdef-[{lDevDn}]/sepg-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/cloudapp-{name}/sepg-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/cloudapp-{name}/cloudextepg-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/cloudapp-{name}/cloudepg-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/cloudapp-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/Tnlepg-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/epgDn-[{shEpgDn}]/rsprotBy-{tnVzTabooName}", + "outdefcont-{id}/rsoutDefContToOut-[{tDn}]/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/acIpToIp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/acExtToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/acEpToExt-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/acEpToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/acAnyToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/acEpToAny-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/epgToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/epToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/ipToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/epgToIp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/epgToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/epp/sec-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/epp/fv-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/epp/rtd-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/ldevCtx-c-{ctrctNameOrLbl}-g-{graphNameOrLbl}-n-{nodeNameOrLbl}/lIfCtx-c-{connNameOrLbl}/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/outdef-{name}/instPdef-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/bd-[{bdDn}]/rsprotBy-{tnVzTabooName}", + "uni/ldev-[{priKey}]-ctx-[{ctxDn}]-bd-[{bdDn}]/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/G-{graphRn}-N-{nodeRn}-C-{connRn}/rsprotBy-{tnVzTabooName}", + "uni/vDev-[{priKey}]-tn-[{tnDn}]-ctx-{ctxName}/rndrInfo/eppContr/G-{graphRn}-N-{nodeRn}-C-{connRn}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/clp-{name}/cepg-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/provp-{name}/pepg-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/provp-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/clp-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/mgmtp-{name}/inb-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/ap-{name}/epg-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/out-{name}/instP-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/l2out-{name}/instP-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/clp-{name}/cdhcp-{name}/rsprotBy-{tnVzTabooName}", + "uni/tn-{name}/provp-{name}/pdhcp-{name}/rsprotBy-{tnVzTabooName}" + ], + "writeAccess": [ + "admin", + "tenant-epg", + "tenant-network-profile" + ], + "readAccess": [ + "admin", + "tenant-epg", + "tenant-network-profile" + ], + "faults": { + "F0973": "fltFvRsProtByResolveFail" + }, + "events": { + "E4214180": "creation||fv:RsProtBy", + "E4214181": "modification||fv:RsProtBy", + "E4214182": "deletion||fv:RsProtBy" + }, + "stats": { + + }, + "versions": "1.0(1e)-", + "isAbstract": false, + "isConfigurable": true, + "isContextRoot": false, + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false, + "isEncrypted": false, + "isExportable": true, + "isPersistent": true, + "isSubjectToQuota": true, + "isObservable": true, + "hasStats": false, + "isStat": false, + "isFaultable": true, + "isDomainable": false, + "isHealthScorable": true, + "shouldCollectHealthStats": false, + "healthCollectionSource": "faults", + "hasEventRules": false, + "abstractionLayer": "regular", + "apicNxProcessing": false, + "monitoringPolicySource": "Parent", + "isCreatableDeletable": "always", + "platformFlavors": [ + + ], + "classId": "1916", + "className": "RsProtBy", + "classPkg": "fv", + "featureTag": "", + "moCategory": "RelationshipToLocal", + "label": "Taboo Contract Association", + "comment": [ + "The taboo contract for which the EPG will be a provider and consumer." + ], + "properties": { + "annotation": { + "versions": "3.2(1l)-", + "comment": [ + "User annotation. Suggested format orchestrator:value" + ], + "isConfigurable": true, + "propGlobalId": "37654", + "propLocalId": "8719", + "label": "Annotation", + "baseType": "string:Basic", + "modelType": "mo:Annotation", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 128, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "childAction": { + "versions": "1.0(1e)-", + "comment": [ + "Delete or ignore. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "4", + "propLocalId": "5", + "label": "childAction", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationChildAction", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "16384", "localName": "deleteAll", + "platformFlavors": [ + + ], + "label": "Delete All "}, + { "value": "8192", "localName": "deleteNonPresent", + "platformFlavors": [ + + ], + "label": "Delete Non Present "}, + { "value": "4096", "localName": "ignore", + "platformFlavors": [ + + ], + "label": "Ignore "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "dn": { + "versions": "1.0(1e)-", + "comment": [ + "A tag or metadata is a non-hierarchical keyword or term assigned to the fabric module." + ], + "isConfigurable": false, + "propGlobalId": "1", + "propLocalId": "2", + "label": "dn", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "extMngdBy": { + "versions": "3.2(1l)-", + "comment": [ + "Indicates which orchestrator is managing this MO" + ], + "isConfigurable": false, + "propGlobalId": "39793", + "propLocalId": "8023", + "label": "Managed By", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ExtMngdByType", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "undefined", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "msc", + "platformFlavors": [ + + ], + "label": "MSC "}, + { "value": "0", "localName": "undefined", + "platformFlavors": [ + + ], + "label": "Undefined "} + ], + "default": "undefined", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "forceResolve": { + "versions": "1.0(1e)-", + "comment": [ + "Whether the relation should force pull the target." + ], + "isConfigurable": false, + "propGlobalId": "107", + "propLocalId": "83", + "label": "Force Resolve", + "baseType": "scalar:Bool", + "modelType": "scalar:Bool", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "true", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "false", "localName": "no", + "platformFlavors": [ + + ], + "label": "No "}, + { "value": "true", "localName": "yes", + "platformFlavors": [ + + ], + "label": "Yes "} + ], + "default": "yes", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "lcOwn": { + "versions": "1.0(1e)-", + "comment": [ + "A value that indicates how this object was created. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "9", + "propLocalId": "9", + "label": "lcOwn", + "baseType": "scalar:Enum8", + "modelType": "mo:Owner", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "local", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "4", "localName": "implicit", + "platformFlavors": [ + + ], + "label": "Implicit "}, + { "value": "0", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "policy", + "platformFlavors": [ + + ], + "label": "Policy "}, + { "value": "2", "localName": "replica", + "platformFlavors": [ + + ], + "label": "Replica "}, + { "value": "3", "localName": "resolveOnBehalf", + "platformFlavors": [ + + ], + "label": "Resolved On Behalf "} + ], + "default": "local", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "modTs": { + "versions": "1.0(1e)-", + "comment": [ + "The time when this object was last modified." + ], + "isConfigurable": false, + "propGlobalId": "7", + "propLocalId": "7", + "label": "modTs", + "baseType": "scalar:Date", + "modelType": "mo:TStamp", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "never", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "never", + "platformFlavors": [ + + ], + "label": "Never "} + ], + "default": "never", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "monPolDn": { + "versions": "1.0(1e)-", + "comment": [ + "The monitoring policy attached to this observable object." + ], + "isConfigurable": false, + "propGlobalId": "14263", + "propLocalId": "228", + "label": "Monitoring Policy", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rType": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the type of resolver." + ], + "isConfigurable": false, + "propGlobalId": "106", + "propLocalId": "82", + "label": "Resolver Type", + "baseType": "scalar:Enum8", + "modelType": "reln:ResolverType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "mo", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "3", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "2", "localName": "service", + "platformFlavors": [ + + ], + "label": "Service "} + ], + "default": "mo", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rn": { + "versions": "1.0(1e)-", + "comment": [ + "Identifies an object from its siblings within the context of its parent object. The distinguished name contains a sequence of relative names." + ], + "isConfigurable": false, + "propGlobalId": "2", + "propLocalId": "3", + "label": "rn", + "baseType": "reference:BinRN", + "modelType": "reference:BinRN", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "state": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "103", + "propLocalId": "26", + "label": "State", + "baseType": "scalar:Enum8", + "modelType": "reln:State", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "5", "localName": "cardinality-violation", + "platformFlavors": [ + + ], + "comment": [ + "cardinality violation - When relations are created such that\n they violate the cardinality, state of the relation would be\n set to this." + ], + "label": "Cardinality Violation "}, + { "value": "unformed", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "formed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is formed with the target object" + ], + "label": "Formed "}, + { "value": "4", "localName": "invalid-target", + "platformFlavors": [ + + ], + "comment": [ + "invalid target DN" + ], + "label": "Invalid Target "}, + { "value": "2", "localName": "missing-target", + "platformFlavors": [ + + ], + "comment": [ + "target does not exist" + ], + "label": "Missing Target "}, + { "value": "0", "localName": "unformed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is not formed" + ], + "label": "Unformed "} + ], + "default": "unformed", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "stateQual": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state qualifier of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "104", + "propLocalId": "80", + "label": "State Qualifier", + "baseType": "scalar:Enum8", + "modelType": "reln:StateQual", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "default-target", + "platformFlavors": [ + + ], + "comment": [ + "target not specified, using default" + ], + "label": "Target Not Specified "}, + { "value": "none", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mismatch-target", + "platformFlavors": [ + + ], + "comment": [ + "target not found, using default" + ], + "label": "Target Not Found "}, + { "value": "0", "localName": "none", + "platformFlavors": [ + + ], + "comment": [ + "no issue" + ], + "label": "None "} + ], + "default": "none", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "status": { + "versions": "1.0(1e)-", + "comment": [ + "The upgrade status. This property is for internal use only." + ], + "isConfigurable": false, + "propGlobalId": "3", + "propLocalId": "4", + "label": "status", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationStatus", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "created", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be created. An error is returned if the object already exists. \nIn the return value of a setter method: indicates that an object has been created. \n" + ], + "label": "Created "}, + { "value": "8", "localName": "deleted", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be deleted. \nIn the return value of a setter method: indicates that an object has been deleted.\n" + ], + "label": "Deleted "}, + { "value": "4", "localName": "modified", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be modified \nIn the return value of a setter method: indicates that an object has been modified.\n" + ], + "label": "Modified "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tCl": { + "versions": "1.0(1e)-", + "comment": [ + "null" + ], + "isConfigurable": false, + "propGlobalId": "12232", + "propLocalId": "78", + "label": "Target Class", + "baseType": "scalar:Enum16", + "modelType": "reln:ClassId", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validValues": [ + { "value": "1306", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "unspecified", + "platformFlavors": [ + + ], + "label": "unspecified "}, + { "value": "1306", "localName": "vzTaboo", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "vzTaboo", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tContextDn": { + "versions": "1.0(1e)-", + "comment": [ + "Specifies the target context distinguished name." + ], + "isConfigurable": false, + "propGlobalId": "4990", + "propLocalId": "2530", + "label": "Target-context", + "baseType": "reference:BinRef", + "modelType": "reln:Dn", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tDn": { + "versions": "1.0(1e)-", + "comment": [ + "The distinguished name of the target." + ], + "isConfigurable": false, + "propGlobalId": "100", + "propLocalId": "77", + "label": "Target-dn", + "baseType": "reference:BinRef", + "modelType": "reln:Dn", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tRn": { + "versions": "1.0(1e)-", + "comment": [ + "Specifies the target's related name." + ], + "isConfigurable": false, + "propGlobalId": "4989", + "propLocalId": "2529", + "label": "Target-rn", + "baseType": "string:Basic", + "modelType": "string:Basic", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tType": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the type of target. The target type for this object is named." + ], + "isConfigurable": false, + "propGlobalId": "4988", + "propLocalId": "81", + "label": "Target Type", + "baseType": "scalar:Enum8", + "modelType": "reln:TargetType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "all", + "platformFlavors": [ + + ], + "label": "All "}, + { "value": "name", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "0", "localName": "name", + "platformFlavors": [ + + ], + "label": "Name "} + ], + "default": "name", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tnVzTabooName": { + "versions": "1.0(1e)-", + "comment": [ + "A contract for denying specific classes of traffic. Taboo rules are applied in the hardware before applying the rules of regular contracts. Without a contract, the default forwarding policy is to not allow any communication between EPGs." + ], + "isConfigurable": true, + "propGlobalId": "12231", + "propLocalId": "3996", + "label": "Name", + "baseType": "string:Basic", + "modelType": "naming:Name", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": false, + "readOnly": false, + "isNaming": true, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 1, "max": 64, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "triggerSt": { + "versions": "1.0(1e)-", + "comment": [ + "The ability to trigger a task" + ], + "isConfigurable": false, + "propGlobalId": "16151", + "propLocalId": "898", + "label": "triggerSt", + "baseType": "scalar:Enum8", + "modelType": "fv:TriggerSt", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "not_triggerable", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "not_triggerable", + "platformFlavors": [ + + ], + "label": "not_triggerable "}, + { "value": "1", "localName": "triggerable", + "platformFlavors": [ + + ], + "label": "triggerable "} + ], + "default": "not_triggerable", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "uid": { + "versions": "1.0(1e)-", + "comment": [ + "A unique identifier for this object." + ], + "isConfigurable": false, + "propGlobalId": "8", + "propLocalId": "8", + "label": "uid", + "baseType": "scalar:Uint16", + "modelType": "scalar:Uint16", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "userdom": { + "versions": "5.0(1k)-", + "isConfigurable": true, + "propGlobalId": "60657", + "propLocalId": "13244", + "label": "userdom", + "baseType": "string:Basic", + "modelType": "mo:UserDomType", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 1024, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "validValues": [ + { "value": "all", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "all", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + } + } + } +} diff --git a/gen/meta/fvRsProv.json b/gen/meta/fvRsProv.json new file mode 100644 index 000000000..9e4466fe5 --- /dev/null +++ b/gen/meta/fvRsProv.json @@ -0,0 +1,1477 @@ +{ + "fv:RsProv": { + "contains": { + "aaa:RbacAnnotation": "", + "fault:Counts": "", + "fault:Inst": "", + "fv:CollectionCont": "", + "health:Inst": "", + "tag:AliasDelInst": "", + "tag:AliasInst": "", + "tag:Annotation": "", + "tag:ExtMngdInst": "", + "tag:Inst": "", + "tag:Tag": "", + "vz:ProvLbl": "", + "vz:ProvSubjLbl": "" + }, + "rnMap": { + "alias": "tag:AliasInst", + "aliasdel-": "tag:AliasDelInst", + "annotationKey-": "tag:Annotation", + "collectionDn-": "fv:CollectionCont", + "extmngd": "tag:ExtMngdInst", + "fault-": "fault:Inst", + "fltCnts": "fault:Counts", + "health": "health:Inst", + "provlbl-": "vz:ProvLbl", + "provsubjlbl-": "vz:ProvSubjLbl", + "rbacDom-": "aaa:RbacAnnotation", + "tag-": "tag:Inst", + "tagKey-": "tag:Tag" + }, + "identifiedBy": [ + "tnVzBrCPName" + ], + "rnFormat": "rsprov-{tnVzBrCPName}", + "containedBy": { + "cloud:EPg": "", + "cloud:ExtEPg": "", + "cloud:ISvcEPg": "", + "cloud:SvcEPg": "", + "dhcp:CRelPg": "", + "dhcp:PRelPg": "", + "fv:AEPg": "", + "fv:ESg": "", + "fv:IntEPg": "", + "fv:TnlEPg": "", + "infra:CEPg": "", + "infra:PEPg": "", + "l2ext:InstP": "", + "l3ext:InstP": "", + "l3ext:InstPDef": "", + "mgmt:InB": "", + "vns:EPpInfo": "", + "vns:REPpInfo": "", + "vns:SDEPpInfo": "", + "vns:SHEPpInfo": "" + }, + "superClasses": [ + "fv:EPgToCollection", + "pol:NToRef", + "reln:To", + "reln:Inst" + ], + "subClasses": { + + }, + "relationInfo": { + "type": "named", + "cardinality": "n-to-m", + "fromMo": "fv:EPg", + "fromRelMo": "fv:RsProv", + "toMo": "vz:BrCP", + "toRelMo": "vz:RtProv", + "enforceable": true, + "resolvable": true + }, + "dnFormats": [ + "uni/tn-{name}/intap/intepg-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/cloudsvcepg-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/ap-{name}/esg-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/rsprov-{tnVzBrCPName}", + "uni/svcdefcont/tensvcdef-{name}/ldevdef-[{lDevDn}]/sepg-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/ldevdef-[{lDevDn}]/sepg-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/sepg-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/cloudextepg-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/cloudepg-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/cloudapp-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/Tnlepg-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/epgDn-[{shEpgDn}]/rsprov-{tnVzBrCPName}", + "outdefcont-{id}/rsoutDefContToOut-[{tDn}]/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/acIpToIp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/acExtToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/acEpToExt-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/acEpToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/acAnyToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/acEpToAny-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/epgToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/epToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/ipToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/epgToIp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/epgToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/epp/sec-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/epp/fv-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/epp/rtd-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/ldevCtx-c-{ctrctNameOrLbl}-g-{graphNameOrLbl}-n-{nodeNameOrLbl}/lIfCtx-c-{connNameOrLbl}/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/outdef-{name}/instPdef-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/bd-[{bdDn}]/rsprov-{tnVzBrCPName}", + "uni/ldev-[{priKey}]-ctx-[{ctxDn}]-bd-[{bdDn}]/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/G-{graphRn}-N-{nodeRn}-C-{connRn}/rsprov-{tnVzBrCPName}", + "uni/vDev-[{priKey}]-tn-[{tnDn}]-ctx-{ctxName}/rndrInfo/eppContr/G-{graphRn}-N-{nodeRn}-C-{connRn}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/clp-{name}/cepg-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/provp-{name}/pepg-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/provp-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/clp-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/mgmtp-{name}/inb-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/ap-{name}/epg-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/out-{name}/instP-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/l2out-{name}/instP-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/clp-{name}/cdhcp-{name}/rsprov-{tnVzBrCPName}", + "uni/tn-{name}/provp-{name}/pdhcp-{name}/rsprov-{tnVzBrCPName}" + ], + "writeAccess": [ + "admin", + "tenant-epg", + "tenant-network-profile" + ], + "readAccess": [ + "admin", + "ops", + "tenant-epg", + "tenant-network-profile", + "tenant-security" + ], + "faults": { + "F0974": "fltFvRsProvResolveFail" + }, + "events": { + "E4214183": "creation||fv:RsProv", + "E4214184": "modification||fv:RsProv", + "E4214185": "deletion||fv:RsProv" + }, + "stats": { + + }, + "versions": "1.0(1e)-", + "isAbstract": false, + "isConfigurable": true, + "isContextRoot": false, + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false, + "isEncrypted": false, + "isExportable": true, + "isPersistent": true, + "isSubjectToQuota": true, + "isObservable": true, + "hasStats": false, + "isStat": false, + "isFaultable": true, + "isDomainable": false, + "isHealthScorable": true, + "shouldCollectHealthStats": false, + "healthCollectionSource": "faults", + "hasEventRules": false, + "abstractionLayer": "regular", + "apicNxProcessing": false, + "monitoringPolicySource": "Parent", + "isCreatableDeletable": "always", + "platformFlavors": [ + + ], + "classId": "1902", + "className": "RsProv", + "classPkg": "fv", + "featureTag": "", + "moCategory": "RelationshipToLocal", + "label": "Contract Provider", + "comment": [ + "A contract for which the EPG will be a provider." + ], + "properties": { + "accessPrivilege": { + "versions": "5.2(1g)-", + "isConfigurable": false, + "propGlobalId": "63570", + "propLocalId": "13107", + "label": "accessPrivilege", + "baseType": "scalar:Enum8", + "modelType": "fv:AccessPrivilegeType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "1", "localName": "SYSTEM", + "platformFlavors": [ + + ], + "label": "System Created "}, + { "value": "0", "localName": "USER", + "platformFlavors": [ + + ], + "label": "User Created "}, + { "value": "USER", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "USER", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "annotation": { + "versions": "3.2(1l)-", + "comment": [ + "User annotation. Suggested format orchestrator:value" + ], + "isConfigurable": true, + "propGlobalId": "37651", + "propLocalId": "8719", + "label": "Annotation", + "baseType": "string:Basic", + "modelType": "mo:Annotation", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 128, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "childAction": { + "versions": "1.0(1e)-", + "comment": [ + "Delete or ignore. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "4", + "propLocalId": "5", + "label": "childAction", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationChildAction", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "16384", "localName": "deleteAll", + "platformFlavors": [ + + ], + "label": "Delete All "}, + { "value": "8192", "localName": "deleteNonPresent", + "platformFlavors": [ + + ], + "label": "Delete Non Present "}, + { "value": "4096", "localName": "ignore", + "platformFlavors": [ + + ], + "label": "Ignore "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "ctrctUpd": { + "versions": "1.0(1e)-", + "comment": [ + "Indicates if the information about the contract/bundle/group an endpoint group is associated to will be sent from the endpoint group shard or contract shard." + ], + "isConfigurable": false, + "propGlobalId": "1722", + "propLocalId": "563", + "label": "Contract Update", + "baseType": "scalar:Enum8", + "modelType": "fv:CtrctUpd", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "0", "localName": "ctrct", + "platformFlavors": [ + + ], + "label": "Contract "}, + { "value": "not_defined", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "epg", + "platformFlavors": [ + + ], + "label": "EPG "}, + { "value": "0", "localName": "not_defined", + "platformFlavors": [ + + ], + "label": "Not Defined "} + ], + "default": "not_defined", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "dn": { + "versions": "1.0(1e)-", + "comment": [ + "A tag or metadata is a non-hierarchical keyword or term assigned to the fabric module." + ], + "isConfigurable": false, + "propGlobalId": "1", + "propLocalId": "2", + "label": "dn", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "extMngdBy": { + "versions": "3.2(1l)-", + "comment": [ + "Indicates which orchestrator is managing this MO" + ], + "isConfigurable": false, + "propGlobalId": "39790", + "propLocalId": "8023", + "label": "Managed By", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ExtMngdByType", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "undefined", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "msc", + "platformFlavors": [ + + ], + "label": "MSC "}, + { "value": "0", "localName": "undefined", + "platformFlavors": [ + + ], + "label": "Undefined "} + ], + "default": "undefined", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "forceResolve": { + "versions": "1.0(1e)-", + "comment": [ + "Whether the relation should force pull the target." + ], + "isConfigurable": false, + "propGlobalId": "107", + "propLocalId": "83", + "label": "Force Resolve", + "baseType": "scalar:Bool", + "modelType": "scalar:Bool", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "true", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "false", "localName": "no", + "platformFlavors": [ + + ], + "label": "No "}, + { "value": "true", "localName": "yes", + "platformFlavors": [ + + ], + "label": "Yes "} + ], + "default": "yes", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "intent": { + "versions": "4.2(1i)-", + "isConfigurable": true, + "propGlobalId": "55646", + "propLocalId": "12600", + "label": "Install Rules or Estimate Number of Rules", + "baseType": "scalar:Enum8", + "modelType": "vz:Intent", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "install", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "2", "localName": "estimate_add", + "platformFlavors": [ + + ], + "label": "Process Configuration and Estimate Number of Rules for Adding Contract "}, + { "value": "1", "localName": "estimate_delete", + "platformFlavors": [ + + ], + "label": "Process Configuration and Estimate Number of Rules for Deleting Contract "}, + { "value": "0", "localName": "install", + "platformFlavors": [ + + ], + "label": "Install Rules in Hardware "} + ], + "default": "install", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "lcOwn": { + "versions": "1.0(1e)-", + "comment": [ + "A value that indicates how this object was created. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "9", + "propLocalId": "9", + "label": "lcOwn", + "baseType": "scalar:Enum8", + "modelType": "mo:Owner", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "local", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "4", "localName": "implicit", + "platformFlavors": [ + + ], + "label": "Implicit "}, + { "value": "0", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "policy", + "platformFlavors": [ + + ], + "label": "Policy "}, + { "value": "2", "localName": "replica", + "platformFlavors": [ + + ], + "label": "Replica "}, + { "value": "3", "localName": "resolveOnBehalf", + "platformFlavors": [ + + ], + "label": "Resolved On Behalf "} + ], + "default": "local", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "matchT": { + "versions": "1.0(1e)-", + "comment": [ + "The matched EPG type." + ], + "isConfigurable": true, + "propGlobalId": "12237", + "propLocalId": "552", + "label": "matchT", + "baseType": "scalar:Enum8", + "modelType": "vz:MatchT", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "1", "localName": "All", + "platformFlavors": [ + + ], + "comment": [ + "Logical AND i.e. &&" + ], + "label": "All "}, + { "value": "2", "localName": "AtleastOne", + "platformFlavors": [ + + ], + "comment": [ + "Logical OR i.e. ||" + ], + "label": "At Least One "}, + { "value": "3", "localName": "AtmostOne", + "platformFlavors": [ + + ], + "comment": [ + "Logical XOR" + ], + "label": "At Most One "}, + { "value": "4", "localName": "None", + "platformFlavors": [ + + ], + "comment": [ + "Logical NOT i.e. !" + ], + "label": "None "}, + { "value": "AtleastOne", "localName": "defaultValue", + "platformFlavors": [ + + ], + "comment": [ + "default is OR" + ], + "label": " "} + ], + "default": "AtleastOne", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "modTs": { + "versions": "1.0(1e)-", + "comment": [ + "The time when this object was last modified." + ], + "isConfigurable": false, + "propGlobalId": "7", + "propLocalId": "7", + "label": "modTs", + "baseType": "scalar:Date", + "modelType": "mo:TStamp", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "never", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "never", + "platformFlavors": [ + + ], + "label": "Never "} + ], + "default": "never", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "monPolDn": { + "versions": "1.0(1e)-", + "comment": [ + "The monitoring policy attached to this observable object." + ], + "isConfigurable": false, + "propGlobalId": "14256", + "propLocalId": "228", + "label": "Monitoring Policy", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "prio": { + "versions": "1.0(1e)-", + "comment": [ + "The system class determines the quality of service and priority for the consumer traffic." + ], + "isConfigurable": true, + "propGlobalId": "12238", + "propLocalId": "172", + "label": "prio", + "baseType": "scalar:Enum8", + "modelType": "qos:TenantPrio", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 9 } + ], + "validValues": [ + { "value": "unspecified", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "3", "localName": "level1", + "platformFlavors": [ + + ], + "label": "Level1 "}, + { "value": "2", "localName": "level2", + "platformFlavors": [ + + ], + "label": "Level2 "}, + { "value": "1", "localName": "level3", + "platformFlavors": [ + + ], + "comment": [ + "User configurable classes" + ], + "label": "Level3 (Default) "}, + { "value": "9", "localName": "level4", + "platformFlavors": [ + + ], + "label": "Level4 "}, + { "value": "8", "localName": "level5", + "platformFlavors": [ + + ], + "label": "Level5 "}, + { "value": "7", "localName": "level6", + "platformFlavors": [ + + ], + "label": "Level6 "}, + { "value": "0", "localName": "unspecified", + "platformFlavors": [ + + ], + "label": "Unspecified "} + ], + "default": "unspecified", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rType": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the type of resolver." + ], + "isConfigurable": false, + "propGlobalId": "106", + "propLocalId": "82", + "label": "Resolver Type", + "baseType": "scalar:Enum8", + "modelType": "reln:ResolverType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "mo", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "3", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "2", "localName": "service", + "platformFlavors": [ + + ], + "label": "Service "} + ], + "default": "mo", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rn": { + "versions": "1.0(1e)-", + "comment": [ + "Identifies an object from its siblings within the context of its parent object. The distinguished name contains a sequence of relative names." + ], + "isConfigurable": false, + "propGlobalId": "2", + "propLocalId": "3", + "label": "rn", + "baseType": "reference:BinRN", + "modelType": "reference:BinRN", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "state": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "103", + "propLocalId": "26", + "label": "State", + "baseType": "scalar:Enum8", + "modelType": "reln:State", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "5", "localName": "cardinality-violation", + "platformFlavors": [ + + ], + "comment": [ + "cardinality violation - When relations are created such that\n they violate the cardinality, state of the relation would be\n set to this." + ], + "label": "Cardinality Violation "}, + { "value": "unformed", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "formed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is formed with the target object" + ], + "label": "Formed "}, + { "value": "4", "localName": "invalid-target", + "platformFlavors": [ + + ], + "comment": [ + "invalid target DN" + ], + "label": "Invalid Target "}, + { "value": "2", "localName": "missing-target", + "platformFlavors": [ + + ], + "comment": [ + "target does not exist" + ], + "label": "Missing Target "}, + { "value": "0", "localName": "unformed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is not formed" + ], + "label": "Unformed "} + ], + "default": "unformed", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "stateQual": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state qualifier of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "104", + "propLocalId": "80", + "label": "State Qualifier", + "baseType": "scalar:Enum8", + "modelType": "reln:StateQual", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "default-target", + "platformFlavors": [ + + ], + "comment": [ + "target not specified, using default" + ], + "label": "Target Not Specified "}, + { "value": "none", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mismatch-target", + "platformFlavors": [ + + ], + "comment": [ + "target not found, using default" + ], + "label": "Target Not Found "}, + { "value": "0", "localName": "none", + "platformFlavors": [ + + ], + "comment": [ + "no issue" + ], + "label": "None "} + ], + "default": "none", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "status": { + "versions": "1.0(1e)-", + "comment": [ + "The upgrade status. This property is for internal use only." + ], + "isConfigurable": false, + "propGlobalId": "3", + "propLocalId": "4", + "label": "status", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationStatus", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "created", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be created. An error is returned if the object already exists. \nIn the return value of a setter method: indicates that an object has been created. \n" + ], + "label": "Created "}, + { "value": "8", "localName": "deleted", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be deleted. \nIn the return value of a setter method: indicates that an object has been deleted.\n" + ], + "label": "Deleted "}, + { "value": "4", "localName": "modified", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be modified \nIn the return value of a setter method: indicates that an object has been modified.\n" + ], + "label": "Modified "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tCl": { + "versions": "1.0(1e)-", + "comment": [ + "null" + ], + "isConfigurable": false, + "propGlobalId": "12236", + "propLocalId": "78", + "label": "Target Class", + "baseType": "scalar:Enum16", + "modelType": "reln:ClassId", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validValues": [ + { "value": "1300", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "unspecified", + "platformFlavors": [ + + ], + "label": "unspecified "}, + { "value": "1300", "localName": "vzBrCP", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "vzBrCP", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tContextDn": { + "versions": "1.0(1e)-", + "comment": [ + "Specifies the target context distinguished name." + ], + "isConfigurable": false, + "propGlobalId": "4990", + "propLocalId": "2530", + "label": "Target-context", + "baseType": "reference:BinRef", + "modelType": "reln:Dn", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tDn": { + "versions": "1.0(1e)-", + "comment": [ + "The distinguished name of the target." + ], + "isConfigurable": false, + "propGlobalId": "100", + "propLocalId": "77", + "label": "Target-dn", + "baseType": "reference:BinRef", + "modelType": "reln:Dn", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tRn": { + "versions": "1.0(1e)-", + "comment": [ + "Specifies the target's related name." + ], + "isConfigurable": false, + "propGlobalId": "4989", + "propLocalId": "2529", + "label": "Target-rn", + "baseType": "string:Basic", + "modelType": "string:Basic", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tType": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the type of target. The target type for this object is named." + ], + "isConfigurable": false, + "propGlobalId": "4988", + "propLocalId": "81", + "label": "Target Type", + "baseType": "scalar:Enum8", + "modelType": "reln:TargetType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "all", + "platformFlavors": [ + + ], + "label": "All "}, + { "value": "name", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "0", "localName": "name", + "platformFlavors": [ + + ], + "label": "Name "} + ], + "default": "name", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tnVzBrCPName": { + "versions": "1.0(1e)-", + "comment": [ + "The provider contract name." + ], + "isConfigurable": true, + "propGlobalId": "12235", + "propLocalId": "3977", + "label": "Name", + "baseType": "string:Basic", + "modelType": "naming:Name", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": false, + "readOnly": false, + "isNaming": true, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 1, "max": 64, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "triggerSt": { + "versions": "1.0(1e)-", + "comment": [ + "The ability to trigger a task" + ], + "isConfigurable": false, + "propGlobalId": "1723", + "propLocalId": "898", + "label": "Ability to Trigger Task", + "baseType": "scalar:Enum8", + "modelType": "fv:TriggerSt", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "not_triggerable", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "not_triggerable", + "platformFlavors": [ + + ], + "label": "not_triggerable "}, + { "value": "1", "localName": "triggerable", + "platformFlavors": [ + + ], + "label": "triggerable "} + ], + "default": "not_triggerable", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "uid": { + "versions": "1.0(1e)-", + "comment": [ + "A unique identifier for this object." + ], + "isConfigurable": false, + "propGlobalId": "8", + "propLocalId": "8", + "label": "uid", + "baseType": "scalar:Uint16", + "modelType": "scalar:Uint16", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "updateCollection": { + "versions": "1.1(1j)-", + "isConfigurable": false, + "propGlobalId": "20832", + "propLocalId": "5372", + "label": "Implicitly Set Transaction Update", + "baseType": "scalar:Bool", + "modelType": "scalar:Bool", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "false", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "false", "localName": "no", + "platformFlavors": [ + + ], + "label": "No "}, + { "value": "true", "localName": "yes", + "platformFlavors": [ + + ], + "label": "Yes "} + ], + "default": "no", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "userdom": { + "versions": "5.0(1k)-", + "isConfigurable": true, + "propGlobalId": "60657", + "propLocalId": "13244", + "label": "userdom", + "baseType": "string:Basic", + "modelType": "mo:UserDomType", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 1024, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "validValues": [ + { "value": "all", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "all", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + } + } + } +} diff --git a/gen/meta/fvRsScope.json b/gen/meta/fvRsScope.json new file mode 100644 index 000000000..0e40c1525 --- /dev/null +++ b/gen/meta/fvRsScope.json @@ -0,0 +1,1014 @@ +{ + "fv:RsScope": { + "contains": { + "aaa:RbacAnnotation": "", + "fault:Counts": "", + "fault:Inst": "", + "health:Inst": "", + "tag:AliasDelInst": "", + "tag:AliasInst": "", + "tag:Annotation": "", + "tag:ExtMngdInst": "", + "tag:Inst": "", + "tag:Tag": "" + }, + "rnMap": { + "alias": "tag:AliasInst", + "aliasdel-": "tag:AliasDelInst", + "annotationKey-": "tag:Annotation", + "extmngd": "tag:ExtMngdInst", + "fault-": "fault:Inst", + "fltCnts": "fault:Counts", + "health": "health:Inst", + "rbacDom-": "aaa:RbacAnnotation", + "tag-": "tag:Inst", + "tagKey-": "tag:Tag" + }, + "identifiedBy": [ + + ], + "rnFormat": "rsscope", + "containedBy": { + "fv:ESg": "" + }, + "superClasses": [ + "pol:NToRef", + "reln:To", + "reln:Inst" + ], + "subClasses": { + + }, + "relationInfo": { + "type": "named", + "cardinality": "n-to-1", + "fromMo": "fv:ESg", + "fromRelMo": "fv:RsScope", + "toMo": "fv:Ctx", + "toRelMo": "fv:RtScope", + "enforceable": true, + "resolvable": true + }, + "dnFormats": [ + "uni/tn-{name}/ap-{name}/esg-{name}/rsscope" + ], + "writeAccess": [ + "admin", + "tenant-epg", + "tenant-network-profile" + ], + "readAccess": [ + "admin", + "ops", + "tenant-epg", + "tenant-network-profile" + ], + "faults": { + "F3702": "fltFvRsScopeResolveFail" + }, + "events": { + "E4217217": "creation||fv:RsScope", + "E4217218": "modification||fv:RsScope", + "E4217219": "deletion||fv:RsScope" + }, + "stats": { + + }, + "versions": "5.0(1k)-", + "isAbstract": false, + "isConfigurable": true, + "isContextRoot": false, + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false, + "isEncrypted": false, + "isExportable": true, + "isPersistent": true, + "isSubjectToQuota": false, + "isObservable": true, + "hasStats": false, + "isStat": false, + "isFaultable": true, + "isDomainable": false, + "isHealthScorable": true, + "shouldCollectHealthStats": false, + "healthCollectionSource": "faults", + "hasEventRules": false, + "abstractionLayer": "regular", + "apicNxProcessing": false, + "monitoringPolicySource": "Parent", + "isCreatableDeletable": "never", + "platformFlavors": [ + "apic" + ], + "classId": "16475", + "className": "RsScope", + "classPkg": "fv", + "featureTag": "", + "moCategory": "RelationshipToLocal", + "label": "Private Network", + "properties": { + "annotation": { + "versions": "5.0(1k)-", + "comment": [ + "User annotation. Suggested format orchestrator:value" + ], + "isConfigurable": true, + "propGlobalId": "56103", + "propLocalId": "8719", + "label": "Annotation", + "baseType": "string:Basic", + "modelType": "mo:Annotation", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 128, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "childAction": { + "versions": "1.0(1e)-", + "comment": [ + "Delete or ignore. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "4", + "propLocalId": "5", + "label": "childAction", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationChildAction", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "16384", "localName": "deleteAll", + "platformFlavors": [ + + ], + "label": "Delete All "}, + { "value": "8192", "localName": "deleteNonPresent", + "platformFlavors": [ + + ], + "label": "Delete Non Present "}, + { "value": "4096", "localName": "ignore", + "platformFlavors": [ + + ], + "label": "Ignore "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "dn": { + "versions": "1.0(1e)-", + "comment": [ + "A tag or metadata is a non-hierarchical keyword or term assigned to the fabric module." + ], + "isConfigurable": false, + "propGlobalId": "1", + "propLocalId": "2", + "label": "dn", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "extMngdBy": { + "versions": "5.0(1k)-", + "comment": [ + "Indicates which orchestrator is managing this MO" + ], + "isConfigurable": false, + "propGlobalId": "56104", + "propLocalId": "8023", + "label": "Managed By", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ExtMngdByType", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "undefined", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "msc", + "platformFlavors": [ + + ], + "label": "MSC "}, + { "value": "0", "localName": "undefined", + "platformFlavors": [ + + ], + "label": "Undefined "} + ], + "default": "undefined", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "forceResolve": { + "versions": "1.0(1e)-", + "comment": [ + "Whether the relation should force pull the target." + ], + "isConfigurable": false, + "propGlobalId": "107", + "propLocalId": "83", + "label": "Force Resolve", + "baseType": "scalar:Bool", + "modelType": "scalar:Bool", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "true", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "false", "localName": "no", + "platformFlavors": [ + + ], + "label": "No "}, + { "value": "true", "localName": "yes", + "platformFlavors": [ + + ], + "label": "Yes "} + ], + "default": "yes", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "lcOwn": { + "versions": "1.0(1e)-", + "comment": [ + "A value that indicates how this object was created. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "9", + "propLocalId": "9", + "label": "lcOwn", + "baseType": "scalar:Enum8", + "modelType": "mo:Owner", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "local", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "4", "localName": "implicit", + "platformFlavors": [ + + ], + "label": "Implicit "}, + { "value": "0", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "policy", + "platformFlavors": [ + + ], + "label": "Policy "}, + { "value": "2", "localName": "replica", + "platformFlavors": [ + + ], + "label": "Replica "}, + { "value": "3", "localName": "resolveOnBehalf", + "platformFlavors": [ + + ], + "label": "Resolved On Behalf "} + ], + "default": "local", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "modTs": { + "versions": "1.0(1e)-", + "comment": [ + "The time when this object was last modified." + ], + "isConfigurable": false, + "propGlobalId": "7", + "propLocalId": "7", + "label": "modTs", + "baseType": "scalar:Date", + "modelType": "mo:TStamp", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "never", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "never", + "platformFlavors": [ + + ], + "label": "Never "} + ], + "default": "never", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "monPolDn": { + "versions": "5.0(1k)-", + "comment": [ + "The monitoring policy attached to this observable object." + ], + "isConfigurable": false, + "propGlobalId": "56098", + "propLocalId": "228", + "label": "Monitoring Policy", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rType": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the type of resolver." + ], + "isConfigurable": false, + "propGlobalId": "106", + "propLocalId": "82", + "label": "Resolver Type", + "baseType": "scalar:Enum8", + "modelType": "reln:ResolverType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "mo", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "3", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "2", "localName": "service", + "platformFlavors": [ + + ], + "label": "Service "} + ], + "default": "mo", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rn": { + "versions": "1.0(1e)-", + "comment": [ + "Identifies an object from its siblings within the context of its parent object. The distinguished name contains a sequence of relative names." + ], + "isConfigurable": false, + "propGlobalId": "2", + "propLocalId": "3", + "label": "rn", + "baseType": "reference:BinRN", + "modelType": "reference:BinRN", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "state": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "103", + "propLocalId": "26", + "label": "State", + "baseType": "scalar:Enum8", + "modelType": "reln:State", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "5", "localName": "cardinality-violation", + "platformFlavors": [ + + ], + "comment": [ + "cardinality violation - When relations are created such that\n they violate the cardinality, state of the relation would be\n set to this." + ], + "label": "Cardinality Violation "}, + { "value": "unformed", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "formed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is formed with the target object" + ], + "label": "Formed "}, + { "value": "4", "localName": "invalid-target", + "platformFlavors": [ + + ], + "comment": [ + "invalid target DN" + ], + "label": "Invalid Target "}, + { "value": "2", "localName": "missing-target", + "platformFlavors": [ + + ], + "comment": [ + "target does not exist" + ], + "label": "Missing Target "}, + { "value": "0", "localName": "unformed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is not formed" + ], + "label": "Unformed "} + ], + "default": "unformed", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "stateQual": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state qualifier of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "104", + "propLocalId": "80", + "label": "State Qualifier", + "baseType": "scalar:Enum8", + "modelType": "reln:StateQual", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "default-target", + "platformFlavors": [ + + ], + "comment": [ + "target not specified, using default" + ], + "label": "Target Not Specified "}, + { "value": "none", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mismatch-target", + "platformFlavors": [ + + ], + "comment": [ + "target not found, using default" + ], + "label": "Target Not Found "}, + { "value": "0", "localName": "none", + "platformFlavors": [ + + ], + "comment": [ + "no issue" + ], + "label": "None "} + ], + "default": "none", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "status": { + "versions": "1.0(1e)-", + "comment": [ + "The upgrade status. This property is for internal use only." + ], + "isConfigurable": false, + "propGlobalId": "3", + "propLocalId": "4", + "label": "status", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationStatus", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "created", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be created. An error is returned if the object already exists. \nIn the return value of a setter method: indicates that an object has been created. \n" + ], + "label": "Created "}, + { "value": "8", "localName": "deleted", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be deleted. \nIn the return value of a setter method: indicates that an object has been deleted.\n" + ], + "label": "Deleted "}, + { "value": "4", "localName": "modified", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be modified \nIn the return value of a setter method: indicates that an object has been modified.\n" + ], + "label": "Modified "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tCl": { + "versions": "5.0(1k)-", + "comment": [ + "The class ID of the target object. This property is managed internally and should not be modified by the user." + ], + "isConfigurable": false, + "propGlobalId": "56089", + "propLocalId": "78", + "label": "Target Class", + "baseType": "scalar:Enum16", + "modelType": "reln:ClassId", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validValues": [ + { "value": "1997", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1997", "localName": "fvCtx", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "unspecified", + "platformFlavors": [ + + ], + "label": "unspecified "} + ], + "default": "fvCtx", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tContextDn": { + "versions": "1.0(1e)-", + "comment": [ + "Specifies the target context distinguished name." + ], + "isConfigurable": false, + "propGlobalId": "4990", + "propLocalId": "2530", + "label": "Target-context", + "baseType": "reference:BinRef", + "modelType": "reln:Dn", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tDn": { + "versions": "1.0(1e)-", + "comment": [ + "The distinguished name of the target." + ], + "isConfigurable": false, + "propGlobalId": "100", + "propLocalId": "77", + "label": "Target-dn", + "baseType": "reference:BinRef", + "modelType": "reln:Dn", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tRn": { + "versions": "1.0(1e)-", + "comment": [ + "Specifies the target's related name." + ], + "isConfigurable": false, + "propGlobalId": "4989", + "propLocalId": "2529", + "label": "Target-rn", + "baseType": "string:Basic", + "modelType": "string:Basic", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tType": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the type of target. The target type for this object is named." + ], + "isConfigurable": false, + "propGlobalId": "4988", + "propLocalId": "81", + "label": "Target Type", + "baseType": "scalar:Enum8", + "modelType": "reln:TargetType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "all", + "platformFlavors": [ + + ], + "label": "All "}, + { "value": "name", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "0", "localName": "name", + "platformFlavors": [ + + ], + "label": "Name "} + ], + "default": "name", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tnFvCtxName": { + "versions": "5.0(1k)-", + "isConfigurable": true, + "propGlobalId": "56088", + "propLocalId": "3988", + "label": "Name", + "baseType": "string:Basic", + "modelType": "naming:Name", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 64, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "uid": { + "versions": "1.0(1e)-", + "comment": [ + "A unique identifier for this object." + ], + "isConfigurable": false, + "propGlobalId": "8", + "propLocalId": "8", + "label": "uid", + "baseType": "scalar:Uint16", + "modelType": "scalar:Uint16", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "userdom": { + "versions": "5.0(1k)-", + "isConfigurable": true, + "propGlobalId": "60657", + "propLocalId": "13244", + "label": "userdom", + "baseType": "string:Basic", + "modelType": "mo:UserDomType", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 1024, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "validValues": [ + { "value": "all", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "all", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + } + } + } +} diff --git a/gen/meta/fvRsSecInherited.json b/gen/meta/fvRsSecInherited.json new file mode 100644 index 000000000..bc1a5b9b2 --- /dev/null +++ b/gen/meta/fvRsSecInherited.json @@ -0,0 +1,1088 @@ +{ + "fv:RsSecInherited": { + "contains": { + "aaa:RbacAnnotation": "", + "fault:Counts": "", + "fault:Inst": "", + "health:Inst": "", + "tag:AliasDelInst": "", + "tag:AliasInst": "", + "tag:Annotation": "", + "tag:ExtMngdInst": "", + "tag:Inst": "", + "tag:Tag": "" + }, + "rnMap": { + "alias": "tag:AliasInst", + "aliasdel-": "tag:AliasDelInst", + "annotationKey-": "tag:Annotation", + "extmngd": "tag:ExtMngdInst", + "fault-": "fault:Inst", + "fltCnts": "fault:Counts", + "health": "health:Inst", + "rbacDom-": "aaa:RbacAnnotation", + "tag-": "tag:Inst", + "tagKey-": "tag:Tag" + }, + "identifiedBy": [ + "tDn" + ], + "rnFormat": "rssecInherited-[{tDn}]", + "containedBy": { + "cloud:EPg": "", + "cloud:ExtEPg": "", + "cloud:ISvcEPg": "", + "cloud:SvcEPg": "", + "dhcp:CRelPg": "", + "dhcp:PRelPg": "", + "fv:AEPg": "", + "fv:ESg": "", + "fv:IntEPg": "", + "fv:TnlEPg": "", + "infra:CEPg": "", + "infra:PEPg": "", + "l2ext:InstP": "", + "l3ext:InstP": "", + "l3ext:InstPDef": "", + "mgmt:InB": "", + "vns:EPpInfo": "", + "vns:REPpInfo": "", + "vns:SDEPpInfo": "", + "vns:SHEPpInfo": "" + }, + "superClasses": [ + "reln:To", + "reln:Inst" + ], + "subClasses": { + + }, + "relationInfo": { + "type": "explicit", + "cardinality": "n-to-m", + "fromMo": "fv:EPg", + "fromRelMo": "fv:RsSecInherited", + "toMo": "fv:EPg", + "toRelMo": "fv:RtSecInherited", + "enforceable": true, + "resolvable": true + }, + "dnFormats": [ + "uni/tn-{name}/intap/intepg-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/cloudapp-{name}/cloudsvcepg-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/cloudapp-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/ap-{name}/esg-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/cloudapp-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/cloudapp-{name}/rssecInherited-[{tDn}]", + "uni/svcdefcont/tensvcdef-{name}/ldevdef-[{lDevDn}]/sepg-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/ldevdef-[{lDevDn}]/sepg-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/cloudapp-{name}/sepg-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/cloudapp-{name}/cloudextepg-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/cloudapp-{name}/cloudepg-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/cloudapp-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/Tnlepg-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/epgDn-[{shEpgDn}]/rssecInherited-[{tDn}]", + "outdefcont-{id}/rsoutDefContToOut-[{tDn}]/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/acIpToIp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/acExtToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/acEpToExt-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/acEpToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/acAnyToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/acEpToAny-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/epgToEp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/epToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/ipToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/epgToIp-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/epgToEpg-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/epp/sec-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/epp/fv-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/epp/rtd-[{epgPKey}]/ac-{name}/acl3outcont/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/ldevCtx-c-{ctrctNameOrLbl}-g-{graphNameOrLbl}-n-{nodeNameOrLbl}/lIfCtx-c-{connNameOrLbl}/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/outdef-{name}/instPdef-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/bd-[{bdDn}]/rssecInherited-[{tDn}]", + "uni/ldev-[{priKey}]-ctx-[{ctxDn}]-bd-[{bdDn}]/rssecInherited-[{tDn}]", + "uni/tn-{name}/LDevInst-[{priKey}]-ctx-{ctxName}/G-{graphRn}-N-{nodeRn}-C-{connRn}/rssecInherited-[{tDn}]", + "uni/vDev-[{priKey}]-tn-[{tnDn}]-ctx-{ctxName}/rndrInfo/eppContr/G-{graphRn}-N-{nodeRn}-C-{connRn}/rssecInherited-[{tDn}]", + "uni/tn-{name}/clp-{name}/cepg-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/provp-{name}/pepg-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/provp-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/clp-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/mgmtp-{name}/inb-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/ap-{name}/epg-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/out-{name}/instP-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/l2out-{name}/instP-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/clp-{name}/cdhcp-{name}/rssecInherited-[{tDn}]", + "uni/tn-{name}/provp-{name}/pdhcp-{name}/rssecInherited-[{tDn}]" + ], + "writeAccess": [ + "admin", + "tenant-epg", + "tenant-network-profile" + ], + "readAccess": [ + "admin", + "ops", + "tenant-epg", + "tenant-network-profile" + ], + "faults": { + "F2698": "fltFvRsSecInheritedResolveFail" + }, + "events": { + "E4214186": "creation||fv:RsSecInherited", + "E4214187": "modification||fv:RsSecInherited", + "E4214188": "deletion||fv:RsSecInherited" + }, + "stats": { + + }, + "versions": "2.3(1e)-", + "isAbstract": false, + "isConfigurable": true, + "isContextRoot": false, + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false, + "isEncrypted": false, + "isExportable": true, + "isPersistent": true, + "isSubjectToQuota": false, + "isObservable": true, + "hasStats": false, + "isStat": false, + "isFaultable": true, + "isDomainable": false, + "isHealthScorable": true, + "shouldCollectHealthStats": false, + "healthCollectionSource": "faults", + "hasEventRules": false, + "abstractionLayer": "regular", + "apicNxProcessing": false, + "monitoringPolicySource": "Parent", + "isCreatableDeletable": "always", + "platformFlavors": [ + + ], + "classId": "10023", + "className": "RsSecInherited", + "classPkg": "fv", + "featureTag": "", + "moCategory": "RelationshipToLocal", + "label": "Security inheritance", + "comment": [ + "Represents that the EPg is inheriting security configuration from another EPg" + ], + "properties": { + "annotation": { + "versions": "3.2(1l)-", + "comment": [ + "User annotation. Suggested format orchestrator:value" + ], + "isConfigurable": true, + "propGlobalId": "38671", + "propLocalId": "8719", + "label": "Annotation", + "baseType": "string:Basic", + "modelType": "mo:Annotation", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 128, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "childAction": { + "versions": "1.0(1e)-", + "comment": [ + "Delete or ignore. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "4", + "propLocalId": "5", + "label": "childAction", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationChildAction", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "16384", "localName": "deleteAll", + "platformFlavors": [ + + ], + "label": "Delete All "}, + { "value": "8192", "localName": "deleteNonPresent", + "platformFlavors": [ + + ], + "label": "Delete Non Present "}, + { "value": "4096", "localName": "ignore", + "platformFlavors": [ + + ], + "label": "Ignore "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "dn": { + "versions": "1.0(1e)-", + "comment": [ + "A tag or metadata is a non-hierarchical keyword or term assigned to the fabric module." + ], + "isConfigurable": false, + "propGlobalId": "1", + "propLocalId": "2", + "label": "dn", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "extMngdBy": { + "versions": "3.2(1l)-", + "comment": [ + "Indicates which orchestrator is managing this MO" + ], + "isConfigurable": false, + "propGlobalId": "40810", + "propLocalId": "8023", + "label": "Managed By", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ExtMngdByType", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "undefined", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "msc", + "platformFlavors": [ + + ], + "label": "MSC "}, + { "value": "0", "localName": "undefined", + "platformFlavors": [ + + ], + "label": "Undefined "} + ], + "default": "undefined", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "forceResolve": { + "versions": "1.0(1e)-", + "comment": [ + "Whether the relation should force pull the target." + ], + "isConfigurable": false, + "propGlobalId": "107", + "propLocalId": "83", + "label": "Force Resolve", + "baseType": "scalar:Bool", + "modelType": "scalar:Bool", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "true", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "false", "localName": "no", + "platformFlavors": [ + + ], + "label": "No "}, + { "value": "true", "localName": "yes", + "platformFlavors": [ + + ], + "label": "Yes "} + ], + "default": "yes", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "lcOwn": { + "versions": "1.0(1e)-", + "comment": [ + "A value that indicates how this object was created. For internal use only." + ], + "isConfigurable": false, + "propGlobalId": "9", + "propLocalId": "9", + "label": "lcOwn", + "baseType": "scalar:Enum8", + "modelType": "mo:Owner", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "local", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "4", "localName": "implicit", + "platformFlavors": [ + + ], + "label": "Implicit "}, + { "value": "0", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "policy", + "platformFlavors": [ + + ], + "label": "Policy "}, + { "value": "2", "localName": "replica", + "platformFlavors": [ + + ], + "label": "Replica "}, + { "value": "3", "localName": "resolveOnBehalf", + "platformFlavors": [ + + ], + "label": "Resolved On Behalf "} + ], + "default": "local", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "modTs": { + "versions": "1.0(1e)-", + "comment": [ + "The time when this object was last modified." + ], + "isConfigurable": false, + "propGlobalId": "7", + "propLocalId": "7", + "label": "modTs", + "baseType": "scalar:Date", + "modelType": "mo:TStamp", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "never", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "never", + "platformFlavors": [ + + ], + "label": "Never "} + ], + "default": "never", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "monPolDn": { + "versions": "2.3(1e)-", + "comment": [ + "The monitoring policy attached to this observable object." + ], + "isConfigurable": false, + "propGlobalId": "30566", + "propLocalId": "228", + "label": "Monitoring Policy", + "baseType": "reference:BinRef", + "modelType": "reference:BinRef", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rType": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the type of resolver." + ], + "isConfigurable": false, + "propGlobalId": "106", + "propLocalId": "82", + "label": "Resolver Type", + "baseType": "scalar:Enum8", + "modelType": "reln:ResolverType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "mo", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "3", "localName": "local", + "platformFlavors": [ + + ], + "label": "Local "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "2", "localName": "service", + "platformFlavors": [ + + ], + "label": "Service "} + ], + "default": "mo", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "rn": { + "versions": "1.0(1e)-", + "comment": [ + "Identifies an object from its siblings within the context of its parent object. The distinguished name contains a sequence of relative names." + ], + "isConfigurable": false, + "propGlobalId": "2", + "propLocalId": "3", + "label": "rn", + "baseType": "reference:BinRN", + "modelType": "reference:BinRN", + "needsPropDelimiters": true, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "state": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "103", + "propLocalId": "26", + "label": "State", + "baseType": "scalar:Enum8", + "modelType": "reln:State", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "5", "localName": "cardinality-violation", + "platformFlavors": [ + + ], + "comment": [ + "cardinality violation - When relations are created such that\n they violate the cardinality, state of the relation would be\n set to this." + ], + "label": "Cardinality Violation "}, + { "value": "unformed", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "formed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is formed with the target object" + ], + "label": "Formed "}, + { "value": "4", "localName": "invalid-target", + "platformFlavors": [ + + ], + "comment": [ + "invalid target DN" + ], + "label": "Invalid Target "}, + { "value": "2", "localName": "missing-target", + "platformFlavors": [ + + ], + "comment": [ + "target does not exist" + ], + "label": "Missing Target "}, + { "value": "0", "localName": "unformed", + "platformFlavors": [ + + ], + "comment": [ + "the relationship is not formed" + ], + "label": "Unformed "} + ], + "default": "unformed", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "stateQual": { + "versions": "1.0(1e)-", + "comment": [ + "Represents the state qualifier of the relationship." + ], + "isConfigurable": false, + "propGlobalId": "104", + "propLocalId": "80", + "label": "State Qualifier", + "baseType": "scalar:Enum8", + "modelType": "reln:StateQual", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "default-target", + "platformFlavors": [ + + ], + "comment": [ + "target not specified, using default" + ], + "label": "Target Not Specified "}, + { "value": "none", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mismatch-target", + "platformFlavors": [ + + ], + "comment": [ + "target not found, using default" + ], + "label": "Target Not Found "}, + { "value": "0", "localName": "none", + "platformFlavors": [ + + ], + "comment": [ + "no issue" + ], + "label": "None "} + ], + "default": "none", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "status": { + "versions": "1.0(1e)-", + "comment": [ + "The upgrade status. This property is for internal use only." + ], + "isConfigurable": false, + "propGlobalId": "3", + "propLocalId": "4", + "label": "status", + "baseType": "scalar:Bitmask32", + "modelType": "mo:ModificationStatus", + "needsPropDelimiters": false, + "uitype": "bitmask", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "created", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be created. An error is returned if the object already exists. \nIn the return value of a setter method: indicates that an object has been created. \n" + ], + "label": "Created "}, + { "value": "8", "localName": "deleted", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be deleted. \nIn the return value of a setter method: indicates that an object has been deleted.\n" + ], + "label": "Deleted "}, + { "value": "4", "localName": "modified", + "platformFlavors": [ + + ], + "comment": [ + "In a setter method: specifies that an object should be modified \nIn the return value of a setter method: indicates that an object has been modified.\n" + ], + "label": "Modified "} + ], + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tCl": { + "versions": "2.3(1e)-", + "comment": [ + "The class ID of the target object. This property is managed internally and should not be modified by the user." + ], + "isConfigurable": false, + "propGlobalId": "30562", + "propLocalId": "78", + "label": "Target Class", + "baseType": "scalar:Enum16", + "modelType": "reln:ClassId", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": true, + "isLike": false, + "validValues": [ + { "value": "14644", "localName": "cloudEPg", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "14645", "localName": "cloudExtEPg", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "15164", "localName": "cloudISvcEPg", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "18284", "localName": "cloudSvcEPg", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1899", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1467", "localName": "dhcpCRelPg", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1466", "localName": "dhcpPRelPg", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1981", "localName": "fvAEPg", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1899", "localName": "fvEPg", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "16474", "localName": "fvESg", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "20529", "localName": "fvIntEPg", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "9196", "localName": "fvTnlEPg", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "4326", "localName": "infraCEPg", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "4325", "localName": "infraPEPg", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1746", "localName": "l2extInstP", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1775", "localName": "l3extInstP", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "5987", "localName": "l3extInstPDef", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "2194", "localName": "mgmtInB", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "0", "localName": "unspecified", + "platformFlavors": [ + + ], + "label": "unspecified "}, + { "value": "4694", "localName": "vnsEPpInfo", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "5959", "localName": "vnsREPpInfo", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "5958", "localName": "vnsSDEPpInfo", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "6131", "localName": "vnsSHEPpInfo", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "fvEPg", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tDn": { + "versions": "2.3(1e)-", + "comment": [ + "The distinguished name of the target." + ], + "isConfigurable": true, + "propGlobalId": "30561", + "propLocalId": "77", + "label": "Target-dn", + "baseType": "reference:BinRef", + "modelType": "reln:Dn", + "needsPropDelimiters": true, + "uitype": "string", + "createOnly": false, + "readWrite": false, + "readOnly": false, + "isNaming": true, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": true, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "tType": { + "versions": "1.0(1e)-", + "comment": [ + "The type of target." + ], + "isConfigurable": false, + "propGlobalId": "105", + "propLocalId": "81", + "label": "Target Type", + "baseType": "scalar:Enum8", + "modelType": "reln:TargetType", + "needsPropDelimiters": false, + "uitype": "enum", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validValues": [ + { "value": "2", "localName": "all", + "platformFlavors": [ + + ], + "label": "All "}, + { "value": "mo", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "}, + { "value": "1", "localName": "mo", + "platformFlavors": [ + + ], + "label": "MO "}, + { "value": "0", "localName": "name", + "platformFlavors": [ + + ], + "label": "Name "} + ], + "default": "mo", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "uid": { + "versions": "1.0(1e)-", + "comment": [ + "A unique identifier for this object." + ], + "isConfigurable": false, + "propGlobalId": "8", + "propLocalId": "8", + "label": "uid", + "baseType": "scalar:Uint16", + "modelType": "scalar:Uint16", + "needsPropDelimiters": false, + "uitype": "auto", + "createOnly": false, + "readWrite": false, + "readOnly": true, + "isNaming": false, + "secure": false, + "implicit": true, + "mandatory": false, + "isOverride": false, + "isLike": false, + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + }, + "userdom": { + "versions": "5.0(1k)-", + "isConfigurable": true, + "propGlobalId": "60657", + "propLocalId": "13244", + "label": "userdom", + "baseType": "string:Basic", + "modelType": "mo:UserDomType", + "needsPropDelimiters": false, + "uitype": "string", + "createOnly": false, + "readWrite": true, + "readOnly": false, + "isNaming": false, + "secure": false, + "implicit": false, + "mandatory": false, + "isOverride": false, + "isLike": false, + "validators": [ + {"min" : 0, "max": 1024, + "regexs": [ + {"regex" : "^[a-zA-Z0-9_.:-]+$", "type": "include"} + ] + } + ], + "validValues": [ + { "value": "all", "localName": "defaultValue", + "platformFlavors": [ + + ], + "label": " "} + ], + "default": "all", + "platformFlavors": [ + + ], + "isNxosConverged": false, + "isDeprecated": false, + "isHidden": false + } + } + } +} diff --git a/gen/templates/datasource.go.tmpl b/gen/templates/datasource.go.tmpl index 22e399311..d81952e21 100644 --- a/gen/templates/datasource.go.tmpl +++ b/gen/templates/datasource.go.tmpl @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-plugin-framework/datasource" "github.com/hashicorp/terraform-plugin-framework/datasource/schema" - {{- if or .HasBitmask }} + {{- if or .HasBitmask .LegacyAttributes}} "github.com/hashicorp/terraform-plugin-framework/types" {{- end}} {{- if getDefaultValues .PkgName "parent_dn" $.Definitions}} @@ -46,6 +46,34 @@ func (d *{{.ResourceClassName}}DataSource) Schema(ctx context.Context, req datas MarkdownDescription: "The {{.ResourceName}} datasource for the '{{.PkgName}}' class", Attributes: map[string]schema.Attribute{ + {{- if .LegacyAttributes}} + // Deprecated attributes + {{- range .LegacyAttributes}} + {{- if ne .ReplacedBy.AttributeName "" }} + {{- if eq (getMigrationType .ValueType) "String"}} + "{{.AttributeName}}": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute '{{.AttributeName}}' will be deprecated soon, please refer to '{{.ReplacedBy.AttributeName}}' instead", + }, + {{- end}} + {{- if eq (getMigrationType .ValueType) "Set"}} + "{{.AttributeName}}": schema.SetAttribute{ + Computed: true, + ElementType: types.StringType, + DeprecationMessage: "Attribute '{{.AttributeName}}' will be deprecated soon, please refer to '{{.ReplacedBy.AttributeName}}' instead", + }, + {{- end}} + {{- if eq (getMigrationType .ValueType) "List"}} + "{{.AttributeName}}": schema.ListAttribute{ + Computed: true, + ElementType: types.StringType, + DeprecationMessage: "Attribute '{{.AttributeName}}' will be deprecated soon, please refer to '{{.ReplacedBy.AttributeName}}' instead", + }, + {{- end}} + {{- end}} + {{- end}} + // End of deprecated attributes + {{- end}} "id": schema.StringAttribute{ Computed: true, MarkdownDescription: "The distinguished name (DN) of the {{getResourceNameAsDescription .ResourceName $.Definitions}} object.", @@ -99,6 +127,38 @@ func (d *{{.ResourceClassName}}DataSource) Schema(ctx context.Context, req datas }, {{- end}} }, + {{- if .LegacyAttributes}} + Blocks: map[string]schema.Block{ + {{- range .LegacyBlocks}} + "{{ .Name }}": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + {{- range .Attributes}} + {{- if eq (getMigrationType .ValueType) "String"}} + "{{.AttributeName}}": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute '{{.AttributeName}}' will be deprecated soon, please refer to '{{.ReplacedBy.AttributeName}}' instead", + }, + {{- end}} + {{- if eq (getMigrationType .ValueType) "Set"}} + "{{.AttributeName}}": schema.SetAttribute{ + Computed: true, + DeprecationMessage: "Attribute '{{.AttributeName}}' will be deprecated soon, please refer to '{{.ReplacedBy.AttributeName}}' instead", + }, + {{- end}} + {{- if eq (getMigrationType .ValueType) "List"}} + "{{.AttributeName}}": schema.ListAttribute{ + Computed: true, + DeprecationMessage: "Attribute '{{.AttributeName}}' will be deprecated soon, please refer to '{{.ReplacedBy.AttributeName}}' instead", + }, + {{- end}} + {{- end}} + }, + }, + }, + {{- end }} + }, + {{- end}} } tflog.Debug(ctx, "End schema of datasource: aci_{{.ResourceName}}") } diff --git a/gen/templates/datasource_example.tf.tmpl b/gen/templates/datasource_example.tf.tmpl index 5565bfd4b..2cc2990df 100644 --- a/gen/templates/datasource_example.tf.tmpl +++ b/gen/templates/datasource_example.tf.tmpl @@ -6,7 +6,7 @@ data "aci_{{$.ResourceName}}" "example_{{getResourceName $key $.Definitions}}" { {{- range $.Properties}}{{- if .IsNaming}}{{- if ne .NamedPropertyClass ""}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = aci_{{getResourceName .NamedPropertyClass $.Definitions}}.example.name {{- else if eq .SnakeCaseName "t_dn" }} - {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = {{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions}} + {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = {{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions | replace ".test_0.id" ".example.id"}} {{- else}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = "{{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions}}"{{- end}}{{- end}} {{- end}} diff --git a/gen/templates/datasource_test.go.tmpl b/gen/templates/datasource_test.go.tmpl index 496d6039a..305a7d6ef 100644 --- a/gen/templates/datasource_test.go.tmpl +++ b/gen/templates/datasource_test.go.tmpl @@ -12,7 +12,7 @@ import ( ) {{- if .parents}} - {{- range .parents}} + {{- range .parents}}{{$target_classes := .target_classes}} func TestAccDataSource{{$.resourceClassName}}With{{capitalize .class_name}} (t *testing.T) { resource.Test(t, resource.TestCase{ @@ -25,7 +25,7 @@ func TestAccDataSource{{$.resourceClassName}}With{{capitalize .class_name}} (t * Check: resource.ComposeAggregateTestCheckFunc( {{- range $key, $value := $.datasource_required}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("data.aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("data.aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false $target_classes 0}}"), {{- else }} resource.TestCheckResourceAttr("data.aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -85,13 +85,13 @@ func TestAccDataSource{{.resourceClassName}}(t *testing.T) { {{- end}} {{- if .parents}} - {{- range .parents}} + {{- range .parents}}{{$target_classes := .target_classes}} const testConfig{{$.resourceClassName}}DataSourceDependencyWith{{capitalize .class_name}} = testConfig{{$.resourceClassName}}MinDependencyWith{{capitalize .class_name}} + ` data "aci_{{$.resourceName}}" "test" { parent_dn = {{.parent_dn}} {{- range $key, $value := $.datasource_required}} {{- if eq $key "target_dn" }} - {{$key}} = {{$value}} + {{$key}} = {{getTestTargetDn $.targets $.resourceName $value true $target_classes 0}} {{- else }} {{$key}} = "{{$value}}" {{- end }} @@ -105,7 +105,7 @@ data "aci_{{$.resourceName}}" "test_non_existing" { parent_dn = {{.parent_dn}} {{- range $key, $value := $.datasource_non_existing}} {{- if eq $key "target_dn" }} - {{$key}} = "{{$.targetDn}}_not_existing" + {{$key}} = "{{getTestTargetDn $.targets $.resourceName $value false $target_classes 0}}_not_existing" {{- else }} {{$key}} = "{{$value}}" {{- end }} @@ -119,7 +119,7 @@ const testConfig{{.resourceClassName}}DataSource = testConfig{{.resourceClassNam data "aci_{{$.resourceName}}" "test" { {{- range $key, $value := $.datasource_required}} {{- if eq $key "target_dn" }} - {{$key}} = {{$value}} + {{$key}} = {{getTestTargetDn $.targets $.resourceName $value true nil 0}} {{- else }} {{$key}} = "{{$value}}" {{- end }} @@ -132,7 +132,7 @@ const testConfig{{$.resourceClassName}}NotExisting = testConfig{{.resourceClassN data "aci_{{$.resourceName}}" "test" { {{- range $key, $value := $.datasource_non_existing}} {{- if eq $key "target_dn" }} - {{$key}} = "{{$.targetDn}}_not_existing" + {{$key}} = "{{getTestTargetDn $.targets $.resourceName $value false nil 0}}_not_existing" {{- else }} {{$key}} = "{{$value}}" {{- end }} diff --git a/gen/templates/resource.go.tmpl b/gen/templates/resource.go.tmpl index 59b73d9d8..a0f05dc13 100644 --- a/gen/templates/resource.go.tmpl +++ b/gen/templates/resource.go.tmpl @@ -420,7 +420,7 @@ func set{{ .ResourceClassName }}LegacyAttributes(ctx context.Context, diags *dia {{- $Overwrite := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} {{- $AttributeName := getLegacyChildAttribute .PkgName $Overwrite . $.LegacyAttributes $.LegacyBlocks}} {{- if eq $AttributeName (capitalize .PkgName)}} - if childAttributeName == "tDn" { + if childAttributeName == "tDn" && childAttributeValue != "" { Deprecated{{.ResourceClassName}}{{$.ResourceClassName}}List = append(Deprecated{{.ResourceClassName}}{{$.ResourceClassName}}List, childAttributeValue.(string)) } {{- else if ne $AttributeName ""}} @@ -470,10 +470,10 @@ func (r *{{.ResourceClassName}}Resource) ModifyPlan(ctx context.Context, req res planData.Deprecated{{ .Name }} = stateData.Deprecated{{ .Name }} } {{- else if and (ne .ReplacedBy.AttributeName "") (eq (getMigrationType .ValueType) "String") }} - if !configData.{{ .Name }}.IsNull() && stateData != nil { - {{- range $.Children}} - {{- if isLegacyChild .PkgName $.LegacyChildren}} - {{- if eq $SetName (capitalize .PkgName)}} + {{- range $.Children}} + {{- if isLegacyChild .PkgName $.LegacyChildren}} + {{- if eq $SetName (capitalize .PkgName)}} + if !configData.{{ $SetName }}.IsNull() && stateData != nil { var attributeValues []{{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel configData.{{.ResourceClassName}}.ElementsAs(ctx, &attributeValues, false) for _, attributeValue := range attributeValues { @@ -486,14 +486,8 @@ func (r *{{.ResourceClassName}}Resource) ModifyPlan(ctx context.Context, req res } {{- end}} {{- end}} - } - {{- end }} - {{- end }} - {{- end }} - } else if !configData.Deprecated{{ .Name }}.IsNull() { - {{- range $.Children}} - {{- if isLegacyChild .PkgName $.LegacyChildren}} - {{- if eq $SetName (capitalize .PkgName)}} + } + } else if !configData.Deprecated{{ $SetName }}.IsNull() { {{.ResourceClassName}}List := make([]{{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel, 0) {{.ResourceClassName}} := {{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel{ {{- range .Properties}} @@ -519,23 +513,18 @@ func (r *{{.ResourceClassName}}Resource) ModifyPlan(ctx context.Context, req res } {{.ResourceClassName}}Set, _ := types.SetValueFrom(ctx, {{.ResourceClassName}}Type, {{.ResourceClassName}}List) planData.{{.ResourceClassName}} = {{.ResourceClassName}}Set - {{- end }} - {{- end }} - {{- end }} } else if stateData != nil { // used to replace use state for unknown - {{- range $.Children}} - {{- if isLegacyChild .PkgName $.LegacyChildren}} - {{- if eq $SetName (capitalize .PkgName)}} planData.Deprecated{{.ResourceClassName}} = stateData.Deprecated{{.ResourceClassName}} + } + {{- end }} {{- end }} {{- end }} - {{- end }} - } {{- else if ne .ReplacedBy.AttributeName "" }} - if !configData.{{ .Name }}.IsNull() && stateData != nil { - {{- range $.Children}} - {{- if isLegacyChild .PkgName $.LegacyChildren}} - {{- if eq $SetName (capitalize .PkgName)}} + {{- range $.Children}} + {{- if isLegacyChild .PkgName $.LegacyChildren}} + {{- if eq $SetName (capitalize .PkgName)}} + // HasNamedProperties {{.HasNamedProperties}} + if !configData.{{ $SetName }}.IsNull() && stateData != nil { var attributeValues []{{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel var newAttributeValues, stateAttributeValues []string configData.{{.ResourceClassName}}.ElementsAs(ctx, &attributeValues, false) @@ -563,18 +552,14 @@ func (r *{{.ResourceClassName}}Resource) ModifyPlan(ctx context.Context, req res planData.Deprecated{{.ResourceClassName}} = {{.ResourceClassName}}Set } } - {{- end }} - {{- end }} - {{- end }} - } else if !configData.Deprecated{{ .Name }}.IsNull() && stateData != nil { - {{- range $.Children}} - {{- if isLegacyChild .PkgName $.LegacyChildren}} - {{- if eq $SetName (capitalize .PkgName)}} + } else if !configData.Deprecated{{ $SetName }}.IsNull() { {{.ResourceClassName}}List := make([]{{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel, 0) var attributeValues []string var newAttributeValues []{{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel configData.Deprecated{{.ResourceClassName}}.ElementsAs(ctx, &attributeValues, false) - stateData.{{.ResourceClassName}}.ElementsAs(ctx, &newAttributeValues, false) + if stateData != nil { + stateData.{{.ResourceClassName}}.ElementsAs(ctx, &newAttributeValues, false) + } for _, attributeValue := range attributeValues { {{.ResourceClassName}}Value := {{.ResourceClassName}}{{$.ResourceClassName}}ResourceModel{} foundAttributeValue := false @@ -632,19 +617,13 @@ func (r *{{.ResourceClassName}}Resource) ModifyPlan(ctx context.Context, req res } {{.ResourceClassName}}Set, _ := types.SetValueFrom(ctx, {{.ResourceClassName}}Type, {{.ResourceClassName}}List) planData.{{.ResourceClassName}} = {{.ResourceClassName}}Set - {{- end }} - {{- end }} - {{- end }} } else if stateData != nil { // used to replace use state for unknown - {{- range $.Children}} - {{- if isLegacyChild .PkgName $.LegacyChildren}} - {{- if eq $SetName (capitalize .PkgName)}} planData.Deprecated{{.ResourceClassName}} = stateData.Deprecated{{.ResourceClassName}} + } + {{- end }} {{- end }} {{- end }} {{- end }} - } - {{- end }} {{ end }} {{ range .LegacyBlocks}}{{$ClassName := .ClassName}}{{$Attributes := .Attributes}} diff --git a/gen/templates/resource_example.tf.tmpl b/gen/templates/resource_example.tf.tmpl index 4cb5d26f6..7ad76667a 100644 --- a/gen/templates/resource_example.tf.tmpl +++ b/gen/templates/resource_example.tf.tmpl @@ -6,7 +6,7 @@ resource "aci_{{$.ResourceName}}" "example_{{getResourceName $key $.Definitions} {{- range $.Properties}}{{- if .IsRequired}}{{- if ne .NamedPropertyClass ""}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = aci_{{getResourceName .NamedPropertyClass $.Definitions}}.example.name {{- else if eq .SnakeCaseName "t_dn" }} - {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = {{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions}} + {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = {{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions | replace ".test_0.id" ".example.id"}} {{- else}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = "{{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions}}"{{- end}}{{- end}} {{- end}} diff --git a/gen/templates/resource_example_all_attributes.tf.tmpl b/gen/templates/resource_example_all_attributes.tf.tmpl index 74d254364..47a48a655 100644 --- a/gen/templates/resource_example_all_attributes.tf.tmpl +++ b/gen/templates/resource_example_all_attributes.tf.tmpl @@ -6,7 +6,7 @@ resource "aci_{{$.ResourceName}}" "full_example_{{getResourceName $key $.Definit {{- range $.Properties}}{{- if ne .NamedPropertyClass ""}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = aci_{{getResourceName .NamedPropertyClass $.Definitions}}.example.name {{- else if eq .SnakeCaseName "t_dn" }} - {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = {{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions}} + {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = {{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions | replace ".test_0.id" ".example.id"}} {{- else if eq .ValueType "bitmask"}}{{ $bitmaskTestValue := lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = [{{range $index, $value := $bitmaskTestValue}}{{if lt $index (substract (len $bitmaskTestValue) 1)}}"{{$value}}",{{else}}"{{$value}}"{{end}}{{end}}] {{- else}} @@ -28,7 +28,7 @@ resource "aci_{{$.ResourceName}}" "full_example" { {{- range $.Properties}}{{- if ne .NamedPropertyClass ""}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = aci_{{getResourceName .NamedPropertyClass $.Definitions}}.example.name {{- else if eq .SnakeCaseName "t_dn" }} - {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = {{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions}} + {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = {{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions | replace ".test_0.id" ".example.id"}} {{- else}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = "{{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions}}" {{- end}}{{- end}} diff --git a/gen/templates/resource_test.go.tmpl b/gen/templates/resource_test.go.tmpl index 1e1734ab8..a723ebd54 100644 --- a/gen/templates/resource_test.go.tmpl +++ b/gen/templates/resource_test.go.tmpl @@ -11,7 +11,7 @@ import ( ) {{- if .parents}} - {{- range .parents}} + {{- range .parents}}{{$target_classes := .target_classes}} func TestAccResource{{$.resourceClassName}}With{{capitalize .class_name}}(t *testing.T) { resource.Test(t, resource.TestCase{ @@ -26,7 +26,7 @@ func TestAccResource{{$.resourceClassName}}With{{capitalize .class_name}}(t *tes {{- range $key, $value := $.resource_required}}{{$contains := definedInMap $key $.default}} {{- if not $contains}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false $target_classes 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -52,7 +52,7 @@ func TestAccResource{{$.resourceClassName}}With{{capitalize .class_name}}(t *tes {{- range $key, $value := $.resource_required}}{{$contains := definedInMap $key $.all}} {{- if not $contains}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false $target_classes 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -77,7 +77,7 @@ func TestAccResource{{$.resourceClassName}}With{{capitalize .class_name}}(t *tes Check: resource.ComposeAggregateTestCheckFunc( {{- range $key, $value := $.resource_required}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false $target_classes 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -104,7 +104,7 @@ func TestAccResource{{$.resourceClassName}}With{{capitalize .class_name}}(t *tes Check: resource.ComposeAggregateTestCheckFunc( {{- range $key, $value := $.resource_required}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false $target_classes 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -131,7 +131,7 @@ func TestAccResource{{$.resourceClassName}}With{{capitalize .class_name}}(t *tes Check: resource.ComposeAggregateTestCheckFunc( {{- range $key, $value := $.resource_required}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false $target_classes 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -158,7 +158,7 @@ func TestAccResource{{$.resourceClassName}}With{{capitalize .class_name}}(t *tes Check: resource.ComposeAggregateTestCheckFunc( {{- range $key, $value := $.resource_required}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false $target_classes 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -178,7 +178,9 @@ func TestAccResource{{$.resourceClassName}}With{{capitalize .class_name}}(t *tes {{- range $key, $value := $.children}} {{- range $child_index, $child := $value}} {{- range $child_key, $child_value := $child}} - {{- if ne $child_key "deletable_child"}} + {{- if eq $child_key "target_dn"}} + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}.{{$child_index}}.{{$child_key}}", "{{getTestTargetDn $.child_targets $key $child_value false nil $child_index}}"), + {{- else if ne $child_key "deletable_child"}} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}.{{$child_index}}.{{$child_key}}", "{{$child_value}}"), {{- end}} {{- end}} @@ -194,7 +196,7 @@ func TestAccResource{{$.resourceClassName}}With{{capitalize .class_name}}(t *tes Check: resource.ComposeAggregateTestCheckFunc( {{- range $key, $value := $.resource_required}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false $target_classes 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -214,7 +216,9 @@ func TestAccResource{{$.resourceClassName}}With{{capitalize .class_name}}(t *tes {{- range $key, $value := $.children}} {{- range $child_index, $child := $value}} {{- range $child_key, $child_value := $child}} - {{- if ne $child_key "deletable_child"}} + {{- if eq $child_key "target_dn"}} + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}.{{$child_index}}.{{$child_key}}", "{{getTestTargetDn $.child_targets $key $child_value false nil $child_index}}"), + {{- else if ne $child_key "deletable_child"}} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}.{{$child_index}}.{{$child_key}}", "{{$child_value}}"), {{- end}} {{- end}} @@ -245,7 +249,9 @@ func TestAccResource{{$.resourceClassName}}With{{capitalize .class_name}}(t *tes {{- range $key, $value := $.children}} {{- range $child_index, $child := $value}} {{- range $child_key, $child_value := $child}} - {{- if ne $child_key "deletable_child"}} + {{- if eq $child_key "target_dn"}} + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}.{{$child_index}}.{{$child_key}}", "{{getTestTargetDn $.child_targets $key $child_value false nil $child_index}}"), + {{- else if ne $child_key "deletable_child"}} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}.{{$child_index}}.{{$child_key}}", "{{$child_value}}"), {{- end}} {{- end}} @@ -277,7 +283,9 @@ func TestAccResource{{$.resourceClassName}}With{{capitalize .class_name}}(t *tes resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}.#", "0"), {{- else}} {{- range $child_key, $child_value := $child}} - {{- if ne $child_key "deletable_child"}} + {{- if eq $child_key "target_dn"}} + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}.0.{{$child_key}}", "{{getTestTargetDn $.child_targets $key $child_value false nil 0}}"), + {{- else if ne $child_key "deletable_child"}} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}.0.{{$child_key}}", "{{$child_value}}"), {{- end}} {{- end}} @@ -286,7 +294,11 @@ func TestAccResource{{$.resourceClassName}}With{{capitalize .class_name}}(t *tes {{- else}} {{- $child := index $value 1 }} {{- range $child_key, $child_value := $child}} + {{- if eq $child_key "target_dn"}} + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}.0.{{$child_key}}", "{{getTestTargetDn $.child_targets $key $child_value false nil 1}}"), + {{- else}} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}.0.{{$child_key}}", "{{$child_value}}"), + {{- end}} {{- end}} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}.#", "1"), {{- end}} @@ -343,7 +355,7 @@ func TestAccResource{{.resourceClassName}}(t *testing.T) { {{- range $key, $value := .resource_required}}{{$contains := definedInMap $key $.default}} {{- if not $contains}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false nil 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -368,7 +380,7 @@ func TestAccResource{{.resourceClassName}}(t *testing.T) { {{- range $key, $value := .resource_required}}{{$contains := definedInMap $key $.all}} {{- if not $contains}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false nil 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -393,7 +405,7 @@ func TestAccResource{{.resourceClassName}}(t *testing.T) { {{- range $key, $value := .resource_required}}{{$contains := definedInMap $key $.all}} {{- if not $contains}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false nil 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -425,7 +437,7 @@ func TestAccResource{{.resourceClassName}}(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( {{- range $key, $value := $.resource_required}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false nil 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -452,7 +464,7 @@ func TestAccResource{{.resourceClassName}}(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( {{- range $key, $value := $.resource_required}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false nil 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -478,7 +490,7 @@ func TestAccResource{{.resourceClassName}}(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( {{- range $key, $value := .min}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false nil 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -513,7 +525,7 @@ func TestAccResource{{.resourceClassName}}(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( {{- range $key, $value := .min}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false nil 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -552,7 +564,7 @@ func TestAccResource{{.resourceClassName}}(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( {{- range $key, $value := .min}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false nil 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -597,7 +609,7 @@ func TestAccResource{{.resourceClassName}}(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( {{- range $key, $value := .min}} {{- if eq $key "target_dn" }} - resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$.targetDn}}"), + resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{getTestTargetDn $.targets $.resourceName $value false nil 0}}"), {{- else }} resource.TestCheckResourceAttr("aci_{{$.resourceName}}.test", "{{$key}}", "{{$value}}"), {{- end }} @@ -638,34 +650,51 @@ func TestAccResource{{.resourceClassName}}(t *testing.T) { } {{end}} +{{ $dependencies := false }} {{- if ne .targets nil }} - {{- range .targets}} +{{ $dependencies = true }} +const testDependencyConfig{{$.resourceClassName}} = ` + {{- range $index, $target := .targets}} {{- if ne .parent_dependency "" }} -const testConfig{{.class_name}}MinDependencyWith{{capitalize .parent_dependency}} = ` -resource "aci_{{$.targetResourceName}}" "test" { - parent_dn = {{.parent_dependency_dn}} - {{- range $key, $value := .resource_required}} +resource "aci_{{$target.target_resource_name}}" "test_{{$index}}" { + {{$target.parent_dn_key}} = {{$target.parent_dependency_dn_ref}} + {{- range $key, $value := $target.properties}} {{$key}} = "{{$value}}" {{- end}} } -` + {{- end }} {{- end }} +` {{- end }} -{{ $parentConfig := "" }} -{{- if ne $.targetResourceParentClassName "" }} - {{ $parentConfig = getTestConfigVariableName $.targetResourceClassName "MinDependencyWith" $.targetResourceParentClassName }} +{{ $childDependencies := false }} +{{- if ne .child_targets nil }} +{{ $childDependencies = true }} +const testChildDependencyConfig{{$.resourceClassName}} = ` + {{- range $index, $target := .child_targets}} + {{- if ne .parent_dependency "" }} +resource "aci_{{$target.target_resource_name}}" "test_{{$index}}" { + {{$target.parent_dn_key}} = {{$target.parent_dependency_dn_ref}} + {{- range $key, $value := $target.properties}} + {{$key}} = "{{$value}}" + {{- end}} +} + + {{- end }} + {{- end }} +` {{- end }} + {{- if .parents}} - {{- range .parents}} + {{- range .parents}}{{$target_classes := .target_classes}} -const testConfig{{$.resourceClassName}}MinDependencyWith{{capitalize .class_name}} = {{- if ne $parentConfig ""}} {{ $parentConfig }} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` +const testConfig{{$.resourceClassName}}MinDependencyWith{{capitalize .class_name}} = {{- if $dependencies }} testDependencyConfig{{$.resourceClassName}} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` resource "aci_{{$.resourceName}}" "test" { parent_dn = {{.parent_dn}} {{- range $key, $value := $.resource_required}} {{- if eq $key "target_dn" }} - {{$key}} = {{$value}} + {{$key}} = {{getTestTargetDn $.targets $.resourceName $value true $target_classes 0}} {{- else }} {{$key}} = "{{$value}}" {{- end }} @@ -673,13 +702,13 @@ resource "aci_{{$.resourceName}}" "test" { } ` -const testConfig{{$.resourceClassName}}AllDependencyWith{{capitalize .class_name}} = {{- if ne $parentConfig ""}} {{ $parentConfig }} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` +const testConfig{{$.resourceClassName}}AllDependencyWith{{capitalize .class_name}} = {{- if $dependencies }} testDependencyConfig{{$.resourceClassName}} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` resource "aci_{{$.resourceName}}" "test" { parent_dn = {{.parent_dn}} {{- range $key, $value := $.resource_required}}{{$contains := definedInMap $key $.all}} {{- if not $contains}} {{- if eq $key "target_dn" }} - {{$key}} = {{$value}} + {{$key}} = {{getTestTargetDn $.targets $.resourceName $value true $target_classes 0}} {{- else }} {{$key}} = "{{$value}}" {{- end }} @@ -699,13 +728,13 @@ resource "aci_{{$.resourceName}}" "test" { } ` -const testConfig{{$.resourceClassName}}ResetDependencyWith{{capitalize .class_name}} = {{- if ne $parentConfig ""}} {{ $parentConfig }} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` +const testConfig{{$.resourceClassName}}ResetDependencyWith{{capitalize .class_name}} = {{- if $dependencies }} testDependencyConfig{{$.resourceClassName}} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` resource "aci_{{$.resourceName}}" "test" { parent_dn = {{.parent_dn}} {{- range $key, $value := $.resource_required}}{{$contains := definedInMap $key $.default}} {{- if not $contains}} {{- if eq $key "target_dn" }} - {{$key}} = {{$value}} + {{$key}} = {{getTestTargetDn $.targets $.resourceName $value true $target_classes 0}} {{- else }} {{$key}} = "{{$value}}" {{- end }} @@ -726,25 +755,27 @@ resource "aci_{{$.resourceName}}" "test" { ` {{- if $.children}} -const testConfig{{$.resourceClassName}}ChildrenDependencyWith{{capitalize .class_name}} = {{- if ne $parentConfig ""}} {{ $parentConfig }} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` +const testConfig{{$.resourceClassName}}ChildrenDependencyWith{{capitalize .class_name}} = {{- if $dependencies }} testDependencyConfig{{$.resourceClassName}} + {{- end }}{{- if $childDependencies }} testChildDependencyConfig{{$.resourceClassName}} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` resource "aci_{{$.resourceName}}" "test" { parent_dn = {{.parent_dn}} {{- range $key, $value := $.resource_required}} {{- if eq $key "target_dn" }} - {{$key}} = {{$value}} + {{$key}} = {{getTestTargetDn $.targets $.resourceName $value true $target_classes 0}} {{- else }} {{$key}} = "{{$value}}" {{- end }} {{- end}} - {{- range $key, $value := $.children}} + {{- range $key, $value := $.children}}{{$index := 0}} {{$key}} = [ {{- range $child := $value}} { {{- range $child_key, $child_value := $child}} - {{- if ne $child_key "deletable_child"}} + {{- if eq $child_key "target_dn"}} + {{$child_key}} = {{getTestTargetDn $.child_targets $key $child_value true nil $index}} + {{- else if ne $child_key "deletable_child"}} {{$child_key}} = "{{$child_value}}" {{- end}} - {{- end}} + {{- end}}{{ $index = add $index 1 }} }, {{- end}} ] @@ -752,12 +783,12 @@ resource "aci_{{$.resourceName}}" "test" { } ` -const testConfig{{$.resourceClassName}}ChildrenRemoveFromConfigDependencyWith{{capitalize .class_name}} = {{- if ne $parentConfig ""}} {{ $parentConfig }} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` +const testConfig{{$.resourceClassName}}ChildrenRemoveFromConfigDependencyWith{{capitalize .class_name}} = {{- if $dependencies }} testDependencyConfig{{$.resourceClassName}} + {{- end }}{{- if $childDependencies }} testChildDependencyConfig{{$.resourceClassName}} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` resource "aci_{{$.resourceName}}" "test" { parent_dn = {{.parent_dn}} {{- range $key, $value := $.resource_required}} {{- if eq $key "target_dn" }} - {{$key}} = {{$value}} + {{$key}} = {{getTestTargetDn $.targets $.resourceName $value true $target_classes 0}} {{- else }} {{$key}} = "{{$value}}" {{- end }} @@ -765,12 +796,12 @@ resource "aci_{{$.resourceName}}" "test" { } ` -const testConfig{{$.resourceClassName}}ChildrenRemoveOneDependencyWith{{capitalize .class_name}} = {{- if ne $parentConfig ""}} {{ $parentConfig }} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` +const testConfig{{$.resourceClassName}}ChildrenRemoveOneDependencyWith{{capitalize .class_name}} = {{- if $dependencies }} testDependencyConfig{{$.resourceClassName}} + {{- end }}{{- if $childDependencies }} testChildDependencyConfig{{$.resourceClassName}} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` resource "aci_{{$.resourceName}}" "test" { parent_dn = {{.parent_dn}} {{- range $key, $value := $.resource_required}} {{- if eq $key "target_dn" }} - {{$key}} = {{$value}} + {{$key}} = {{getTestTargetDn $.targets $.resourceName $value true $target_classes 0}} {{- else }} {{$key}} = "{{$value}}" {{- end }} @@ -784,9 +815,13 @@ resource "aci_{{$.resourceName}}" "test" { {{- else}} {{$key}} = [ {{$child := index $value 1 }} { - {{- range $child_key, $child_value := $child}} + {{- range $child_key, $child_value := $child}} + {{- if eq $child_key "target_dn"}} + {{$child_key}} = {{getTestTargetDn $.child_targets $key $child_value true nil 1}} + {{- else }} {{$child_key}} = "{{$child_value}}" - {{- end}} + {{- end}} + {{- end}} }, ] {{- end}} @@ -794,12 +829,12 @@ resource "aci_{{$.resourceName}}" "test" { } ` -const testConfig{{$.resourceClassName}}ChildrenRemoveAllDependencyWith{{capitalize .class_name}} = {{- if ne $parentConfig ""}} {{ $parentConfig }} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` +const testConfig{{$.resourceClassName}}ChildrenRemoveAllDependencyWith{{capitalize .class_name}} = {{- if $dependencies }} testDependencyConfig{{$.resourceClassName}} + {{- end }}{{- if $childDependencies }} testChildDependencyConfig{{$.resourceClassName}} + {{- end }} testConfig{{capitalize .class_name}}Min{{- if ne .parent_dependency ""}}DependencyWith{{capitalize .parent_dependency}}{{if and (ne .parent_dependency_name nil) (ne .parent_dependency_name "")}}{{capitalize .parent_dependency_name }}{{- end }}{{- end}} + ` resource "aci_{{$.resourceName}}" "test" { parent_dn = {{.parent_dn}} {{- range $key, $value := $.resource_required}} {{- if eq $key "target_dn" }} - {{$key}} = {{$value}} + {{$key}} = {{getTestTargetDn $.targets $.resourceName $value true $target_classes 0}} {{- else }} {{$key}} = "{{$value}}" {{- end }} @@ -870,18 +905,26 @@ resource "aci_{{$.resourceName}}" "test" { ` {{- if $.children}} -const testConfig{{.resourceClassName}}Children = ` +const testConfig{{.resourceClassName}}Children = {{- if $childDependencies }} testChildDependencyConfig{{$.resourceClassName}} + {{- end }}` resource "aci_{{$.resourceName}}" "test" { {{- range $key, $value := $.resource_required}} + {{- if eq $key "target_dn" }} + {{$key}} = {{getTestTargetDn $.targets $.resourceName $value true nil 0}} + {{- else }} {{$key}} = "{{$value}}" + {{- end }} {{- end}} - {{- range $key, $value := $.children}} + {{- range $key, $value := $.children}}{{$index := 0}} {{$key}} = [ {{- range $child := $value}} { {{- range $child_key, $child_value := $child}} + {{- if eq $child_key "target_dn"}} + {{$child_key}} = {{getTestTargetDn $.child_targets $key $child_value true nil $index}} + {{- else if ne $child_key "deletable_child"}} {{$child_key}} = "{{$child_value}}" - {{- end}} + {{- end}} + {{- end}}{{ $index = add $index 1 }} }, {{- end}} ] @@ -889,35 +932,58 @@ resource "aci_{{$.resourceName}}" "test" { } ` -const testConfig{{.resourceClassName}}ChildrenRemoveFromConfig = ` +const testConfig{{.resourceClassName}}ChildrenRemoveFromConfig = {{- if $childDependencies }} testChildDependencyConfig{{$.resourceClassName}} + {{- end }}` resource "aci_{{$.resourceName}}" "test" { {{- range $key, $value := $.resource_required}} + {{- if eq $key "target_dn" }} + {{$key}} = {{getTestTargetDn $.targets $.resourceName $value true nil 0}} + {{- else }} {{$key}} = "{{$value}}" + {{- end }} {{- end}} } ` -const testConfig{{.resourceClassName}}ChildrenRemoveOne = ` +const testConfig{{.resourceClassName}}ChildrenRemoveOne = {{- if $childDependencies }} testChildDependencyConfig{{$.resourceClassName}} + {{- end }}` resource "aci_{{$.resourceName}}" "test" { {{- range $key, $value := $.resource_required}} + {{- if eq $key "target_dn" }} + {{$key}} = {{getTestTargetDn $.targets $.resourceName $value true nil 0}} + {{- else }} {{$key}} = "{{$value}}" + {{- end }} {{- end}} {{- range $key, $value := $.children}} + {{- if eq (len $value) 1}} + {{- $child := index $value 0}} + {{- if $child.deletable_child}} + {{$key}} = [] + {{- end}} + {{- else}} {{$key}} = [ {{$child := index $value 1 }} { - {{- range $child_key, $child_value := $child}} + {{- range $child_key, $child_value := $child}} + {{- if eq $child_key "target_dn"}} + {{$child_key}} = {{getTestTargetDn $.child_targets $key $child_value true nil 1}} + {{- else }} {{$child_key}} = "{{$child_value}}" - {{- end}} + {{- end}} + {{- end}} }, ] + {{- end}} {{- end}} } ` -const testConfig{{.resourceClassName}}ChildrenRemoveAll = ` +const testConfig{{.resourceClassName}}ChildrenRemoveAll = {{- if $childDependencies }} testChildDependencyConfig{{$.resourceClassName}} + {{- end }}` resource "aci_{{$.resourceName}}" "test" { {{- range $key, $value := $.resource_required}} + {{- if eq $key "target_dn" }} + {{$key}} = {{getTestTargetDn $.targets $.resourceName $value true nil 0}} + {{- else }} {{$key}} = "{{$value}}" + {{- end }} {{- end}} {{- range $key, $value := $.children}} {{$key}} = [] diff --git a/gen/templates/testvars.yaml.tmpl b/gen/templates/testvars.yaml.tmpl index 0eb150b0d..10ae297a3 100644 --- a/gen/templates/testvars.yaml.tmpl +++ b/gen/templates/testvars.yaml.tmpl @@ -33,27 +33,21 @@ default: datasource_non_existing: {{- range .Properties}}{{$testValue := createNonExistingValue .SnakeCaseName}}{{$overwritePropertyName := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} - {{- if eq .SnakeCaseName "t_dn" }} - {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}}: {{overwritePropertyValue .PkgName $overwritePropertyName $testValue "resource_required" 0 $.Definitions}} - {{- else if or .IsNaming }} + {{- if .IsNaming }} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}}: "{{overwritePropertyValue .PkgName $overwritePropertyName $testValue "datasource_non_existing" 0 $.Definitions}}" {{- end}} {{- end}} datasource_required: {{- range .Properties}}{{$testValue := createTestValue .SnakeCaseName}}{{$overwritePropertyName := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} - {{- if eq .SnakeCaseName "t_dn" }} - {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}}: {{overwritePropertyValue .PkgName $overwritePropertyName $testValue "resource_required" 0 $.Definitions}} - {{- else if or .IsNaming }} + {{- if .IsNaming }} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}}: "{{overwritePropertyValue .PkgName $overwritePropertyName $testValue "datasource_required" 0 $.Definitions}}" {{- end}} {{- end}} resource_required: {{- range .Properties}}{{$testValue := createTestValue .SnakeCaseName}}{{$overwritePropertyName := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} - {{- if eq .SnakeCaseName "t_dn" }} - {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}}: {{overwritePropertyValue .PkgName $overwritePropertyName $testValue "resource_required" 0 $.Definitions}} - {{- else if or .IsNaming .IsRequired}} + {{- if or .IsNaming .IsRequired}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}}: "{{overwritePropertyValue .PkgName $overwritePropertyName $testValue "resource_required" 0 $.Definitions}}" {{- end}} {{- end}} @@ -109,37 +103,53 @@ children: {{ end}}{{- end}}{{- end}}{{- end}} {{- if .ContainedBy}} parents: - {{- $index := 0}}{{- range $key := .DocumentationExamples}}{{$parentDependency := getParentTestDependencies $.PkgName $index $.Definitions}} + {{- $index := 0}}{{- range $key := .DocumentationExamples}}{{$parentDependency := getParentTestDependencies $.PkgName $index $.Definitions}}{{$index = add $index 1}} - class_name: "{{ $key }}" parent_dependency: "{{$parentDependency.parent_dependency}}" parent_dn: "{{createParentDnValue $key "test" $.Definitions}}" class_in_parent: {{$parentDependency.class_in_parent}} {{- if ne $parentDependency.parent_dependency_name "" }} - parent_dependency_name: "{{$parentDependency.parent_dependency_name}}"{{$index = add $index 1}} + parent_dependency_name: "{{$parentDependency.parent_dependency_name}}" {{- end }} + {{- if ne (len $parentDependency.target_classes) 0}} + target_classes: + {{- range $parentDependency.target_classes}} + - "{{ . }}" + {{- end}} + {{- end}} {{- end}} - - {{- $index := 0}}{{- $key := .TargetResourceClassName}} - {{- if ne $key "" }} - + {{- if .TestDependencies}} targets: - {{- $targetDependency := getTargetTestDependencies $.PkgName $index $.Definitions}} - - class_name: "{{ $key }}" - {{- if ne $targetDependency.target_dn "" }} - target_dn: "{{ $targetDependency.target_dn }}" - {{- else }} + {{- range .TestDependencies }} + - class_name: "{{ .ClassName }}" target_dn: "{{ .TargetDn }}" - {{- end }} - parent_dn: "{{createParentDnValue $key "test" $.Definitions}}" - parent_dependency: "{{$targetDependency.parent_dependency}}" - parent_dependency_dn: "{{$targetDependency.parent_dependency_dn}}" - resource_required: - {{- range $.TargetProperties}}{{$testValue := createTestValue .SnakeCaseName}}{{$overwritePropertyName := overwriteProperty $key .SnakeCaseName $.Definitions}} - {{- if eq .SnakeCaseName "t_dn" }} - {{overwriteProperty $key .SnakeCaseName $.Definitions}}: {{overwritePropertyValue $key $overwritePropertyName $testValue "resource_required" 0 $.Definitions}} - {{- else if or .IsNaming .IsRequired}} - {{overwriteProperty $key .SnakeCaseName $.Definitions}}: "{{overwritePropertyValue $key $overwritePropertyName $testValue "resource_required" 0 $.Definitions}}" - {{- end}} - {{- end}}{{$index = add $index 1}} + target_dn_ref: "{{ .TargetDnRef }}" + parent_dependency: "{{ .ParentDependency}}" + parent_dependency_dn_ref: "{{.ParentDependencyDnRef}}" + target_resource_name: "{{ .TargetResourceName }}" + relation_resource_name: "{{ .RelationResourceName }}" + parent_dn_key: "{{ .ParentDnKey }}" + properties: + {{- range $key, $value := .Properties}} + {{ $key }}: "{{ $value }}" + {{- end }} + {{- end }} {{- end }} - {{- end}} + {{- if .ChildTestDependencies}} +child_targets: + {{- range .ChildTestDependencies }} + - class_name: "{{ .ClassName }}" + target_dn: "{{ .TargetDn }}" + target_dn_ref: "{{ .TargetDnRef }}" + parent_dependency: "{{ .ParentDependency}}" + parent_dependency_dn_ref: "{{.ParentDependencyDnRef}}" + target_resource_name: "{{ .TargetResourceName }}" + relation_resource_name: "{{ .RelationResourceName }}" + parent_dn_key: "{{ .ParentDnKey }}" + properties: + {{- range $key, $value := .Properties}} + {{ $key }}: "{{ $value }}" + {{- end }} + {{- end }} + {{- end }} +{{- end}} diff --git a/gen/testvars/fvESg.yaml b/gen/testvars/fvESg.yaml new file mode 100644 index 000000000..dfd03ed7e --- /dev/null +++ b/gen/testvars/fvESg.yaml @@ -0,0 +1,122 @@ +# Code generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +default: + annotation: "orchestrator:terraform" + description: "" + exception_tag: "" + match_criteria: "AtleastOne" + name_alias: "" + intra_esg_isolation: "unenforced" + preferred_group_member: "exclude" + admin_state: "no" + +datasource_non_existing: + name: "non_existing_name" + +datasource_required: + name: "test_name" + +resource_required: + name: "test_name" + +all: + annotation: "annotation" + description: "description" + exception_tag: "exception_tag" + match_criteria: "All" + name_alias: "name_alias" + intra_esg_isolation: "enforced" + preferred_group_member: "exclude" + admin_state: "no" + +children: + relation_to_consumed_contracts: + - annotation: "annotation_1" + priority: "level1" + contract_name: "contract_name_0" + + - annotation: "annotation_2" + priority: "level2" + contract_name: "contract_name_1" + + relation_to_consumed_contract_interfaces: + - annotation: "annotation_1" + priority: "level1" + contract_interface_name: "contract_interface_name_0" + + - annotation: "annotation_2" + priority: "level2" + contract_interface_name: "contract_interface_name_1" + + relation_to_intra_epg_contracts: + - annotation: "annotation_1" + contract_name: "contract_name_0" + + - annotation: "annotation_2" + contract_name: "contract_name_1" + + relation_to_provided_contracts: + - annotation: "annotation_1" + match_criteria: "All" + priority: "level1" + contract_name: "contract_name_0" + + - annotation: "annotation_2" + match_criteria: "AtleastOne" + priority: "level2" + contract_name: "contract_name_1" + + relation_to_vrf: + - annotation: "annotation_1" + vrf_name: "vrf_name_1" + deletable_child: false + + relation_to_contract_masters: + - annotation: "annotation_1" + target_dn: "target_dn_0" + + - annotation: "annotation_2" + target_dn: "target_dn_1" + + annotations: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + + tags: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + +parents: + - class_name: "fvAp" + parent_dependency: "fvTenant" + parent_dn: "aci_application_profile.test.id" + class_in_parent: false +child_targets: + - class_name: "fvESg" + target_dn: "uni/tn-test_tenant/ap-test_ap/esg-esg_0" + target_dn_ref: "aci_endpoint_security_group.test_0.id" + parent_dependency: "fvAp" + parent_dependency_dn_ref: "aci_application_profile.test.id" + target_resource_name: "endpoint_security_group" + relation_resource_name: "contract_master" + parent_dn_key: "application_profile_dn" + properties: + name: "esg_0" + - class_name: "fvESg" + target_dn: "uni/tn-test_tenant/ap-test_ap/esg-esg_1" + target_dn_ref: "aci_endpoint_security_group.test_1.id" + parent_dependency: "fvAp" + parent_dependency_dn_ref: "aci_application_profile.test.id" + target_resource_name: "endpoint_security_group" + relation_resource_name: "contract_master" + parent_dn_key: "application_profile_dn" + properties: + name: "esg_1" diff --git a/gen/testvars/fvRsCons.yaml b/gen/testvars/fvRsCons.yaml new file mode 100644 index 000000000..f294cb732 --- /dev/null +++ b/gen/testvars/fvRsCons.yaml @@ -0,0 +1,45 @@ +# Code generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +default: + annotation: "orchestrator:terraform" + priority: "unspecified" + +datasource_non_existing: + contract_name: "non_existing_tn_vz_br_cp_name" + +datasource_required: + contract_name: "test_tn_vz_br_cp_name" + +resource_required: + contract_name: "test_tn_vz_br_cp_name" + +all: + annotation: "annotation" + priority: "level1" + +children: + annotations: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + + tags: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + +parents: + - class_name: "fvAEPg" + parent_dependency: "fvAp" + parent_dn: "aci_application_epg.test.id" + class_in_parent: false + - class_name: "fvESg" + parent_dependency: "fvAp" + parent_dn: "aci_endpoint_security_group.test.id" + class_in_parent: false diff --git a/gen/testvars/fvRsConsIf.yaml b/gen/testvars/fvRsConsIf.yaml new file mode 100644 index 000000000..5ac54b4f8 --- /dev/null +++ b/gen/testvars/fvRsConsIf.yaml @@ -0,0 +1,45 @@ +# Code generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +default: + annotation: "orchestrator:terraform" + priority: "unspecified" + +datasource_non_existing: + contract_interface_name: "non_existing_tn_vz_cp_if_name" + +datasource_required: + contract_interface_name: "test_tn_vz_cp_if_name" + +resource_required: + contract_interface_name: "test_tn_vz_cp_if_name" + +all: + annotation: "annotation" + priority: "level1" + +children: + annotations: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + + tags: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + +parents: + - class_name: "fvAEPg" + parent_dependency: "fvAp" + parent_dn: "aci_application_epg.test.id" + class_in_parent: false + - class_name: "fvESg" + parent_dependency: "fvAp" + parent_dn: "aci_endpoint_security_group.test.id" + class_in_parent: false diff --git a/gen/testvars/fvRsIntraEpg.yaml b/gen/testvars/fvRsIntraEpg.yaml new file mode 100644 index 000000000..0a252c25c --- /dev/null +++ b/gen/testvars/fvRsIntraEpg.yaml @@ -0,0 +1,43 @@ +# Code generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +default: + annotation: "orchestrator:terraform" + +datasource_non_existing: + contract_name: "non_existing_tn_vz_br_cp_name" + +datasource_required: + contract_name: "test_tn_vz_br_cp_name" + +resource_required: + contract_name: "test_tn_vz_br_cp_name" + +all: + annotation: "annotation" + +children: + annotations: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + + tags: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + +parents: + - class_name: "fvAEPg" + parent_dependency: "fvAp" + parent_dn: "aci_application_epg.test.id" + class_in_parent: false + - class_name: "fvESg" + parent_dependency: "fvAp" + parent_dn: "aci_endpoint_security_group.test.id" + class_in_parent: false diff --git a/gen/testvars/fvRsProtBy.yaml b/gen/testvars/fvRsProtBy.yaml new file mode 100644 index 000000000..744d0f63f --- /dev/null +++ b/gen/testvars/fvRsProtBy.yaml @@ -0,0 +1,39 @@ +# Code generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +default: + annotation: "orchestrator:terraform" + +datasource_non_existing: + taboo_contract_name: "non_existing_tn_vz_taboo_name" + +datasource_required: + taboo_contract_name: "test_tn_vz_taboo_name" + +resource_required: + taboo_contract_name: "test_tn_vz_taboo_name" + +all: + annotation: "annotation" + +children: + annotations: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + + tags: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + +parents: + - class_name: "fvAEPg" + parent_dependency: "fvAp" + parent_dn: "aci_application_epg.test.id" + class_in_parent: false diff --git a/gen/testvars/fvRsProv.yaml b/gen/testvars/fvRsProv.yaml new file mode 100644 index 000000000..8e0adc3d3 --- /dev/null +++ b/gen/testvars/fvRsProv.yaml @@ -0,0 +1,47 @@ +# Code generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +default: + annotation: "orchestrator:terraform" + match_criteria: "AtleastOne" + priority: "unspecified" + +datasource_non_existing: + contract_name: "non_existing_tn_vz_br_cp_name" + +datasource_required: + contract_name: "test_tn_vz_br_cp_name" + +resource_required: + contract_name: "test_tn_vz_br_cp_name" + +all: + annotation: "annotation" + match_criteria: "All" + priority: "level1" + +children: + annotations: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + + tags: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + +parents: + - class_name: "fvAEPg" + parent_dependency: "fvAp" + parent_dn: "aci_application_epg.test.id" + class_in_parent: false + - class_name: "fvESg" + parent_dependency: "fvAp" + parent_dn: "aci_endpoint_security_group.test.id" + class_in_parent: false diff --git a/gen/testvars/fvRsSecInherited.yaml b/gen/testvars/fvRsSecInherited.yaml new file mode 100644 index 000000000..3204eba52 --- /dev/null +++ b/gen/testvars/fvRsSecInherited.yaml @@ -0,0 +1,88 @@ +# Code generated by "gen/generator.go"; DO NOT EDIT. +# In order to regenerate this file execute `go generate` from the repository root. +# More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +default: + annotation: "orchestrator:terraform" + +datasource_non_existing: + target_dn: "non_existing_t_dn" + +datasource_required: + target_dn: "test_t_dn" + +resource_required: + target_dn: "test_t_dn" + +all: + annotation: "annotation" + +children: + annotations: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + + tags: + - key: "key_0" + value: "value_1" + + - key: "key_1" + value: "value_2" + +parents: + - class_name: "fvAEPg" + parent_dependency: "fvAp" + parent_dn: "aci_application_epg.test.id" + class_in_parent: false + target_classes: + - "fvAEPg" + - class_name: "fvESg" + parent_dependency: "fvAp" + parent_dn: "aci_endpoint_security_group.test.id" + class_in_parent: false + target_classes: + - "fvESg" +targets: + - class_name: "fvESg" + target_dn: "uni/tn-test_tenant/ap-test_ap/esg-esg_0" + target_dn_ref: "aci_endpoint_security_group.test_0.id" + parent_dependency: "fvAp" + parent_dependency_dn_ref: "aci_application_profile.test.id" + target_resource_name: "endpoint_security_group" + relation_resource_name: "contract_master" + parent_dn_key: "application_profile_dn" + properties: + name: "esg_0" + - class_name: "fvESg" + target_dn: "uni/tn-test_tenant/ap-test_ap/esg-esg_1" + target_dn_ref: "aci_endpoint_security_group.test_1.id" + parent_dependency: "fvAp" + parent_dependency_dn_ref: "aci_application_profile.test.id" + target_resource_name: "endpoint_security_group" + relation_resource_name: "contract_master" + parent_dn_key: "application_profile_dn" + properties: + name: "esg_1" + - class_name: "fvAEPg" + target_dn: "uni/tn-test_tenant/ap-test_ap/epg-epg_2" + target_dn_ref: "aci_application_epg.test_2.id" + parent_dependency: "fvAp" + parent_dependency_dn_ref: "aci_application_profile.test.id" + target_resource_name: "application_epg" + relation_resource_name: "contract_master" + parent_dn_key: "application_profile_dn" + properties: + name: "epg_2" + - class_name: "fvAEPg" + target_dn: "uni/tn-test_tenant/ap-test_ap/epg-epg_3" + target_dn_ref: "aci_application_epg.test_3.id" + parent_dependency: "fvAp" + parent_dependency_dn_ref: "aci_application_profile.test.id" + target_resource_name: "application_epg" + relation_resource_name: "contract_master" + parent_dn_key: "application_profile_dn" + properties: + name: "epg_3" diff --git a/gen/testvars/l3extRsOutToFBRGroup.yaml b/gen/testvars/l3extRsOutToFBRGroup.yaml index 12a6716b9..5e44f1614 100644 --- a/gen/testvars/l3extRsOutToFBRGroup.yaml +++ b/gen/testvars/l3extRsOutToFBRGroup.yaml @@ -6,13 +6,13 @@ default: annotation: "orchestrator:terraform" datasource_non_existing: - target_dn: aci_vrf_fallback_route_group.test.id + target_dn: "non_existing_t_dn" datasource_required: - target_dn: aci_vrf_fallback_route_group.test.id + target_dn: "test_t_dn" resource_required: - target_dn: aci_vrf_fallback_route_group.test.id + target_dn: "test_t_dn" all: annotation: "annotation" @@ -37,12 +37,16 @@ parents: parent_dependency: "fvTenant" parent_dn: "aci_l3_outside.test.id" class_in_parent: false - + target_classes: + - "fvFBRGroup" targets: - class_name: "fvFBRGroup" - target_dn: "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group" - parent_dn: "aci_vrf_fallback_route_group.test.id" + target_dn: "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group_0" + target_dn_ref: "aci_vrf_fallback_route_group.test_0.id" parent_dependency: "fvCtx" - parent_dependency_dn: "aci_vrf.test.id" - resource_required: - name: "fallback_route_group" + parent_dependency_dn_ref: "aci_vrf.test.id" + target_resource_name: "vrf_fallback_route_group" + relation_resource_name: "fallback_route_group" + parent_dn_key: "parent_dn" + properties: + name: "fallback_route_group_0" diff --git a/gen/testvars/vzOOBBrCP.yaml b/gen/testvars/vzOOBBrCP.yaml index 2c6696909..e250f6683 100644 --- a/gen/testvars/vzOOBBrCP.yaml +++ b/gen/testvars/vzOOBBrCP.yaml @@ -5,7 +5,6 @@ default: annotation: "orchestrator:terraform" description: "" - intent: "install" name_alias: "" owner_key: "" owner_tag: "" @@ -25,7 +24,6 @@ resource_required: all: annotation: "annotation" description: "description" - intent: "estimate_add" name_alias: "name_alias" owner_key: "owner_key" owner_tag: "owner_tag" diff --git a/internal/provider/data_source_aci_endpoint_security_group.go b/internal/provider/data_source_aci_endpoint_security_group.go new file mode 100644 index 000000000..80e13068b --- /dev/null +++ b/internal/provider/data_source_aci_endpoint_security_group.go @@ -0,0 +1,374 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "fmt" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ datasource.DataSource = &FvESgDataSource{} + +func NewFvESgDataSource() datasource.DataSource { + return &FvESgDataSource{} +} + +// FvESgDataSource defines the data source implementation. +type FvESgDataSource struct { + client *client.Client +} + +func (d *FvESgDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of datasource: aci_endpoint_security_group") + resp.TypeName = req.ProviderTypeName + "_endpoint_security_group" + tflog.Debug(ctx, "End metadata of datasource: aci_endpoint_security_group") +} + +func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of datasource: aci_endpoint_security_group") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The endpoint_security_group datasource for the 'fvESg' class", + + Attributes: map[string]schema.Attribute{ + // Deprecated attributes + "match_t": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute 'match_t' will be deprecated soon, please refer to 'match_criteria' instead", + }, + "application_profile_dn": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute 'application_profile_dn' will be deprecated soon, please refer to 'parent_dn' instead", + }, + "pc_enf_pref": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute 'pc_enf_pref' will be deprecated soon, please refer to 'intra_esg_isolation' instead", + }, + "pref_gr_memb": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute 'pref_gr_memb' will be deprecated soon, please refer to 'preferred_group_member' instead", + }, + "relation_fv_rs_sec_inherited": schema.SetAttribute{ + Computed: true, + ElementType: types.StringType, + DeprecationMessage: "Attribute 'relation_fv_rs_sec_inherited' will be deprecated soon, please refer to 'relation_to_contract_masters.target_dn' instead", + }, + "relation_fv_rs_intra_epg": schema.SetAttribute{ + Computed: true, + ElementType: types.StringType, + DeprecationMessage: "Attribute 'relation_fv_rs_intra_epg' will be deprecated soon, please refer to 'relation_to_intra_epg_contracts.contract_name' instead", + }, + "relation_fv_rs_scope": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute 'relation_fv_rs_scope' will be deprecated soon, please refer to 'relation_to_vrf.vrf_name' instead", + }, + // End of deprecated attributes + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Endpoint Security Group object.", + }, + "parent_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + }, + "annotation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The annotation of the Endpoint Security Group object.`, + }, + "description": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The description of the Endpoint Security Group object.`, + }, + "exception_tag": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `Contract Exception Tag.`, + }, + "match_criteria": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The provider label match criteria.`, + }, + "name": schema.StringAttribute{ + Required: true, + MarkdownDescription: `The name of the Endpoint Security Group object.`, + }, + "name_alias": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The name alias of the Endpoint Security Group object.`, + }, + "intra_esg_isolation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this EPG.`, + }, + "preferred_group_member": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `Represents parameter used to determine if EPg is part of a group that does not a contract for communication.`, + }, + "admin_state": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `Withdraw ESg Configuration from all Nodes in the Fabric.`, + }, + "relation_to_consumed_contracts": schema.SetNestedAttribute{ + MarkdownDescription: `The Consumer contract profile information.`, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "annotation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The annotation of the Relation To Consumed Contract object.`, + }, + "priority": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + }, + "contract_name": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The consumer contract name.`, + }, + }, + }, + }, + "relation_to_consumed_contract_interfaces": schema.SetNestedAttribute{ + MarkdownDescription: `A contract for which the EPG will be a consumer.`, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "annotation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The annotation of the Relation To Consumed Contract Interface object.`, + }, + "priority": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The contract interface priority.`, + }, + "contract_interface_name": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The contract interface name.`, + }, + }, + }, + }, + "relation_to_intra_epg_contracts": schema.SetNestedAttribute{ + MarkdownDescription: `Intra EPg contract: + Represents that the EPg is moving from "allow all within epg" mode + to a "deny all within epg" mode. + The only type of traffic allowed between EPs in this EPg is the one + specified by contracts EPg associates to with this relation.`, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "annotation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The annotation of the Relation To Intra Epg Contract object.`, + }, + "contract_name": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The binary contract name.`, + }, + }, + }, + }, + "relation_to_provided_contracts": schema.SetNestedAttribute{ + MarkdownDescription: `A contract for which the EPG will be a provider.`, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "annotation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The annotation of the Relation To Provided Contract object.`, + }, + "match_criteria": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The matched EPG type.`, + }, + "priority": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + }, + "contract_name": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The provider contract name.`, + }, + }, + }, + }, + "relation_to_vrf": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "annotation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The annotation of the Relation To VRF object.`, + }, + "vrf_name": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `Name.`, + }, + }, + }, + }, + "relation_to_contract_masters": schema.SetNestedAttribute{ + MarkdownDescription: `Represents that the EPg is inheriting security configuration from another EPg`, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "annotation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The annotation of the Relation To Contract Master object.`, + }, + "target_dn": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The distinguished name of the target.`, + }, + }, + }, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + Blocks: map[string]schema.Block{ + "relation_fv_rs_cons": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "target_dn": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute 'target_dn' will be deprecated soon, please refer to 'relation_to_consumed_contracts.contract_name' instead", + }, + "prio": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute 'prio' will be deprecated soon, please refer to 'relation_to_consumed_contracts.priority' instead", + }, + }, + }, + }, + "relation_fv_rs_cons_if": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "target_dn": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute 'target_dn' will be deprecated soon, please refer to 'relation_to_consumed_contract_interfaces.contract_interface_name' instead", + }, + "prio": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute 'prio' will be deprecated soon, please refer to 'relation_to_consumed_contract_interfaces.priority' instead", + }, + }, + }, + }, + "relation_fv_rs_prov": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "target_dn": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute 'target_dn' will be deprecated soon, please refer to 'relation_to_provided_contracts.contract_name' instead", + }, + "match_t": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute 'match_t' will be deprecated soon, please refer to 'relation_to_provided_contracts.match_criteria' instead", + }, + "prio": schema.StringAttribute{ + Computed: true, + DeprecationMessage: "Attribute 'prio' will be deprecated soon, please refer to 'relation_to_provided_contracts.priority' instead", + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of datasource: aci_endpoint_security_group") +} + +func (d *FvESgDataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of datasource: aci_endpoint_security_group") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Data Source Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + d.client = client + tflog.Debug(ctx, "End configure of datasource: aci_endpoint_security_group") +} + +func (d *FvESgDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + tflog.Debug(ctx, "Start read of datasource: aci_endpoint_security_group") + var data *FvESgResourceModel + + // Read Terraform configuration data into the model + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvESgId(ctx, data) + + // Create a copy of the Id for when not found during getAndSetFvESgAttributes + cachedId := data.Id.ValueString() + + tflog.Debug(ctx, fmt.Sprintf("Read of datasource aci_endpoint_security_group with id '%s'", data.Id.ValueString())) + + getAndSetFvESgAttributes(ctx, &resp.Diagnostics, d.client, data) + + if data.Id.IsNull() { + resp.Diagnostics.AddError( + "Failed to read aci_endpoint_security_group data source", + fmt.Sprintf("The aci_endpoint_security_group data source with id '%s' has not been found", cachedId), + ) + return + } + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End read of datasource aci_endpoint_security_group with id '%s'", data.Id.ValueString())) +} diff --git a/internal/provider/data_source_aci_endpoint_security_group_test.go b/internal/provider/data_source_aci_endpoint_security_group_test.go new file mode 100644 index 000000000..34939f37d --- /dev/null +++ b/internal/provider/data_source_aci_endpoint_security_group_test.go @@ -0,0 +1,57 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccDataSourceFvESgWithFvAp(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: testConfigFvESgDataSourceDependencyWithFvAp, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.aci_endpoint_security_group.test", "name", "test_name"), + resource.TestCheckResourceAttr("data.aci_endpoint_security_group.test", "admin_state", "no"), + resource.TestCheckResourceAttr("data.aci_endpoint_security_group.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("data.aci_endpoint_security_group.test", "description", ""), + resource.TestCheckResourceAttr("data.aci_endpoint_security_group.test", "exception_tag", ""), + resource.TestCheckResourceAttr("data.aci_endpoint_security_group.test", "intra_esg_isolation", "unenforced"), + resource.TestCheckResourceAttr("data.aci_endpoint_security_group.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("data.aci_endpoint_security_group.test", "name_alias", ""), + resource.TestCheckResourceAttr("data.aci_endpoint_security_group.test", "preferred_group_member", "exclude"), + ), + }, + { + Config: testConfigFvESgNotExistingFvAp, + ExpectError: regexp.MustCompile("Failed to read aci_endpoint_security_group data source"), + }, + }, + }) +} + +const testConfigFvESgDataSourceDependencyWithFvAp = testConfigFvESgMinDependencyWithFvAp + ` +data "aci_endpoint_security_group" "test" { + parent_dn = aci_application_profile.test.id + name = "test_name" + depends_on = [aci_endpoint_security_group.test] +} +` + +const testConfigFvESgNotExistingFvAp = testConfigFvESgMinDependencyWithFvAp + ` +data "aci_endpoint_security_group" "test_non_existing" { + parent_dn = aci_application_profile.test.id + name = "non_existing_name" + depends_on = [aci_endpoint_security_group.test] +} +` diff --git a/internal/provider/data_source_aci_out_of_band_contract.go b/internal/provider/data_source_aci_out_of_band_contract.go index 28c567b69..09eb6242f 100644 --- a/internal/provider/data_source_aci_out_of_band_contract.go +++ b/internal/provider/data_source_aci_out_of_band_contract.go @@ -52,10 +52,6 @@ func (d *VzOOBBrCPDataSource) Schema(ctx context.Context, req datasource.SchemaR Computed: true, MarkdownDescription: `The description of the Out Of Band Contract object.`, }, - "intent": schema.StringAttribute{ - Computed: true, - MarkdownDescription: `The Install Rules or Estimate Number of Rules.`, - }, "name": schema.StringAttribute{ Required: true, MarkdownDescription: `The name of the Out Of Band Contract object.`, diff --git a/internal/provider/data_source_aci_out_of_band_contract_test.go b/internal/provider/data_source_aci_out_of_band_contract_test.go index 3c8a3d2a1..18ebea700 100644 --- a/internal/provider/data_source_aci_out_of_band_contract_test.go +++ b/internal/provider/data_source_aci_out_of_band_contract_test.go @@ -22,7 +22,6 @@ func TestAccDataSourceVzOOBBrCP(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.aci_out_of_band_contract.test", "annotation", "annotation"), resource.TestCheckResourceAttr("data.aci_out_of_band_contract.test", "description", "description"), - resource.TestCheckResourceAttr("data.aci_out_of_band_contract.test", "intent", "estimate_add"), resource.TestCheckResourceAttr("data.aci_out_of_band_contract.test", "name_alias", "name_alias"), resource.TestCheckResourceAttr("data.aci_out_of_band_contract.test", "owner_key", "owner_key"), resource.TestCheckResourceAttr("data.aci_out_of_band_contract.test", "owner_tag", "owner_tag"), diff --git a/internal/provider/data_source_aci_relation_to_consumed_contract.go b/internal/provider/data_source_aci_relation_to_consumed_contract.go new file mode 100644 index 000000000..28ed14382 --- /dev/null +++ b/internal/provider/data_source_aci_relation_to_consumed_contract.go @@ -0,0 +1,153 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "fmt" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ datasource.DataSource = &FvRsConsDataSource{} + +func NewFvRsConsDataSource() datasource.DataSource { + return &FvRsConsDataSource{} +} + +// FvRsConsDataSource defines the data source implementation. +type FvRsConsDataSource struct { + client *client.Client +} + +func (d *FvRsConsDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of datasource: aci_relation_to_consumed_contract") + resp.TypeName = req.ProviderTypeName + "_relation_to_consumed_contract" + tflog.Debug(ctx, "End metadata of datasource: aci_relation_to_consumed_contract") +} + +func (d *FvRsConsDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of datasource: aci_relation_to_consumed_contract") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The relation_to_consumed_contract datasource for the 'fvRsCons' class", + + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Relation To Consumed Contract object.", + }, + "parent_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + }, + "annotation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The annotation of the Relation To Consumed Contract object.`, + }, + "priority": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + }, + "contract_name": schema.StringAttribute{ + Required: true, + MarkdownDescription: `The consumer contract name.`, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of datasource: aci_relation_to_consumed_contract") +} + +func (d *FvRsConsDataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of datasource: aci_relation_to_consumed_contract") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Data Source Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + d.client = client + tflog.Debug(ctx, "End configure of datasource: aci_relation_to_consumed_contract") +} + +func (d *FvRsConsDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + tflog.Debug(ctx, "Start read of datasource: aci_relation_to_consumed_contract") + var data *FvRsConsResourceModel + + // Read Terraform configuration data into the model + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvRsConsId(ctx, data) + + // Create a copy of the Id for when not found during getAndSetFvRsConsAttributes + cachedId := data.Id.ValueString() + + tflog.Debug(ctx, fmt.Sprintf("Read of datasource aci_relation_to_consumed_contract with id '%s'", data.Id.ValueString())) + + getAndSetFvRsConsAttributes(ctx, &resp.Diagnostics, d.client, data) + + if data.Id.IsNull() { + resp.Diagnostics.AddError( + "Failed to read aci_relation_to_consumed_contract data source", + fmt.Sprintf("The aci_relation_to_consumed_contract data source with id '%s' has not been found", cachedId), + ) + return + } + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End read of datasource aci_relation_to_consumed_contract with id '%s'", data.Id.ValueString())) +} diff --git a/internal/provider/data_source_aci_relation_to_consumed_contract_interface.go b/internal/provider/data_source_aci_relation_to_consumed_contract_interface.go new file mode 100644 index 000000000..6d5cfc182 --- /dev/null +++ b/internal/provider/data_source_aci_relation_to_consumed_contract_interface.go @@ -0,0 +1,153 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "fmt" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ datasource.DataSource = &FvRsConsIfDataSource{} + +func NewFvRsConsIfDataSource() datasource.DataSource { + return &FvRsConsIfDataSource{} +} + +// FvRsConsIfDataSource defines the data source implementation. +type FvRsConsIfDataSource struct { + client *client.Client +} + +func (d *FvRsConsIfDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of datasource: aci_relation_to_consumed_contract_interface") + resp.TypeName = req.ProviderTypeName + "_relation_to_consumed_contract_interface" + tflog.Debug(ctx, "End metadata of datasource: aci_relation_to_consumed_contract_interface") +} + +func (d *FvRsConsIfDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of datasource: aci_relation_to_consumed_contract_interface") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The relation_to_consumed_contract_interface datasource for the 'fvRsConsIf' class", + + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Relation To Consumed Contract Interface object.", + }, + "parent_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + }, + "annotation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The annotation of the Relation To Consumed Contract Interface object.`, + }, + "priority": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The contract interface priority.`, + }, + "contract_interface_name": schema.StringAttribute{ + Required: true, + MarkdownDescription: `The contract interface name.`, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of datasource: aci_relation_to_consumed_contract_interface") +} + +func (d *FvRsConsIfDataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of datasource: aci_relation_to_consumed_contract_interface") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Data Source Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + d.client = client + tflog.Debug(ctx, "End configure of datasource: aci_relation_to_consumed_contract_interface") +} + +func (d *FvRsConsIfDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + tflog.Debug(ctx, "Start read of datasource: aci_relation_to_consumed_contract_interface") + var data *FvRsConsIfResourceModel + + // Read Terraform configuration data into the model + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvRsConsIfId(ctx, data) + + // Create a copy of the Id for when not found during getAndSetFvRsConsIfAttributes + cachedId := data.Id.ValueString() + + tflog.Debug(ctx, fmt.Sprintf("Read of datasource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + + getAndSetFvRsConsIfAttributes(ctx, &resp.Diagnostics, d.client, data) + + if data.Id.IsNull() { + resp.Diagnostics.AddError( + "Failed to read aci_relation_to_consumed_contract_interface data source", + fmt.Sprintf("The aci_relation_to_consumed_contract_interface data source with id '%s' has not been found", cachedId), + ) + return + } + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End read of datasource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) +} diff --git a/internal/provider/data_source_aci_relation_to_consumed_contract_interface_test.go b/internal/provider/data_source_aci_relation_to_consumed_contract_interface_test.go new file mode 100644 index 000000000..cea0be588 --- /dev/null +++ b/internal/provider/data_source_aci_relation_to_consumed_contract_interface_test.go @@ -0,0 +1,88 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccDataSourceFvRsConsIfWithFvAEPg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: testConfigFvRsConsIfDataSourceDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + ), + }, + { + Config: testConfigFvRsConsIfNotExistingFvAEPg, + ExpectError: regexp.MustCompile("Failed to read aci_relation_to_consumed_contract_interface data source"), + }, + }, + }) +} +func TestAccDataSourceFvRsConsIfWithFvESg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: testConfigFvRsConsIfDataSourceDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + ), + }, + { + Config: testConfigFvRsConsIfNotExistingFvESg, + ExpectError: regexp.MustCompile("Failed to read aci_relation_to_consumed_contract_interface data source"), + }, + }, + }) +} + +const testConfigFvRsConsIfDataSourceDependencyWithFvAEPg = testConfigFvRsConsIfMinDependencyWithFvAEPg + ` +data "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_application_epg.test.id + contract_interface_name = "test_tn_vz_cp_if_name" + depends_on = [aci_relation_to_consumed_contract_interface.test] +} +` + +const testConfigFvRsConsIfNotExistingFvAEPg = testConfigFvRsConsIfMinDependencyWithFvAEPg + ` +data "aci_relation_to_consumed_contract_interface" "test_non_existing" { + parent_dn = aci_application_epg.test.id + contract_interface_name = "non_existing_tn_vz_cp_if_name" + depends_on = [aci_relation_to_consumed_contract_interface.test] +} +` +const testConfigFvRsConsIfDataSourceDependencyWithFvESg = testConfigFvRsConsIfMinDependencyWithFvESg + ` +data "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_interface_name = "test_tn_vz_cp_if_name" + depends_on = [aci_relation_to_consumed_contract_interface.test] +} +` + +const testConfigFvRsConsIfNotExistingFvESg = testConfigFvRsConsIfMinDependencyWithFvESg + ` +data "aci_relation_to_consumed_contract_interface" "test_non_existing" { + parent_dn = aci_endpoint_security_group.test.id + contract_interface_name = "non_existing_tn_vz_cp_if_name" + depends_on = [aci_relation_to_consumed_contract_interface.test] +} +` diff --git a/internal/provider/data_source_aci_relation_to_consumed_contract_test.go b/internal/provider/data_source_aci_relation_to_consumed_contract_test.go new file mode 100644 index 000000000..927107e86 --- /dev/null +++ b/internal/provider/data_source_aci_relation_to_consumed_contract_test.go @@ -0,0 +1,88 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccDataSourceFvRsConsWithFvAEPg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: testConfigFvRsConsDataSourceDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract.test", "priority", "unspecified"), + ), + }, + { + Config: testConfigFvRsConsNotExistingFvAEPg, + ExpectError: regexp.MustCompile("Failed to read aci_relation_to_consumed_contract data source"), + }, + }, + }) +} +func TestAccDataSourceFvRsConsWithFvESg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: testConfigFvRsConsDataSourceDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract.test", "priority", "unspecified"), + ), + }, + { + Config: testConfigFvRsConsNotExistingFvESg, + ExpectError: regexp.MustCompile("Failed to read aci_relation_to_consumed_contract data source"), + }, + }, + }) +} + +const testConfigFvRsConsDataSourceDependencyWithFvAEPg = testConfigFvRsConsMinDependencyWithFvAEPg + ` +data "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + depends_on = [aci_relation_to_consumed_contract.test] +} +` + +const testConfigFvRsConsNotExistingFvAEPg = testConfigFvRsConsMinDependencyWithFvAEPg + ` +data "aci_relation_to_consumed_contract" "test_non_existing" { + parent_dn = aci_application_epg.test.id + contract_name = "non_existing_tn_vz_br_cp_name" + depends_on = [aci_relation_to_consumed_contract.test] +} +` +const testConfigFvRsConsDataSourceDependencyWithFvESg = testConfigFvRsConsMinDependencyWithFvESg + ` +data "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + depends_on = [aci_relation_to_consumed_contract.test] +} +` + +const testConfigFvRsConsNotExistingFvESg = testConfigFvRsConsMinDependencyWithFvESg + ` +data "aci_relation_to_consumed_contract" "test_non_existing" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "non_existing_tn_vz_br_cp_name" + depends_on = [aci_relation_to_consumed_contract.test] +} +` diff --git a/internal/provider/data_source_aci_relation_to_contract_master.go b/internal/provider/data_source_aci_relation_to_contract_master.go new file mode 100644 index 000000000..dfcc7e29a --- /dev/null +++ b/internal/provider/data_source_aci_relation_to_contract_master.go @@ -0,0 +1,149 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "fmt" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ datasource.DataSource = &FvRsSecInheritedDataSource{} + +func NewFvRsSecInheritedDataSource() datasource.DataSource { + return &FvRsSecInheritedDataSource{} +} + +// FvRsSecInheritedDataSource defines the data source implementation. +type FvRsSecInheritedDataSource struct { + client *client.Client +} + +func (d *FvRsSecInheritedDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of datasource: aci_relation_to_contract_master") + resp.TypeName = req.ProviderTypeName + "_relation_to_contract_master" + tflog.Debug(ctx, "End metadata of datasource: aci_relation_to_contract_master") +} + +func (d *FvRsSecInheritedDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of datasource: aci_relation_to_contract_master") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The relation_to_contract_master datasource for the 'fvRsSecInherited' class", + + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Relation To Contract Master object.", + }, + "parent_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + }, + "annotation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The annotation of the Relation To Contract Master object.`, + }, + "target_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: `The distinguished name of the target.`, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of datasource: aci_relation_to_contract_master") +} + +func (d *FvRsSecInheritedDataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of datasource: aci_relation_to_contract_master") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Data Source Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + d.client = client + tflog.Debug(ctx, "End configure of datasource: aci_relation_to_contract_master") +} + +func (d *FvRsSecInheritedDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + tflog.Debug(ctx, "Start read of datasource: aci_relation_to_contract_master") + var data *FvRsSecInheritedResourceModel + + // Read Terraform configuration data into the model + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvRsSecInheritedId(ctx, data) + + // Create a copy of the Id for when not found during getAndSetFvRsSecInheritedAttributes + cachedId := data.Id.ValueString() + + tflog.Debug(ctx, fmt.Sprintf("Read of datasource aci_relation_to_contract_master with id '%s'", data.Id.ValueString())) + + getAndSetFvRsSecInheritedAttributes(ctx, &resp.Diagnostics, d.client, data) + + if data.Id.IsNull() { + resp.Diagnostics.AddError( + "Failed to read aci_relation_to_contract_master data source", + fmt.Sprintf("The aci_relation_to_contract_master data source with id '%s' has not been found", cachedId), + ) + return + } + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End read of datasource aci_relation_to_contract_master with id '%s'", data.Id.ValueString())) +} diff --git a/internal/provider/data_source_aci_relation_to_contract_master_test.go b/internal/provider/data_source_aci_relation_to_contract_master_test.go new file mode 100644 index 000000000..03ee432a7 --- /dev/null +++ b/internal/provider/data_source_aci_relation_to_contract_master_test.go @@ -0,0 +1,86 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccDataSourceFvRsSecInheritedWithFvAEPg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: testConfigFvRsSecInheritedDataSourceDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/epg-epg_2"), + resource.TestCheckResourceAttr("data.aci_relation_to_contract_master.test", "annotation", "orchestrator:terraform"), + ), + }, + { + Config: testConfigFvRsSecInheritedNotExistingFvAEPg, + ExpectError: regexp.MustCompile("Failed to read aci_relation_to_contract_master data source"), + }, + }, + }) +} +func TestAccDataSourceFvRsSecInheritedWithFvESg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: testConfigFvRsSecInheritedDataSourceDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_0"), + resource.TestCheckResourceAttr("data.aci_relation_to_contract_master.test", "annotation", "orchestrator:terraform"), + ), + }, + { + Config: testConfigFvRsSecInheritedNotExistingFvESg, + ExpectError: regexp.MustCompile("Failed to read aci_relation_to_contract_master data source"), + }, + }, + }) +} + +const testConfigFvRsSecInheritedDataSourceDependencyWithFvAEPg = testConfigFvRsSecInheritedMinDependencyWithFvAEPg + ` +data "aci_relation_to_contract_master" "test" { + parent_dn = aci_application_epg.test.id + target_dn = aci_application_epg.test_2.id + depends_on = [aci_relation_to_contract_master.test] +} +` + +const testConfigFvRsSecInheritedNotExistingFvAEPg = testConfigFvRsSecInheritedMinDependencyWithFvAEPg + ` +data "aci_relation_to_contract_master" "test_non_existing" { + parent_dn = aci_application_epg.test.id + target_dn = "uni/tn-test_tenant/ap-test_ap/epg-epg_2_not_existing" + depends_on = [aci_relation_to_contract_master.test] +} +` +const testConfigFvRsSecInheritedDataSourceDependencyWithFvESg = testConfigFvRsSecInheritedMinDependencyWithFvESg + ` +data "aci_relation_to_contract_master" "test" { + parent_dn = aci_endpoint_security_group.test.id + target_dn = aci_endpoint_security_group.test_0.id + depends_on = [aci_relation_to_contract_master.test] +} +` + +const testConfigFvRsSecInheritedNotExistingFvESg = testConfigFvRsSecInheritedMinDependencyWithFvESg + ` +data "aci_relation_to_contract_master" "test_non_existing" { + parent_dn = aci_endpoint_security_group.test.id + target_dn = "uni/tn-test_tenant/ap-test_ap/esg-esg_0_not_existing" + depends_on = [aci_relation_to_contract_master.test] +} +` diff --git a/internal/provider/data_source_aci_relation_to_fallback_route_group_test.go b/internal/provider/data_source_aci_relation_to_fallback_route_group_test.go index 8795e178a..9b3d97da2 100644 --- a/internal/provider/data_source_aci_relation_to_fallback_route_group_test.go +++ b/internal/provider/data_source_aci_relation_to_fallback_route_group_test.go @@ -21,7 +21,7 @@ func TestAccDataSourceL3extRsOutToFBRGroupWithL3extOut(t *testing.T) { Config: testConfigL3extRsOutToFBRGroupDataSourceDependencyWithL3extOut, ExpectNonEmptyPlan: false, Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group"), + resource.TestCheckResourceAttr("data.aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group_0"), resource.TestCheckResourceAttr("data.aci_relation_to_fallback_route_group.test", "annotation", "orchestrator:terraform"), ), }, @@ -36,7 +36,7 @@ func TestAccDataSourceL3extRsOutToFBRGroupWithL3extOut(t *testing.T) { const testConfigL3extRsOutToFBRGroupDataSourceDependencyWithL3extOut = testConfigL3extRsOutToFBRGroupMinDependencyWithL3extOut + ` data "aci_relation_to_fallback_route_group" "test" { parent_dn = aci_l3_outside.test.id - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.test_0.id depends_on = [aci_relation_to_fallback_route_group.test] } ` @@ -44,7 +44,7 @@ data "aci_relation_to_fallback_route_group" "test" { const testConfigL3extRsOutToFBRGroupNotExistingL3extOut = testConfigL3extRsOutToFBRGroupMinDependencyWithL3extOut + ` data "aci_relation_to_fallback_route_group" "test_non_existing" { parent_dn = aci_l3_outside.test.id - target_dn = "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group_not_existing" + target_dn = "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group_0_not_existing" depends_on = [aci_relation_to_fallback_route_group.test] } ` diff --git a/internal/provider/data_source_aci_relation_to_intra_epg_contract.go b/internal/provider/data_source_aci_relation_to_intra_epg_contract.go new file mode 100644 index 000000000..5a04d15b8 --- /dev/null +++ b/internal/provider/data_source_aci_relation_to_intra_epg_contract.go @@ -0,0 +1,149 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "fmt" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ datasource.DataSource = &FvRsIntraEpgDataSource{} + +func NewFvRsIntraEpgDataSource() datasource.DataSource { + return &FvRsIntraEpgDataSource{} +} + +// FvRsIntraEpgDataSource defines the data source implementation. +type FvRsIntraEpgDataSource struct { + client *client.Client +} + +func (d *FvRsIntraEpgDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of datasource: aci_relation_to_intra_epg_contract") + resp.TypeName = req.ProviderTypeName + "_relation_to_intra_epg_contract" + tflog.Debug(ctx, "End metadata of datasource: aci_relation_to_intra_epg_contract") +} + +func (d *FvRsIntraEpgDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of datasource: aci_relation_to_intra_epg_contract") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The relation_to_intra_epg_contract datasource for the 'fvRsIntraEpg' class", + + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Relation To Intra Epg Contract object.", + }, + "parent_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + }, + "annotation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The annotation of the Relation To Intra Epg Contract object.`, + }, + "contract_name": schema.StringAttribute{ + Required: true, + MarkdownDescription: `The binary contract name.`, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of datasource: aci_relation_to_intra_epg_contract") +} + +func (d *FvRsIntraEpgDataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of datasource: aci_relation_to_intra_epg_contract") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Data Source Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + d.client = client + tflog.Debug(ctx, "End configure of datasource: aci_relation_to_intra_epg_contract") +} + +func (d *FvRsIntraEpgDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + tflog.Debug(ctx, "Start read of datasource: aci_relation_to_intra_epg_contract") + var data *FvRsIntraEpgResourceModel + + // Read Terraform configuration data into the model + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvRsIntraEpgId(ctx, data) + + // Create a copy of the Id for when not found during getAndSetFvRsIntraEpgAttributes + cachedId := data.Id.ValueString() + + tflog.Debug(ctx, fmt.Sprintf("Read of datasource aci_relation_to_intra_epg_contract with id '%s'", data.Id.ValueString())) + + getAndSetFvRsIntraEpgAttributes(ctx, &resp.Diagnostics, d.client, data) + + if data.Id.IsNull() { + resp.Diagnostics.AddError( + "Failed to read aci_relation_to_intra_epg_contract data source", + fmt.Sprintf("The aci_relation_to_intra_epg_contract data source with id '%s' has not been found", cachedId), + ) + return + } + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End read of datasource aci_relation_to_intra_epg_contract with id '%s'", data.Id.ValueString())) +} diff --git a/internal/provider/data_source_aci_relation_to_intra_epg_contract_test.go b/internal/provider/data_source_aci_relation_to_intra_epg_contract_test.go new file mode 100644 index 000000000..ac7d382cb --- /dev/null +++ b/internal/provider/data_source_aci_relation_to_intra_epg_contract_test.go @@ -0,0 +1,86 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccDataSourceFvRsIntraEpgWithFvAEPg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: testConfigFvRsIntraEpgDataSourceDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("data.aci_relation_to_intra_epg_contract.test", "annotation", "orchestrator:terraform"), + ), + }, + { + Config: testConfigFvRsIntraEpgNotExistingFvAEPg, + ExpectError: regexp.MustCompile("Failed to read aci_relation_to_intra_epg_contract data source"), + }, + }, + }) +} +func TestAccDataSourceFvRsIntraEpgWithFvESg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: testConfigFvRsIntraEpgDataSourceDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("data.aci_relation_to_intra_epg_contract.test", "annotation", "orchestrator:terraform"), + ), + }, + { + Config: testConfigFvRsIntraEpgNotExistingFvESg, + ExpectError: regexp.MustCompile("Failed to read aci_relation_to_intra_epg_contract data source"), + }, + }, + }) +} + +const testConfigFvRsIntraEpgDataSourceDependencyWithFvAEPg = testConfigFvRsIntraEpgMinDependencyWithFvAEPg + ` +data "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + depends_on = [aci_relation_to_intra_epg_contract.test] +} +` + +const testConfigFvRsIntraEpgNotExistingFvAEPg = testConfigFvRsIntraEpgMinDependencyWithFvAEPg + ` +data "aci_relation_to_intra_epg_contract" "test_non_existing" { + parent_dn = aci_application_epg.test.id + contract_name = "non_existing_tn_vz_br_cp_name" + depends_on = [aci_relation_to_intra_epg_contract.test] +} +` +const testConfigFvRsIntraEpgDataSourceDependencyWithFvESg = testConfigFvRsIntraEpgMinDependencyWithFvESg + ` +data "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + depends_on = [aci_relation_to_intra_epg_contract.test] +} +` + +const testConfigFvRsIntraEpgNotExistingFvESg = testConfigFvRsIntraEpgMinDependencyWithFvESg + ` +data "aci_relation_to_intra_epg_contract" "test_non_existing" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "non_existing_tn_vz_br_cp_name" + depends_on = [aci_relation_to_intra_epg_contract.test] +} +` diff --git a/internal/provider/data_source_aci_relation_to_provided_contract.go b/internal/provider/data_source_aci_relation_to_provided_contract.go new file mode 100644 index 000000000..4e133f4f1 --- /dev/null +++ b/internal/provider/data_source_aci_relation_to_provided_contract.go @@ -0,0 +1,157 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "fmt" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ datasource.DataSource = &FvRsProvDataSource{} + +func NewFvRsProvDataSource() datasource.DataSource { + return &FvRsProvDataSource{} +} + +// FvRsProvDataSource defines the data source implementation. +type FvRsProvDataSource struct { + client *client.Client +} + +func (d *FvRsProvDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of datasource: aci_relation_to_provided_contract") + resp.TypeName = req.ProviderTypeName + "_relation_to_provided_contract" + tflog.Debug(ctx, "End metadata of datasource: aci_relation_to_provided_contract") +} + +func (d *FvRsProvDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of datasource: aci_relation_to_provided_contract") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The relation_to_provided_contract datasource for the 'fvRsProv' class", + + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Relation To Provided Contract object.", + }, + "parent_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + }, + "annotation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The annotation of the Relation To Provided Contract object.`, + }, + "match_criteria": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The matched EPG type.`, + }, + "priority": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + }, + "contract_name": schema.StringAttribute{ + Required: true, + MarkdownDescription: `The provider contract name.`, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of datasource: aci_relation_to_provided_contract") +} + +func (d *FvRsProvDataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of datasource: aci_relation_to_provided_contract") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Data Source Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + d.client = client + tflog.Debug(ctx, "End configure of datasource: aci_relation_to_provided_contract") +} + +func (d *FvRsProvDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + tflog.Debug(ctx, "Start read of datasource: aci_relation_to_provided_contract") + var data *FvRsProvResourceModel + + // Read Terraform configuration data into the model + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvRsProvId(ctx, data) + + // Create a copy of the Id for when not found during getAndSetFvRsProvAttributes + cachedId := data.Id.ValueString() + + tflog.Debug(ctx, fmt.Sprintf("Read of datasource aci_relation_to_provided_contract with id '%s'", data.Id.ValueString())) + + getAndSetFvRsProvAttributes(ctx, &resp.Diagnostics, d.client, data) + + if data.Id.IsNull() { + resp.Diagnostics.AddError( + "Failed to read aci_relation_to_provided_contract data source", + fmt.Sprintf("The aci_relation_to_provided_contract data source with id '%s' has not been found", cachedId), + ) + return + } + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End read of datasource aci_relation_to_provided_contract with id '%s'", data.Id.ValueString())) +} diff --git a/internal/provider/data_source_aci_relation_to_provided_contract_test.go b/internal/provider/data_source_aci_relation_to_provided_contract_test.go new file mode 100644 index 000000000..8a8cd867d --- /dev/null +++ b/internal/provider/data_source_aci_relation_to_provided_contract_test.go @@ -0,0 +1,90 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccDataSourceFvRsProvWithFvAEPg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: testConfigFvRsProvDataSourceDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("data.aci_relation_to_provided_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("data.aci_relation_to_provided_contract.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("data.aci_relation_to_provided_contract.test", "priority", "unspecified"), + ), + }, + { + Config: testConfigFvRsProvNotExistingFvAEPg, + ExpectError: regexp.MustCompile("Failed to read aci_relation_to_provided_contract data source"), + }, + }, + }) +} +func TestAccDataSourceFvRsProvWithFvESg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: testConfigFvRsProvDataSourceDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("data.aci_relation_to_provided_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("data.aci_relation_to_provided_contract.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("data.aci_relation_to_provided_contract.test", "priority", "unspecified"), + ), + }, + { + Config: testConfigFvRsProvNotExistingFvESg, + ExpectError: regexp.MustCompile("Failed to read aci_relation_to_provided_contract data source"), + }, + }, + }) +} + +const testConfigFvRsProvDataSourceDependencyWithFvAEPg = testConfigFvRsProvMinDependencyWithFvAEPg + ` +data "aci_relation_to_provided_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + depends_on = [aci_relation_to_provided_contract.test] +} +` + +const testConfigFvRsProvNotExistingFvAEPg = testConfigFvRsProvMinDependencyWithFvAEPg + ` +data "aci_relation_to_provided_contract" "test_non_existing" { + parent_dn = aci_application_epg.test.id + contract_name = "non_existing_tn_vz_br_cp_name" + depends_on = [aci_relation_to_provided_contract.test] +} +` +const testConfigFvRsProvDataSourceDependencyWithFvESg = testConfigFvRsProvMinDependencyWithFvESg + ` +data "aci_relation_to_provided_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + depends_on = [aci_relation_to_provided_contract.test] +} +` + +const testConfigFvRsProvNotExistingFvESg = testConfigFvRsProvMinDependencyWithFvESg + ` +data "aci_relation_to_provided_contract" "test_non_existing" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "non_existing_tn_vz_br_cp_name" + depends_on = [aci_relation_to_provided_contract.test] +} +` diff --git a/internal/provider/data_source_aci_relation_to_taboo_contract.go b/internal/provider/data_source_aci_relation_to_taboo_contract.go new file mode 100644 index 000000000..526c245ae --- /dev/null +++ b/internal/provider/data_source_aci_relation_to_taboo_contract.go @@ -0,0 +1,149 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "fmt" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/datasource/schema" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ datasource.DataSource = &FvRsProtByDataSource{} + +func NewFvRsProtByDataSource() datasource.DataSource { + return &FvRsProtByDataSource{} +} + +// FvRsProtByDataSource defines the data source implementation. +type FvRsProtByDataSource struct { + client *client.Client +} + +func (d *FvRsProtByDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of datasource: aci_relation_to_taboo_contract") + resp.TypeName = req.ProviderTypeName + "_relation_to_taboo_contract" + tflog.Debug(ctx, "End metadata of datasource: aci_relation_to_taboo_contract") +} + +func (d *FvRsProtByDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of datasource: aci_relation_to_taboo_contract") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The relation_to_taboo_contract datasource for the 'fvRsProtBy' class", + + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Relation To Taboo Contract object.", + }, + "parent_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + }, + "annotation": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The annotation of the Relation To Taboo Contract object.`, + }, + "taboo_contract_name": schema.StringAttribute{ + Required: true, + MarkdownDescription: `A contract for denying specific classes of traffic. Taboo rules are applied in the hardware before applying the rules of regular contracts. Without a contract, the default forwarding policy is to not allow any communication between EPGs.`, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Computed: true, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of datasource: aci_relation_to_taboo_contract") +} + +func (d *FvRsProtByDataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of datasource: aci_relation_to_taboo_contract") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Data Source Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + d.client = client + tflog.Debug(ctx, "End configure of datasource: aci_relation_to_taboo_contract") +} + +func (d *FvRsProtByDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + tflog.Debug(ctx, "Start read of datasource: aci_relation_to_taboo_contract") + var data *FvRsProtByResourceModel + + // Read Terraform configuration data into the model + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvRsProtById(ctx, data) + + // Create a copy of the Id for when not found during getAndSetFvRsProtByAttributes + cachedId := data.Id.ValueString() + + tflog.Debug(ctx, fmt.Sprintf("Read of datasource aci_relation_to_taboo_contract with id '%s'", data.Id.ValueString())) + + getAndSetFvRsProtByAttributes(ctx, &resp.Diagnostics, d.client, data) + + if data.Id.IsNull() { + resp.Diagnostics.AddError( + "Failed to read aci_relation_to_taboo_contract data source", + fmt.Sprintf("The aci_relation_to_taboo_contract data source with id '%s' has not been found", cachedId), + ) + return + } + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End read of datasource aci_relation_to_taboo_contract with id '%s'", data.Id.ValueString())) +} diff --git a/internal/provider/data_source_aci_relation_to_taboo_contract_test.go b/internal/provider/data_source_aci_relation_to_taboo_contract_test.go new file mode 100644 index 000000000..2f9b43963 --- /dev/null +++ b/internal/provider/data_source_aci_relation_to_taboo_contract_test.go @@ -0,0 +1,50 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "regexp" + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccDataSourceFvRsProtByWithFvAEPg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + { + Config: testConfigFvRsProtByDataSourceDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.aci_relation_to_taboo_contract.test", "taboo_contract_name", "test_tn_vz_taboo_name"), + resource.TestCheckResourceAttr("data.aci_relation_to_taboo_contract.test", "annotation", "orchestrator:terraform"), + ), + }, + { + Config: testConfigFvRsProtByNotExistingFvAEPg, + ExpectError: regexp.MustCompile("Failed to read aci_relation_to_taboo_contract data source"), + }, + }, + }) +} + +const testConfigFvRsProtByDataSourceDependencyWithFvAEPg = testConfigFvRsProtByMinDependencyWithFvAEPg + ` +data "aci_relation_to_taboo_contract" "test" { + parent_dn = aci_application_epg.test.id + taboo_contract_name = "test_tn_vz_taboo_name" + depends_on = [aci_relation_to_taboo_contract.test] +} +` + +const testConfigFvRsProtByNotExistingFvAEPg = testConfigFvRsProtByMinDependencyWithFvAEPg + ` +data "aci_relation_to_taboo_contract" "test_non_existing" { + parent_dn = aci_application_epg.test.id + taboo_contract_name = "non_existing_tn_vz_taboo_name" + depends_on = [aci_relation_to_taboo_contract.test] +} +` diff --git a/internal/provider/provider.go b/internal/provider/provider.go index 431a6fb26..6bb1cf79d 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -196,10 +196,17 @@ func (p *AciProvider) Configure(ctx context.Context, req provider.ConfigureReque func (p *AciProvider) Resources(ctx context.Context) []func() resource.Resource { return []func() resource.Resource{ + NewFvESgResource, NewFvEpIpTagResource, NewFvEpMacTagResource, NewFvFBRGroupResource, NewFvFBRMemberResource, + NewFvRsConsResource, + NewFvRsConsIfResource, + NewFvRsIntraEpgResource, + NewFvRsProtByResource, + NewFvRsProvResource, + NewFvRsSecInheritedResource, NewL3extConsLblResource, NewL3extProvLblResource, NewL3extRsOutToFBRGroupResource, @@ -222,10 +229,17 @@ func (p *AciProvider) Resources(ctx context.Context) []func() resource.Resource func (p *AciProvider) DataSources(ctx context.Context) []func() datasource.DataSource { return []func() datasource.DataSource{ + NewFvESgDataSource, NewFvEpIpTagDataSource, NewFvEpMacTagDataSource, NewFvFBRGroupDataSource, NewFvFBRMemberDataSource, + NewFvRsConsDataSource, + NewFvRsConsIfDataSource, + NewFvRsIntraEpgDataSource, + NewFvRsProtByDataSource, + NewFvRsProvDataSource, + NewFvRsSecInheritedDataSource, NewL3extConsLblDataSource, NewL3extProvLblDataSource, NewL3extRsOutToFBRGroupDataSource, diff --git a/internal/provider/resource_aci_endpoint_security_group.go b/internal/provider/resource_aci_endpoint_security_group.go new file mode 100644 index 000000000..3ff3599ee --- /dev/null +++ b/internal/provider/resource_aci_endpoint_security_group.go @@ -0,0 +1,2323 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "encoding/json" + "fmt" + "reflect" + "strings" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + "github.com/ciscoecosystem/aci-go-client/v2/container" + "github.com/hashicorp/terraform-plugin-framework-validators/setvalidator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/attr" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-framework/types/basetypes" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ resource.Resource = &FvESgResource{} +var _ resource.ResourceWithImportState = &FvESgResource{} + +func NewFvESgResource() resource.Resource { + return &FvESgResource{} +} + +// FvESgResource defines the resource implementation. +type FvESgResource struct { + client *client.Client +} + +// FvESgResourceModel describes the resource data model. +type FvESgResourceModel struct { + Id types.String `tfsdk:"id"` + ParentDn types.String `tfsdk:"parent_dn"` + Annotation types.String `tfsdk:"annotation"` + Descr types.String `tfsdk:"description"` + ExceptionTag types.String `tfsdk:"exception_tag"` + MatchT types.String `tfsdk:"match_criteria"` + Name types.String `tfsdk:"name"` + NameAlias types.String `tfsdk:"name_alias"` + PcEnfPref types.String `tfsdk:"intra_esg_isolation"` + PrefGrMemb types.String `tfsdk:"preferred_group_member"` + Shutdown types.String `tfsdk:"admin_state"` + FvRsCons types.Set `tfsdk:"relation_to_consumed_contracts"` + FvRsConsIf types.Set `tfsdk:"relation_to_consumed_contract_interfaces"` + FvRsIntraEpg types.Set `tfsdk:"relation_to_intra_epg_contracts"` + FvRsProv types.Set `tfsdk:"relation_to_provided_contracts"` + FvRsScope types.Set `tfsdk:"relation_to_vrf"` + FvRsSecInherited types.Set `tfsdk:"relation_to_contract_masters"` + TagAnnotation types.Set `tfsdk:"annotations"` + TagTag types.Set `tfsdk:"tags"` + DeprecatedMatchT types.String `tfsdk:"match_t"` + DeprecatedParentDn types.String `tfsdk:"application_profile_dn"` + DeprecatedPcEnfPref types.String `tfsdk:"pc_enf_pref"` + DeprecatedPrefGrMemb types.String `tfsdk:"pref_gr_memb"` + DeprecatedFvRsSecInherited types.Set `tfsdk:"relation_fv_rs_sec_inherited"` + DeprecatedFvRsIntraEpg types.Set `tfsdk:"relation_fv_rs_intra_epg"` + DeprecatedFvRsScope types.String `tfsdk:"relation_fv_rs_scope"` + DeprecatedFvRsCons types.Set `tfsdk:"relation_fv_rs_cons"` + DeprecatedFvRsConsIf types.Set `tfsdk:"relation_fv_rs_cons_if"` + DeprecatedFvRsProv types.Set `tfsdk:"relation_fv_rs_prov"` +} + +// FvRsConsFvESgResourceModel describes the resource data model for the children without relation ships. +type FvRsConsFvESgResourceModel struct { + Annotation types.String `tfsdk:"annotation"` + Prio types.String `tfsdk:"priority"` + TnVzBrCPName types.String `tfsdk:"contract_name"` +} + +// FvRsConsIfFvESgResourceModel describes the resource data model for the children without relation ships. +type FvRsConsIfFvESgResourceModel struct { + Annotation types.String `tfsdk:"annotation"` + Prio types.String `tfsdk:"priority"` + TnVzCPIfName types.String `tfsdk:"contract_interface_name"` +} + +// FvRsIntraEpgFvESgResourceModel describes the resource data model for the children without relation ships. +type FvRsIntraEpgFvESgResourceModel struct { + Annotation types.String `tfsdk:"annotation"` + TnVzBrCPName types.String `tfsdk:"contract_name"` +} + +// FvRsProvFvESgResourceModel describes the resource data model for the children without relation ships. +type FvRsProvFvESgResourceModel struct { + Annotation types.String `tfsdk:"annotation"` + MatchT types.String `tfsdk:"match_criteria"` + Prio types.String `tfsdk:"priority"` + TnVzBrCPName types.String `tfsdk:"contract_name"` +} + +// FvRsScopeFvESgResourceModel describes the resource data model for the children without relation ships. +type FvRsScopeFvESgResourceModel struct { + Annotation types.String `tfsdk:"annotation"` + TnFvCtxName types.String `tfsdk:"vrf_name"` +} + +// FvRsSecInheritedFvESgResourceModel describes the resource data model for the children without relation ships. +type FvRsSecInheritedFvESgResourceModel struct { + Annotation types.String `tfsdk:"annotation"` + TDn types.String `tfsdk:"target_dn"` +} + +// TagAnnotationFvESgResourceModel describes the resource data model for the children without relation ships. +type TagAnnotationFvESgResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +// TagTagFvESgResourceModel describes the resource data model for the children without relation ships. +type TagTagFvESgResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +type FvESgIdentifier struct { + Name types.String +} + +var deprecatedFvRsConsType = types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "target_dn": basetypes.StringType{}, + "prio": basetypes.StringType{}, + }, +} + +var deprecatedFvRsConsIfType = types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "target_dn": basetypes.StringType{}, + "prio": basetypes.StringType{}, + }, +} + +var deprecatedFvRsProvType = types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "target_dn": basetypes.StringType{}, + "match_t": basetypes.StringType{}, + "prio": basetypes.StringType{}, + }, +} + +type FvESgResourceModelV1 struct { + Annotation types.String `tfsdk:"annotation"` + Descr types.String `tfsdk:"description"` + Id types.String `tfsdk:"id"` + MatchT types.String `tfsdk:"match_t"` + Name types.String `tfsdk:"name"` + NameAlias types.String `tfsdk:"name_alias"` + ParentDn types.String `tfsdk:"application_profile_dn"` + PcEnfPref types.String `tfsdk:"pc_enf_pref"` + PrefGrMemb types.String `tfsdk:"pref_gr_memb"` + Deprecated_relation_fv_rs_cust_qos_pol types.String `tfsdk:"relation_fv_rs_cust_qos_pol"` + Deprecated_relation_fv_rs_prot_by types.Set `tfsdk:"relation_fv_rs_prot_by"` + FvRsSecInherited types.Set `tfsdk:"relation_fv_rs_sec_inherited"` + FvRsIntraEpg types.Set `tfsdk:"relation_fv_rs_intra_epg"` + FvRsScope types.String `tfsdk:"relation_fv_rs_scope"` + FvRsCons types.Set `tfsdk:"relation_fv_rs_cons"` + FvRsConsIf types.Set `tfsdk:"relation_fv_rs_cons_if"` + FvRsProv types.Set `tfsdk:"relation_fv_rs_prov"` +} + +type FvRsConsFvESgResourceModelV1 struct { + TargetDn types.String `tfsdk:"target_dn"` + Prio types.String `tfsdk:"prio"` +} + +type FvRsConsIfFvESgResourceModelV1 struct { + TargetDn types.String `tfsdk:"target_dn"` + Prio types.String `tfsdk:"prio"` +} + +type FvRsProvFvESgResourceModelV1 struct { + TargetDn types.String `tfsdk:"target_dn"` + MatchT types.String `tfsdk:"match_t"` + Prio types.String `tfsdk:"prio"` +} + +func (r *FvESgResource) UpgradeState(ctx context.Context) map[int64]resource.StateUpgrader { + return map[int64]resource.StateUpgrader{ + 1: { + PriorSchema: &schema.Schema{ + Attributes: map[string]schema.Attribute{ + "annotation": schema.StringAttribute{ + Required: false, + Optional: true, + Computed: true, + }, + "description": schema.StringAttribute{ + Required: false, + Optional: true, + Computed: true, + }, + "id": schema.StringAttribute{ + Required: false, + Optional: true, + Computed: true, + }, + "match_t": schema.StringAttribute{ + Required: false, + Optional: true, + Computed: true, + }, + "name": schema.StringAttribute{ + Required: true, + Optional: false, + Computed: false, + }, + "name_alias": schema.StringAttribute{ + Required: false, + Optional: true, + Computed: true, + }, + "application_profile_dn": schema.StringAttribute{ + Required: true, + Optional: false, + Computed: false, + }, + "pc_enf_pref": schema.StringAttribute{ + Required: false, + Optional: true, + Computed: true, + }, + "pref_gr_memb": schema.StringAttribute{ + Required: false, + Optional: true, + Computed: true, + }, + "relation_fv_rs_cust_qos_pol": schema.StringAttribute{ + Required: false, + Optional: true, + Computed: false, + }, + "relation_fv_rs_prot_by": schema.SetAttribute{ + Required: false, + Optional: true, + Computed: false, + ElementType: types.StringType, + }, + "relation_fv_rs_sec_inherited": schema.SetAttribute{ + Required: false, + Optional: true, + Computed: false, + ElementType: types.StringType, + }, + "relation_fv_rs_intra_epg": schema.SetAttribute{ + Required: false, + Optional: true, + Computed: false, + ElementType: types.StringType, + }, + "relation_fv_rs_scope": schema.StringAttribute{ + Required: false, + Optional: true, + Computed: false, + }, + }, + Blocks: map[string]schema.Block{ + "relation_fv_rs_cons": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "target_dn": schema.StringAttribute{ + Required: true, + Optional: false, + Computed: false, + }, + "prio": schema.StringAttribute{ + Required: false, + Optional: true, + Computed: false, + }, + }, + }, + }, + "relation_fv_rs_cons_if": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "target_dn": schema.StringAttribute{ + Required: true, + Optional: false, + Computed: false, + }, + "prio": schema.StringAttribute{ + Required: false, + Optional: true, + Computed: false, + }, + }, + }, + }, + "relation_fv_rs_prov": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "target_dn": schema.StringAttribute{ + Required: true, + Optional: false, + Computed: false, + }, + "match_t": schema.StringAttribute{ + Required: false, + Optional: true, + Computed: false, + }, + "prio": schema.StringAttribute{ + Required: false, + Optional: true, + Computed: false, + }, + }, + }, + }, + }, + }, + StateUpgrader: func(ctx context.Context, req resource.UpgradeStateRequest, resp *resource.UpgradeStateResponse) { + var priorStateData FvESgResourceModelV1 + + resp.Diagnostics.Append(req.State.Get(ctx, &priorStateData)...) + + if resp.Diagnostics.HasError() { + return + } + + upgradedStateData := FvESgResourceModel{ + Id: priorStateData.Id, + ParentDn: priorStateData.ParentDn, + Annotation: priorStateData.Annotation, + Descr: priorStateData.Descr, + ExceptionTag: basetypes.NewStringNull(), + MatchT: priorStateData.MatchT, + Name: priorStateData.Name, + NameAlias: priorStateData.NameAlias, + PcEnfPref: priorStateData.PcEnfPref, + PrefGrMemb: priorStateData.PrefGrMemb, + Shutdown: basetypes.NewStringNull(), + DeprecatedMatchT: priorStateData.MatchT, + DeprecatedParentDn: priorStateData.ParentDn, + DeprecatedPcEnfPref: priorStateData.PcEnfPref, + DeprecatedPrefGrMemb: priorStateData.PrefGrMemb, + DeprecatedFvRsScope: priorStateData.FvRsScope, + } + + FvRsConsList := make([]FvRsConsFvESgResourceModel, 0) + var priorStateDataFvRsConsList []FvRsConsFvESgResourceModelV1 + priorStateData.FvRsCons.ElementsAs(ctx, &priorStateDataFvRsConsList, false) + for _, priorStateDataFvRsCons := range priorStateDataFvRsConsList { + FvRsCons := FvRsConsFvESgResourceModel{ + Annotation: basetypes.NewStringNull(), + Prio: priorStateDataFvRsCons.Prio, + TnVzBrCPName: priorStateDataFvRsCons.TargetDn, + } + FvRsConsList = append(FvRsConsList, FvRsCons) + } + FvRsConsType := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "annotation": basetypes.StringType{}, + "priority": basetypes.StringType{}, + "contract_name": basetypes.StringType{}, + }, + } + FvRsConsSet, _ := types.SetValueFrom(ctx, FvRsConsType, FvRsConsList) + upgradedStateData.FvRsCons = FvRsConsSet + + FvRsConsIfList := make([]FvRsConsIfFvESgResourceModel, 0) + var priorStateDataFvRsConsIfList []FvRsConsIfFvESgResourceModelV1 + priorStateData.FvRsConsIf.ElementsAs(ctx, &priorStateDataFvRsConsIfList, false) + for _, priorStateDataFvRsConsIf := range priorStateDataFvRsConsIfList { + FvRsConsIf := FvRsConsIfFvESgResourceModel{ + Annotation: basetypes.NewStringNull(), + Prio: priorStateDataFvRsConsIf.Prio, + TnVzCPIfName: priorStateDataFvRsConsIf.TargetDn, + } + FvRsConsIfList = append(FvRsConsIfList, FvRsConsIf) + } + FvRsConsIfType := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "annotation": basetypes.StringType{}, + "priority": basetypes.StringType{}, + "contract_interface_name": basetypes.StringType{}, + }, + } + FvRsConsIfSet, _ := types.SetValueFrom(ctx, FvRsConsIfType, FvRsConsIfList) + upgradedStateData.FvRsConsIf = FvRsConsIfSet + + FvRsIntraEpgList := make([]FvRsIntraEpgFvESgResourceModel, 0) + var priorStateDataFvRsIntraEpgList []string + priorStateData.FvRsIntraEpg.ElementsAs(ctx, &priorStateDataFvRsIntraEpgList, false) + for _, priorStateDataFvRsIntraEpg := range priorStateDataFvRsIntraEpgList { + FvRsIntraEpg := FvRsIntraEpgFvESgResourceModel{ + Annotation: basetypes.NewStringNull(), + TnVzBrCPName: basetypes.NewStringValue(GetMOName(priorStateDataFvRsIntraEpg)), + } + FvRsIntraEpgList = append(FvRsIntraEpgList, FvRsIntraEpg) + } + FvRsIntraEpgType := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "annotation": basetypes.StringType{}, + "contract_name": basetypes.StringType{}, + }, + } + FvRsIntraEpgSet, _ := types.SetValueFrom(ctx, FvRsIntraEpgType, FvRsIntraEpgList) + upgradedStateData.FvRsIntraEpg = FvRsIntraEpgSet + + FvRsProvList := make([]FvRsProvFvESgResourceModel, 0) + var priorStateDataFvRsProvList []FvRsProvFvESgResourceModelV1 + priorStateData.FvRsProv.ElementsAs(ctx, &priorStateDataFvRsProvList, false) + for _, priorStateDataFvRsProv := range priorStateDataFvRsProvList { + FvRsProv := FvRsProvFvESgResourceModel{ + Annotation: basetypes.NewStringNull(), + MatchT: priorStateDataFvRsProv.MatchT, + Prio: priorStateDataFvRsProv.Prio, + TnVzBrCPName: priorStateDataFvRsProv.TargetDn, + } + FvRsProvList = append(FvRsProvList, FvRsProv) + } + FvRsProvType := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "annotation": basetypes.StringType{}, + "match_criteria": basetypes.StringType{}, + "priority": basetypes.StringType{}, + "contract_name": basetypes.StringType{}, + }, + } + FvRsProvSet, _ := types.SetValueFrom(ctx, FvRsProvType, FvRsProvList) + upgradedStateData.FvRsProv = FvRsProvSet + + FvRsScopeList := make([]FvRsScopeFvESgResourceModel, 0) + FvRsScope := FvRsScopeFvESgResourceModel{ + Annotation: basetypes.NewStringNull(), + TnFvCtxName: basetypes.NewStringValue(GetMOName(priorStateData.FvRsScope.ValueString())), + } + FvRsScopeList = append(FvRsScopeList, FvRsScope) + FvRsScopeType := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "annotation": basetypes.StringType{}, + "vrf_name": basetypes.StringType{}, + }, + } + FvRsScopeSet, _ := types.SetValueFrom(ctx, FvRsScopeType, FvRsScopeList) + upgradedStateData.FvRsScope = FvRsScopeSet + + FvRsSecInheritedList := make([]FvRsSecInheritedFvESgResourceModel, 0) + var priorStateDataFvRsSecInheritedList []string + priorStateData.FvRsSecInherited.ElementsAs(ctx, &priorStateDataFvRsSecInheritedList, false) + for _, priorStateDataFvRsSecInherited := range priorStateDataFvRsSecInheritedList { + FvRsSecInherited := FvRsSecInheritedFvESgResourceModel{ + Annotation: basetypes.NewStringNull(), + TDn: basetypes.NewStringValue(priorStateDataFvRsSecInherited), + } + FvRsSecInheritedList = append(FvRsSecInheritedList, FvRsSecInherited) + } + FvRsSecInheritedType := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "annotation": basetypes.StringType{}, + "target_dn": basetypes.StringType{}, + }, + } + FvRsSecInheritedSet, _ := types.SetValueFrom(ctx, FvRsSecInheritedType, FvRsSecInheritedList) + upgradedStateData.FvRsSecInherited = FvRsSecInheritedSet + + upgradedStateData.TagAnnotation = types.SetNull( + types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "key": basetypes.StringType{}, + "value": basetypes.StringType{}, + }, + }, + ) + + upgradedStateData.TagTag = types.SetNull( + types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "key": basetypes.StringType{}, + "value": basetypes.StringType{}, + }, + }, + ) + + var deprecatedFvRsSecInheritedList []string + priorStateData.FvRsSecInherited.ElementsAs(ctx, &deprecatedFvRsSecInheritedList, false) + DeprecatedFvRsSecInheritedSet, _ := types.SetValueFrom(ctx, types.StringType, deprecatedFvRsSecInheritedList) + upgradedStateData.DeprecatedFvRsSecInherited = DeprecatedFvRsSecInheritedSet + + var deprecatedFvRsIntraEpgList []string + priorStateData.FvRsIntraEpg.ElementsAs(ctx, &deprecatedFvRsIntraEpgList, false) + DeprecatedFvRsIntraEpgSet, _ := types.SetValueFrom(ctx, types.StringType, deprecatedFvRsIntraEpgList) + upgradedStateData.DeprecatedFvRsIntraEpg = DeprecatedFvRsIntraEpgSet + + var FvRsConsV1List []FvRsConsFvESgResourceModelV1 + priorStateData.FvRsCons.ElementsAs(ctx, &FvRsConsV1List, false) + FvRsConsV1Set, _ := types.SetValueFrom(ctx, deprecatedFvRsConsType, FvRsConsV1List) + upgradedStateData.DeprecatedFvRsCons = FvRsConsV1Set + + var FvRsConsIfV1List []FvRsConsIfFvESgResourceModelV1 + priorStateData.FvRsConsIf.ElementsAs(ctx, &FvRsConsIfV1List, false) + FvRsConsIfV1Set, _ := types.SetValueFrom(ctx, deprecatedFvRsConsIfType, FvRsConsIfV1List) + upgradedStateData.DeprecatedFvRsConsIf = FvRsConsIfV1Set + + var FvRsProvV1List []FvRsProvFvESgResourceModelV1 + priorStateData.FvRsProv.ElementsAs(ctx, &FvRsProvV1List, false) + FvRsProvV1Set, _ := types.SetValueFrom(ctx, deprecatedFvRsProvType, FvRsProvV1List) + upgradedStateData.DeprecatedFvRsProv = FvRsProvV1Set + + resp.Diagnostics.Append(resp.State.Set(ctx, upgradedStateData)...) + }, + }, + } +} + +func setFvESgLegacyAttributes(ctx context.Context, diags *diag.Diagnostics, data *FvESgResourceModel, classReadInfo []interface{}) { + data.DeprecatedParentDn = data.ParentDn + attributes := classReadInfo[0].(map[string]interface{})["attributes"].(map[string]interface{}) + for attributeName, attributeValue := range attributes { + if attributeName == "matchT" { + data.DeprecatedMatchT = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "pcEnfPref" { + data.DeprecatedPcEnfPref = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "prefGrMemb" { + data.DeprecatedPrefGrMemb = basetypes.NewStringValue(attributeValue.(string)) + } + } + DeprecatedFvRsIntraEpgFvESgList := make([]string, 0) + DeprecatedFvRsSecInheritedFvESgList := make([]string, 0) + + _, ok := classReadInfo[0].(map[string]interface{})["children"] + if ok { + children := classReadInfo[0].(map[string]interface{})["children"].([]interface{}) + for _, child := range children { + for childClassName, childClassDetails := range child.(map[string]interface{}) { + childAttributes := childClassDetails.(map[string]interface{})["attributes"].(map[string]interface{}) + if childClassName == "fvRsIntraEpg" { + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "tDn" && childAttributeValue != "" { + DeprecatedFvRsIntraEpgFvESgList = append(DeprecatedFvRsIntraEpgFvESgList, childAttributeValue.(string)) + } + } + } + if childClassName == "fvRsScope" { + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "tDn" { + data.DeprecatedFvRsScope = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + } + if childClassName == "fvRsSecInherited" { + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "tDn" && childAttributeValue != "" { + DeprecatedFvRsSecInheritedFvESgList = append(DeprecatedFvRsSecInheritedFvESgList, childAttributeValue.(string)) + } + } + } + } + } + data.DeprecatedFvRsCons = types.SetNull(deprecatedFvRsConsType) + data.DeprecatedFvRsConsIf = types.SetNull(deprecatedFvRsConsIfType) + fvRsIntraEpgSet, _ := types.SetValueFrom(ctx, data.DeprecatedFvRsIntraEpg.ElementType(ctx), DeprecatedFvRsIntraEpgFvESgList) + data.DeprecatedFvRsIntraEpg = fvRsIntraEpgSet + data.DeprecatedFvRsProv = types.SetNull(deprecatedFvRsProvType) + fvRsSecInheritedSet, _ := types.SetValueFrom(ctx, data.DeprecatedFvRsSecInherited.ElementType(ctx), DeprecatedFvRsSecInheritedFvESgList) + data.DeprecatedFvRsSecInherited = fvRsSecInheritedSet + } +} + +func (r *FvESgResource) ModifyPlan(ctx context.Context, req resource.ModifyPlanRequest, resp *resource.ModifyPlanResponse) { + if !req.Plan.Raw.IsNull() { + var planData, stateData, configData *FvESgResourceModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &planData)...) + resp.Diagnostics.Append(req.State.Get(ctx, &stateData)...) + resp.Diagnostics.Append(req.Config.Get(ctx, &configData)...) + + if resp.Diagnostics.HasError() { + return + } + + if !configData.MatchT.IsNull() { + planData.DeprecatedMatchT = configData.MatchT + } else if !configData.DeprecatedMatchT.IsNull() { + planData.MatchT = configData.DeprecatedMatchT + } else if stateData != nil { // used to replace use state for unknown + planData.DeprecatedMatchT = stateData.DeprecatedMatchT + } + + if !configData.ParentDn.IsNull() { + planData.DeprecatedParentDn = configData.ParentDn + } else if !configData.DeprecatedParentDn.IsNull() { + planData.ParentDn = configData.DeprecatedParentDn + } else if stateData != nil { // used to replace use state for unknown + planData.DeprecatedParentDn = stateData.DeprecatedParentDn + } + + if !configData.PcEnfPref.IsNull() { + planData.DeprecatedPcEnfPref = configData.PcEnfPref + } else if !configData.DeprecatedPcEnfPref.IsNull() { + planData.PcEnfPref = configData.DeprecatedPcEnfPref + } else if stateData != nil { // used to replace use state for unknown + planData.DeprecatedPcEnfPref = stateData.DeprecatedPcEnfPref + } + + if !configData.PrefGrMemb.IsNull() { + planData.DeprecatedPrefGrMemb = configData.PrefGrMemb + } else if !configData.DeprecatedPrefGrMemb.IsNull() { + planData.PrefGrMemb = configData.DeprecatedPrefGrMemb + } else if stateData != nil { // used to replace use state for unknown + planData.DeprecatedPrefGrMemb = stateData.DeprecatedPrefGrMemb + } + + // HasNamedProperties false + if !configData.FvRsSecInherited.IsNull() && stateData != nil { + var attributeValues []FvRsSecInheritedFvESgResourceModel + var newAttributeValues, stateAttributeValues []string + configData.FvRsSecInherited.ElementsAs(ctx, &attributeValues, false) + stateData.DeprecatedFvRsSecInherited.ElementsAs(ctx, &stateAttributeValues, false) + for _, attributeValue := range attributeValues { + newAttributeValues = append(newAttributeValues, attributeValue.TDn.ValueString()) + } + + if len(newAttributeValues) == len(stateAttributeValues) { + allMatchState := true + for _, stateAttributeValue := range stateAttributeValues { + if !ContainsString(newAttributeValues, GetMOName(stateAttributeValue)) { + allMatchState = false + break + } + } + if allMatchState { + FvRsSecInheritedSet, _ := types.SetValueFrom(ctx, basetypes.StringType{}, stateAttributeValues) + planData.DeprecatedFvRsSecInherited = FvRsSecInheritedSet + } + } + } else if !configData.DeprecatedFvRsSecInherited.IsNull() { + FvRsSecInheritedList := make([]FvRsSecInheritedFvESgResourceModel, 0) + var attributeValues []string + var newAttributeValues []FvRsSecInheritedFvESgResourceModel + configData.DeprecatedFvRsSecInherited.ElementsAs(ctx, &attributeValues, false) + if stateData != nil { + stateData.FvRsSecInherited.ElementsAs(ctx, &newAttributeValues, false) + } + for _, attributeValue := range attributeValues { + FvRsSecInheritedValue := FvRsSecInheritedFvESgResourceModel{} + foundAttributeValue := false + for _, newAttributeValue := range newAttributeValues { + if newAttributeValue.TDn.ValueString() == attributeValue { + FvRsSecInheritedValue = newAttributeValue + foundAttributeValue = true + break + } + } + FvRsSecInherited := FvRsSecInheritedFvESgResourceModel{ + TDn: basetypes.NewStringValue(attributeValue), + } + + if foundAttributeValue { + FvRsSecInherited.Annotation = FvRsSecInheritedValue.Annotation + } else { + FvRsSecInherited.Annotation = planData.Annotation + } + FvRsSecInheritedList = append(FvRsSecInheritedList, FvRsSecInherited) + } + FvRsSecInheritedType := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "annotation": basetypes.StringType{}, + "target_dn": basetypes.StringType{}, + }, + } + FvRsSecInheritedSet, _ := types.SetValueFrom(ctx, FvRsSecInheritedType, FvRsSecInheritedList) + planData.FvRsSecInherited = FvRsSecInheritedSet + } else if stateData != nil { // used to replace use state for unknown + planData.DeprecatedFvRsSecInherited = stateData.DeprecatedFvRsSecInherited + } + + // HasNamedProperties true + if !configData.FvRsIntraEpg.IsNull() && stateData != nil { + var attributeValues []FvRsIntraEpgFvESgResourceModel + var newAttributeValues, stateAttributeValues []string + configData.FvRsIntraEpg.ElementsAs(ctx, &attributeValues, false) + stateData.DeprecatedFvRsIntraEpg.ElementsAs(ctx, &stateAttributeValues, false) + for _, attributeValue := range attributeValues { + newAttributeValues = append(newAttributeValues, attributeValue.TnVzBrCPName.ValueString()) + } + + if len(newAttributeValues) == len(stateAttributeValues) { + allMatchState := true + for _, stateAttributeValue := range stateAttributeValues { + if !ContainsString(newAttributeValues, GetMOName(stateAttributeValue)) { + allMatchState = false + break + } + } + if allMatchState { + FvRsIntraEpgSet, _ := types.SetValueFrom(ctx, basetypes.StringType{}, stateAttributeValues) + planData.DeprecatedFvRsIntraEpg = FvRsIntraEpgSet + } + } + } else if !configData.DeprecatedFvRsIntraEpg.IsNull() { + FvRsIntraEpgList := make([]FvRsIntraEpgFvESgResourceModel, 0) + var attributeValues []string + var newAttributeValues []FvRsIntraEpgFvESgResourceModel + configData.DeprecatedFvRsIntraEpg.ElementsAs(ctx, &attributeValues, false) + if stateData != nil { + stateData.FvRsIntraEpg.ElementsAs(ctx, &newAttributeValues, false) + } + for _, attributeValue := range attributeValues { + FvRsIntraEpgValue := FvRsIntraEpgFvESgResourceModel{} + foundAttributeValue := false + for _, newAttributeValue := range newAttributeValues { + if newAttributeValue.TnVzBrCPName.ValueString() == GetMOName(attributeValue) { + FvRsIntraEpgValue = newAttributeValue + foundAttributeValue = true + break + } + } + FvRsIntraEpg := FvRsIntraEpgFvESgResourceModel{ + TnVzBrCPName: basetypes.NewStringValue(GetMOName(attributeValue)), + } + + if foundAttributeValue { + FvRsIntraEpg.Annotation = FvRsIntraEpgValue.Annotation + } else { + FvRsIntraEpg.Annotation = planData.Annotation + } + FvRsIntraEpgList = append(FvRsIntraEpgList, FvRsIntraEpg) + } + FvRsIntraEpgType := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "annotation": basetypes.StringType{}, + "contract_name": basetypes.StringType{}, + }, + } + FvRsIntraEpgSet, _ := types.SetValueFrom(ctx, FvRsIntraEpgType, FvRsIntraEpgList) + planData.FvRsIntraEpg = FvRsIntraEpgSet + } else if stateData != nil { // used to replace use state for unknown + planData.DeprecatedFvRsIntraEpg = stateData.DeprecatedFvRsIntraEpg + } + + if !configData.FvRsScope.IsNull() && stateData != nil { + var attributeValues []FvRsScopeFvESgResourceModel + configData.FvRsScope.ElementsAs(ctx, &attributeValues, false) + for _, attributeValue := range attributeValues { + if GetMOName(stateData.DeprecatedFvRsScope.ValueString()) == attributeValue.TnFvCtxName.ValueString() { + planData.DeprecatedFvRsScope = stateData.DeprecatedFvRsScope + } + } + } else if !configData.DeprecatedFvRsScope.IsNull() { + FvRsScopeList := make([]FvRsScopeFvESgResourceModel, 0) + FvRsScope := FvRsScopeFvESgResourceModel{ + Annotation: planData.Annotation, + TnFvCtxName: basetypes.NewStringValue(GetMOName(configData.DeprecatedFvRsScope.ValueString())), + } + FvRsScopeList = append(FvRsScopeList, FvRsScope) + FvRsScopeType := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "annotation": basetypes.StringType{}, + "vrf_name": basetypes.StringType{}, + }, + } + FvRsScopeSet, _ := types.SetValueFrom(ctx, FvRsScopeType, FvRsScopeList) + planData.FvRsScope = FvRsScopeSet + } else if stateData != nil { // used to replace use state for unknown + planData.DeprecatedFvRsScope = stateData.DeprecatedFvRsScope + } + + planData.DeprecatedFvRsCons = types.SetNull(deprecatedFvRsConsType) + if !configData.DeprecatedFvRsCons.IsNull() && stateData != nil { + FvRsConsList := make([]FvRsConsFvESgResourceModel, 0) + var attributeValues []FvRsConsFvESgResourceModelV1 + var newAttributeValues []FvRsConsFvESgResourceModel + configData.DeprecatedFvRsCons.ElementsAs(ctx, &attributeValues, false) + stateData.FvRsCons.ElementsAs(ctx, &newAttributeValues, false) + for _, attributeValue := range attributeValues { + plannedFvRsCons := FvRsConsFvESgResourceModel{} + foundAttributeValue := false + for _, newAttributeValue := range newAttributeValues { + if newAttributeValue.TnVzBrCPName.ValueString() == GetMOName(attributeValue.TargetDn.ValueString()) { + plannedFvRsCons = newAttributeValue + foundAttributeValue = true + break + } + } + + FvRsCons := FvRsConsFvESgResourceModel{ + Annotation: planData.Annotation, + Prio: attributeValue.Prio, + } + + if foundAttributeValue { + FvRsCons.TnVzBrCPName = plannedFvRsCons.TnVzBrCPName + } else { + FvRsCons.TnVzBrCPName = basetypes.NewStringValue(GetMOName(attributeValue.TargetDn.ValueString())) + } + + FvRsConsList = append(FvRsConsList, FvRsCons) + } + + FvRsConsType := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "annotation": basetypes.StringType{}, + "priority": basetypes.StringType{}, + "contract_name": basetypes.StringType{}, + }, + } + FvRsConsSet, _ := types.SetValueFrom(ctx, FvRsConsType, FvRsConsList) + planData.FvRsCons = FvRsConsSet + } + + planData.DeprecatedFvRsConsIf = types.SetNull(deprecatedFvRsConsIfType) + if !configData.DeprecatedFvRsConsIf.IsNull() && stateData != nil { + FvRsConsIfList := make([]FvRsConsIfFvESgResourceModel, 0) + var attributeValues []FvRsConsIfFvESgResourceModelV1 + var newAttributeValues []FvRsConsIfFvESgResourceModel + configData.DeprecatedFvRsConsIf.ElementsAs(ctx, &attributeValues, false) + stateData.FvRsConsIf.ElementsAs(ctx, &newAttributeValues, false) + for _, attributeValue := range attributeValues { + plannedFvRsConsIf := FvRsConsIfFvESgResourceModel{} + foundAttributeValue := false + for _, newAttributeValue := range newAttributeValues { + if newAttributeValue.TnVzCPIfName.ValueString() == GetMOName(attributeValue.TargetDn.ValueString()) { + plannedFvRsConsIf = newAttributeValue + foundAttributeValue = true + break + } + } + + FvRsConsIf := FvRsConsIfFvESgResourceModel{ + Annotation: planData.Annotation, + Prio: attributeValue.Prio, + } + + if foundAttributeValue { + FvRsConsIf.TnVzCPIfName = plannedFvRsConsIf.TnVzCPIfName + } else { + FvRsConsIf.TnVzCPIfName = basetypes.NewStringValue(GetMOName(attributeValue.TargetDn.ValueString())) + } + + FvRsConsIfList = append(FvRsConsIfList, FvRsConsIf) + } + + FvRsConsIfType := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "annotation": basetypes.StringType{}, + "priority": basetypes.StringType{}, + "contract_interface_name": basetypes.StringType{}, + }, + } + FvRsConsIfSet, _ := types.SetValueFrom(ctx, FvRsConsIfType, FvRsConsIfList) + planData.FvRsConsIf = FvRsConsIfSet + } + + planData.DeprecatedFvRsProv = types.SetNull(deprecatedFvRsProvType) + if !configData.DeprecatedFvRsProv.IsNull() && stateData != nil { + FvRsProvList := make([]FvRsProvFvESgResourceModel, 0) + var attributeValues []FvRsProvFvESgResourceModelV1 + var newAttributeValues []FvRsProvFvESgResourceModel + configData.DeprecatedFvRsProv.ElementsAs(ctx, &attributeValues, false) + stateData.FvRsProv.ElementsAs(ctx, &newAttributeValues, false) + for _, attributeValue := range attributeValues { + plannedFvRsProv := FvRsProvFvESgResourceModel{} + foundAttributeValue := false + for _, newAttributeValue := range newAttributeValues { + if newAttributeValue.TnVzBrCPName.ValueString() == GetMOName(attributeValue.TargetDn.ValueString()) { + plannedFvRsProv = newAttributeValue + foundAttributeValue = true + break + } + } + + FvRsProv := FvRsProvFvESgResourceModel{ + Annotation: planData.Annotation, + MatchT: attributeValue.MatchT, + Prio: attributeValue.Prio, + } + + if foundAttributeValue { + FvRsProv.TnVzBrCPName = plannedFvRsProv.TnVzBrCPName + } else { + FvRsProv.TnVzBrCPName = basetypes.NewStringValue(GetMOName(attributeValue.TargetDn.ValueString())) + } + + FvRsProvList = append(FvRsProvList, FvRsProv) + } + + FvRsProvType := types.ObjectType{ + AttrTypes: map[string]attr.Type{ + "annotation": basetypes.StringType{}, + "match_criteria": basetypes.StringType{}, + "priority": basetypes.StringType{}, + "contract_name": basetypes.StringType{}, + }, + } + FvRsProvSet, _ := types.SetValueFrom(ctx, FvRsProvType, FvRsProvList) + planData.FvRsProv = FvRsProvSet + } + + resp.Diagnostics.Append(resp.Plan.Set(ctx, &planData)...) + } +} + +func (r *FvESgResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of resource: aci_endpoint_security_group") + resp.TypeName = req.ProviderTypeName + "_endpoint_security_group" + tflog.Debug(ctx, "End metadata of resource: aci_endpoint_security_group") +} + +func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of resource: aci_endpoint_security_group") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The endpoint_security_group resource for the 'fvESg' class", + Version: 2, + + Attributes: map[string]schema.Attribute{ + // Deprecated attributes + "match_t": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute 'match_t' will be deprecated soon, please use 'match_criteria' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("match_criteria"), + }...), + }, + }, + "application_profile_dn": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute 'application_profile_dn' will be deprecated soon, please use 'parent_dn' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("parent_dn"), + }...), + }, + }, + "pc_enf_pref": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute 'pc_enf_pref' will be deprecated soon, please use 'intra_esg_isolation' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("intra_esg_isolation"), + }...), + }, + }, + "pref_gr_memb": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute 'pref_gr_memb' will be deprecated soon, please use 'preferred_group_member' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("preferred_group_member"), + }...), + }, + }, + "relation_fv_rs_sec_inherited": schema.SetAttribute{ + Optional: true, + Computed: true, + ElementType: types.StringType, + DeprecationMessage: "Attribute 'relation_fv_rs_sec_inherited' will be deprecated soon, please use 'relation_to_contract_masters.target_dn' instead", + Validators: []validator.Set{ + setvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("relation_to_contract_masters"), + }...), + }, + }, + "relation_fv_rs_intra_epg": schema.SetAttribute{ + Optional: true, + Computed: true, + ElementType: types.StringType, + DeprecationMessage: "Attribute 'relation_fv_rs_intra_epg' will be deprecated soon, please use 'relation_to_intra_epg_contracts.contract_name' instead", + Validators: []validator.Set{ + setvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("relation_to_intra_epg_contracts"), + }...), + }, + }, + "relation_fv_rs_scope": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute 'relation_fv_rs_scope' will be deprecated soon, please use 'relation_to_vrf.vrf_name' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("relation_to_vrf"), + }...), + }, + }, + // End of deprecated attributes + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Endpoint Security Group object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "parent_dn": schema.StringAttribute{ + Optional: true, + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + Validators: []validator.String{ + stringvalidator.AtLeastOneOf(path.Expressions{ + path.MatchRoot("application_profile_dn"), + }...), + }, + }, + "annotation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Default: stringdefault.StaticString(globalAnnotation), + MarkdownDescription: `The annotation of the Endpoint Security Group object.`, + }, + "description": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The description of the Endpoint Security Group object.`, + }, + "exception_tag": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `Contract Exception Tag.`, + }, + "match_criteria": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf("All", "AtleastOne", "AtmostOne", "None"), + }, + MarkdownDescription: `The provider label match criteria.`, + }, + "name": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + MarkdownDescription: `The name of the Endpoint Security Group object.`, + }, + "name_alias": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The name alias of the Endpoint Security Group object.`, + }, + "intra_esg_isolation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf("enforced", "unenforced"), + }, + MarkdownDescription: `Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this EPG.`, + }, + "preferred_group_member": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf("exclude", "include"), + }, + MarkdownDescription: `Represents parameter used to determine if EPg is part of a group that does not a contract for communication.`, + }, + "admin_state": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf("no", "yes"), + }, + MarkdownDescription: `Withdraw ESg Configuration from all Nodes in the Fabric.`, + }, + "relation_to_consumed_contracts": schema.SetNestedAttribute{ + MarkdownDescription: `The Consumer contract profile information.`, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "annotation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The annotation of the Relation To Consumed Contract object.`, + }, + "priority": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), + }, + MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + }, + "contract_name": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The consumer contract name.`, + }, + }, + }, + }, + "relation_to_consumed_contract_interfaces": schema.SetNestedAttribute{ + MarkdownDescription: `A contract for which the EPG will be a consumer.`, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "annotation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The annotation of the Relation To Consumed Contract Interface object.`, + }, + "priority": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), + }, + MarkdownDescription: `The contract interface priority.`, + }, + "contract_interface_name": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The contract interface name.`, + }, + }, + }, + }, + "relation_to_intra_epg_contracts": schema.SetNestedAttribute{ + MarkdownDescription: `Intra EPg contract: + Represents that the EPg is moving from "allow all within epg" mode + to a "deny all within epg" mode. + The only type of traffic allowed between EPs in this EPg is the one + specified by contracts EPg associates to with this relation.`, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "annotation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The annotation of the Relation To Intra Epg Contract object.`, + }, + "contract_name": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The binary contract name.`, + }, + }, + }, + }, + "relation_to_provided_contracts": schema.SetNestedAttribute{ + MarkdownDescription: `A contract for which the EPG will be a provider.`, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "annotation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The annotation of the Relation To Provided Contract object.`, + }, + "match_criteria": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf("All", "AtleastOne", "AtmostOne", "None"), + }, + MarkdownDescription: `The matched EPG type.`, + }, + "priority": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), + }, + MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + }, + "contract_name": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The provider contract name.`, + }, + }, + }, + }, + "relation_to_vrf": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.Set{ + setvalidator.SizeAtMost(1), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "annotation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The annotation of the Relation To VRF object.`, + }, + "vrf_name": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `Name.`, + }, + }, + }, + }, + "relation_to_contract_masters": schema.SetNestedAttribute{ + MarkdownDescription: `Represents that the EPg is inheriting security configuration from another EPg`, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "annotation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The annotation of the Relation To Contract Master object.`, + }, + "target_dn": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The distinguished name of the target.`, + }, + }, + }, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + Blocks: map[string]schema.Block{ + "relation_fv_rs_cons": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "target_dn": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute 'target_dn' will be deprecated soon, please use 'relation_to_consumed_contracts.contract_name' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("relation_to_consumed_contracts"), + }...), + }, + }, + "prio": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute 'prio' will be deprecated soon, please use 'relation_to_consumed_contracts.priority' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("relation_to_consumed_contracts"), + }...), + }, + }, + }, + }, + }, + "relation_fv_rs_cons_if": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "target_dn": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute 'target_dn' will be deprecated soon, please use 'relation_to_consumed_contract_interfaces.contract_interface_name' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("relation_to_consumed_contract_interfaces"), + }...), + }, + }, + "prio": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute 'prio' will be deprecated soon, please use 'relation_to_consumed_contract_interfaces.priority' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("relation_to_consumed_contract_interfaces"), + }...), + }, + }, + }, + }, + }, + "relation_fv_rs_prov": schema.SetNestedBlock{ + NestedObject: schema.NestedBlockObject{ + Attributes: map[string]schema.Attribute{ + "target_dn": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute 'target_dn' will be deprecated soon, please use 'relation_to_provided_contracts.contract_name' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("relation_to_provided_contracts"), + }...), + }, + }, + "match_t": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute 'match_t' will be deprecated soon, please use 'relation_to_provided_contracts.match_criteria' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("relation_to_provided_contracts"), + }...), + }, + }, + "prio": schema.StringAttribute{ + Optional: true, + Computed: true, + DeprecationMessage: "Attribute 'prio' will be deprecated soon, please use 'relation_to_provided_contracts.priority' instead", + Validators: []validator.String{ + stringvalidator.ConflictsWith(path.Expressions{ + path.MatchRoot("relation_to_provided_contracts"), + }...), + }, + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of resource: aci_endpoint_security_group") +} + +func (r *FvESgResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of resource: aci_endpoint_security_group") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Resource Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + r.client = client + tflog.Debug(ctx, "End configure of resource: aci_endpoint_security_group") +} + +func (r *FvESgResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + tflog.Debug(ctx, "Start create of resource: aci_endpoint_security_group") + // On create retrieve information on current state prior to making any changes in order to determine child delete operations + var stateData *FvESgResourceModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &stateData)...) + setFvESgId(ctx, stateData) + getAndSetFvESgAttributes(ctx, &resp.Diagnostics, r.client, stateData) + + var data *FvESgResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvESgId(ctx, data) + + tflog.Debug(ctx, fmt.Sprintf("Create of resource aci_endpoint_security_group with id '%s'", data.Id.ValueString())) + + var fvRsConsPlan, fvRsConsState []FvRsConsFvESgResourceModel + data.FvRsCons.ElementsAs(ctx, &fvRsConsPlan, false) + stateData.FvRsCons.ElementsAs(ctx, &fvRsConsState, false) + var fvRsConsIfPlan, fvRsConsIfState []FvRsConsIfFvESgResourceModel + data.FvRsConsIf.ElementsAs(ctx, &fvRsConsIfPlan, false) + stateData.FvRsConsIf.ElementsAs(ctx, &fvRsConsIfState, false) + var fvRsIntraEpgPlan, fvRsIntraEpgState []FvRsIntraEpgFvESgResourceModel + data.FvRsIntraEpg.ElementsAs(ctx, &fvRsIntraEpgPlan, false) + stateData.FvRsIntraEpg.ElementsAs(ctx, &fvRsIntraEpgState, false) + var fvRsProvPlan, fvRsProvState []FvRsProvFvESgResourceModel + data.FvRsProv.ElementsAs(ctx, &fvRsProvPlan, false) + stateData.FvRsProv.ElementsAs(ctx, &fvRsProvState, false) + var fvRsScopePlan, fvRsScopeState []FvRsScopeFvESgResourceModel + data.FvRsScope.ElementsAs(ctx, &fvRsScopePlan, false) + stateData.FvRsScope.ElementsAs(ctx, &fvRsScopeState, false) + var fvRsSecInheritedPlan, fvRsSecInheritedState []FvRsSecInheritedFvESgResourceModel + data.FvRsSecInherited.ElementsAs(ctx, &fvRsSecInheritedPlan, false) + stateData.FvRsSecInherited.ElementsAs(ctx, &fvRsSecInheritedState, false) + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvESgResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvESgResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvESgCreateJsonPayload(ctx, &resp.Diagnostics, data, fvRsConsPlan, fvRsConsState, fvRsConsIfPlan, fvRsConsIfState, fvRsIntraEpgPlan, fvRsIntraEpgState, fvRsProvPlan, fvRsProvState, fvRsScopePlan, fvRsScopeState, fvRsSecInheritedPlan, fvRsSecInheritedState, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvESgAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End create of resource aci_endpoint_security_group with id '%s'", data.Id.ValueString())) +} + +func (r *FvESgResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + tflog.Debug(ctx, "Start read of resource: aci_endpoint_security_group") + var data *FvESgResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Read of resource aci_endpoint_security_group with id '%s'", data.Id.ValueString())) + + getAndSetFvESgAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + if data.Id.IsNull() { + var emptyData *FvESgResourceModel + resp.Diagnostics.Append(resp.State.Set(ctx, &emptyData)...) + } else { + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + } + + tflog.Debug(ctx, fmt.Sprintf("End read of resource aci_endpoint_security_group with id '%s'", data.Id.ValueString())) +} + +func (r *FvESgResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + tflog.Debug(ctx, "Start update of resource: aci_endpoint_security_group") + var data *FvESgResourceModel + var stateData *FvESgResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + resp.Diagnostics.Append(req.State.Get(ctx, &stateData)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Update of resource aci_endpoint_security_group with id '%s'", data.Id.ValueString())) + + var fvRsConsPlan, fvRsConsState []FvRsConsFvESgResourceModel + data.FvRsCons.ElementsAs(ctx, &fvRsConsPlan, false) + stateData.FvRsCons.ElementsAs(ctx, &fvRsConsState, false) + var fvRsConsIfPlan, fvRsConsIfState []FvRsConsIfFvESgResourceModel + data.FvRsConsIf.ElementsAs(ctx, &fvRsConsIfPlan, false) + stateData.FvRsConsIf.ElementsAs(ctx, &fvRsConsIfState, false) + var fvRsIntraEpgPlan, fvRsIntraEpgState []FvRsIntraEpgFvESgResourceModel + data.FvRsIntraEpg.ElementsAs(ctx, &fvRsIntraEpgPlan, false) + stateData.FvRsIntraEpg.ElementsAs(ctx, &fvRsIntraEpgState, false) + var fvRsProvPlan, fvRsProvState []FvRsProvFvESgResourceModel + data.FvRsProv.ElementsAs(ctx, &fvRsProvPlan, false) + stateData.FvRsProv.ElementsAs(ctx, &fvRsProvState, false) + var fvRsScopePlan, fvRsScopeState []FvRsScopeFvESgResourceModel + data.FvRsScope.ElementsAs(ctx, &fvRsScopePlan, false) + stateData.FvRsScope.ElementsAs(ctx, &fvRsScopeState, false) + var fvRsSecInheritedPlan, fvRsSecInheritedState []FvRsSecInheritedFvESgResourceModel + data.FvRsSecInherited.ElementsAs(ctx, &fvRsSecInheritedPlan, false) + stateData.FvRsSecInherited.ElementsAs(ctx, &fvRsSecInheritedState, false) + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvESgResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvESgResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvESgCreateJsonPayload(ctx, &resp.Diagnostics, data, fvRsConsPlan, fvRsConsState, fvRsConsIfPlan, fvRsConsIfState, fvRsIntraEpgPlan, fvRsIntraEpgState, fvRsProvPlan, fvRsProvState, fvRsScopePlan, fvRsScopeState, fvRsSecInheritedPlan, fvRsSecInheritedState, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvESgAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End update of resource aci_endpoint_security_group with id '%s'", data.Id.ValueString())) +} + +func (r *FvESgResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + tflog.Debug(ctx, "Start delete of resource: aci_endpoint_security_group") + var data *FvESgResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Delete of resource aci_endpoint_security_group with id '%s'", data.Id.ValueString())) + jsonPayload := GetDeleteJsonPayload(ctx, &resp.Diagnostics, "fvESg", data.Id.ValueString()) + if resp.Diagnostics.HasError() { + return + } + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + tflog.Debug(ctx, fmt.Sprintf("End delete of resource aci_endpoint_security_group with id '%s'", data.Id.ValueString())) +} + +func (r *FvESgResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + tflog.Debug(ctx, "Start import state of resource: aci_endpoint_security_group") + resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) + + var stateData *FvESgResourceModel + resp.Diagnostics.Append(resp.State.Get(ctx, &stateData)...) + tflog.Debug(ctx, fmt.Sprintf("Import state of resource aci_endpoint_security_group with id '%s'", stateData.Id.ValueString())) + + tflog.Debug(ctx, "End import of state resource: aci_endpoint_security_group") +} + +func getAndSetFvESgAttributes(ctx context.Context, diags *diag.Diagnostics, client *client.Client, data *FvESgResourceModel) { + requestData := DoRestRequest(ctx, diags, client, fmt.Sprintf("api/mo/%s.json?rsp-subtree=children&rsp-subtree-class=%s", data.Id.ValueString(), "fvESg,fvRsCons,fvRsConsIf,fvRsIntraEpg,fvRsProv,fvRsScope,fvRsSecInherited,tagAnnotation,tagTag"), "GET", nil) + + if diags.HasError() { + return + } + if requestData.Search("imdata").Search("fvESg").Data() != nil { + classReadInfo := requestData.Search("imdata").Search("fvESg").Data().([]interface{}) + if len(classReadInfo) == 1 { + attributes := classReadInfo[0].(map[string]interface{})["attributes"].(map[string]interface{}) + for attributeName, attributeValue := range attributes { + if attributeName == "dn" { + data.Id = basetypes.NewStringValue(attributeValue.(string)) + setFvESgParentDn(ctx, attributeValue.(string), data) + } + if attributeName == "annotation" { + data.Annotation = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "descr" { + data.Descr = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "exceptionTag" { + data.ExceptionTag = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "matchT" { + data.MatchT = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "name" { + data.Name = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "nameAlias" { + data.NameAlias = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "pcEnfPref" { + data.PcEnfPref = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "prefGrMemb" { + data.PrefGrMemb = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "shutdown" { + data.Shutdown = basetypes.NewStringValue(attributeValue.(string)) + } + } + FvRsConsFvESgList := make([]FvRsConsFvESgResourceModel, 0) + FvRsConsIfFvESgList := make([]FvRsConsIfFvESgResourceModel, 0) + FvRsIntraEpgFvESgList := make([]FvRsIntraEpgFvESgResourceModel, 0) + FvRsProvFvESgList := make([]FvRsProvFvESgResourceModel, 0) + FvRsScopeFvESgList := make([]FvRsScopeFvESgResourceModel, 1) + FvRsSecInheritedFvESgList := make([]FvRsSecInheritedFvESgResourceModel, 0) + TagAnnotationFvESgList := make([]TagAnnotationFvESgResourceModel, 0) + TagTagFvESgList := make([]TagTagFvESgResourceModel, 0) + _, ok := classReadInfo[0].(map[string]interface{})["children"] + if ok { + children := classReadInfo[0].(map[string]interface{})["children"].([]interface{}) + for _, child := range children { + for childClassName, childClassDetails := range child.(map[string]interface{}) { + childAttributes := childClassDetails.(map[string]interface{})["attributes"].(map[string]interface{}) + if childClassName == "fvRsCons" { + FvRsConsFvESg := FvRsConsFvESgResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "annotation" { + FvRsConsFvESg.Annotation = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "prio" { + FvRsConsFvESg.Prio = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "tnVzBrCPName" { + FvRsConsFvESg.TnVzBrCPName = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + FvRsConsFvESgList = append(FvRsConsFvESgList, FvRsConsFvESg) + } + if childClassName == "fvRsConsIf" { + FvRsConsIfFvESg := FvRsConsIfFvESgResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "annotation" { + FvRsConsIfFvESg.Annotation = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "prio" { + FvRsConsIfFvESg.Prio = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "tnVzCPIfName" { + FvRsConsIfFvESg.TnVzCPIfName = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + FvRsConsIfFvESgList = append(FvRsConsIfFvESgList, FvRsConsIfFvESg) + } + if childClassName == "fvRsIntraEpg" { + FvRsIntraEpgFvESg := FvRsIntraEpgFvESgResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "annotation" { + FvRsIntraEpgFvESg.Annotation = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "tnVzBrCPName" { + FvRsIntraEpgFvESg.TnVzBrCPName = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + FvRsIntraEpgFvESgList = append(FvRsIntraEpgFvESgList, FvRsIntraEpgFvESg) + } + if childClassName == "fvRsProv" { + FvRsProvFvESg := FvRsProvFvESgResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "annotation" { + FvRsProvFvESg.Annotation = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "matchT" { + FvRsProvFvESg.MatchT = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "prio" { + FvRsProvFvESg.Prio = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "tnVzBrCPName" { + FvRsProvFvESg.TnVzBrCPName = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + FvRsProvFvESgList = append(FvRsProvFvESgList, FvRsProvFvESg) + } + if childClassName == "fvRsScope" { + FvRsScopeFvESg := FvRsScopeFvESgResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "annotation" { + FvRsScopeFvESg.Annotation = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "tnFvCtxName" { + FvRsScopeFvESg.TnFvCtxName = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + FvRsScopeFvESgList[0] = FvRsScopeFvESg + } + if childClassName == "fvRsSecInherited" { + FvRsSecInheritedFvESg := FvRsSecInheritedFvESgResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "annotation" { + FvRsSecInheritedFvESg.Annotation = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "tDn" { + FvRsSecInheritedFvESg.TDn = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + FvRsSecInheritedFvESgList = append(FvRsSecInheritedFvESgList, FvRsSecInheritedFvESg) + } + if childClassName == "tagAnnotation" { + TagAnnotationFvESg := TagAnnotationFvESgResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagAnnotationFvESg.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagAnnotationFvESg.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagAnnotationFvESgList = append(TagAnnotationFvESgList, TagAnnotationFvESg) + } + if childClassName == "tagTag" { + TagTagFvESg := TagTagFvESgResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagTagFvESg.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagTagFvESg.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagTagFvESgList = append(TagTagFvESgList, TagTagFvESg) + } + } + } + } + fvRsConsSet, _ := types.SetValueFrom(ctx, data.FvRsCons.ElementType(ctx), FvRsConsFvESgList) + data.FvRsCons = fvRsConsSet + fvRsConsIfSet, _ := types.SetValueFrom(ctx, data.FvRsConsIf.ElementType(ctx), FvRsConsIfFvESgList) + data.FvRsConsIf = fvRsConsIfSet + fvRsIntraEpgSet, _ := types.SetValueFrom(ctx, data.FvRsIntraEpg.ElementType(ctx), FvRsIntraEpgFvESgList) + data.FvRsIntraEpg = fvRsIntraEpgSet + fvRsProvSet, _ := types.SetValueFrom(ctx, data.FvRsProv.ElementType(ctx), FvRsProvFvESgList) + data.FvRsProv = fvRsProvSet + fvRsScopeSet, _ := types.SetValueFrom(ctx, data.FvRsScope.ElementType(ctx), FvRsScopeFvESgList) + data.FvRsScope = fvRsScopeSet + fvRsSecInheritedSet, _ := types.SetValueFrom(ctx, data.FvRsSecInherited.ElementType(ctx), FvRsSecInheritedFvESgList) + data.FvRsSecInherited = fvRsSecInheritedSet + tagAnnotationSet, _ := types.SetValueFrom(ctx, data.TagAnnotation.ElementType(ctx), TagAnnotationFvESgList) + data.TagAnnotation = tagAnnotationSet + tagTagSet, _ := types.SetValueFrom(ctx, data.TagTag.ElementType(ctx), TagTagFvESgList) + data.TagTag = tagTagSet + setFvESgLegacyAttributes(ctx, diags, data, classReadInfo) + } else { + diags.AddError( + "too many results in response", + fmt.Sprintf("%v matches returned for class 'fvESg'. Please report this issue to the provider developers.", len(classReadInfo)), + ) + } + } else { + data.Id = basetypes.NewStringNull() + } +} + +func getFvESgRn(ctx context.Context, data *FvESgResourceModel) string { + rn := "esg-{name}" + for _, identifier := range []string{"name"} { + fieldName := fmt.Sprintf("%s%s", strings.ToUpper(identifier[:1]), identifier[1:]) + fieldValue := reflect.ValueOf(data).Elem().FieldByName(fieldName).Interface().(basetypes.StringValue).ValueString() + rn = strings.ReplaceAll(rn, fmt.Sprintf("{%s}", identifier), fieldValue) + } + return rn +} + +func setFvESgParentDn(ctx context.Context, dn string, data *FvESgResourceModel) { + bracketIndex := 0 + rnIndex := 0 + for i := len(dn) - 1; i >= 0; i-- { + if string(dn[i]) == "]" { + bracketIndex = bracketIndex + 1 + } else if string(dn[i]) == "[" { + bracketIndex = bracketIndex - 1 + } else if string(dn[i]) == "/" && bracketIndex == 0 { + rnIndex = i + break + } + } + data.ParentDn = basetypes.NewStringValue(dn[:rnIndex]) +} + +func setFvESgId(ctx context.Context, data *FvESgResourceModel) { + rn := getFvESgRn(ctx, data) + data.Id = types.StringValue(fmt.Sprintf("%s/%s", data.ParentDn.ValueString(), rn)) +} + +func getFvESgFvRsConsChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvESgResourceModel, fvRsConsPlan, fvRsConsState []FvRsConsFvESgResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.FvRsCons.IsUnknown() { + fvRsConsIdentifiers := []FvRsConsIdentifier{} + for _, fvRsCons := range fvRsConsPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !fvRsCons.Annotation.IsUnknown() { + childMap["attributes"]["annotation"] = fvRsCons.Annotation.ValueString() + } else { + childMap["attributes"]["annotation"] = globalAnnotation + } + if !fvRsCons.Prio.IsUnknown() { + childMap["attributes"]["prio"] = fvRsCons.Prio.ValueString() + } + if !fvRsCons.TnVzBrCPName.IsUnknown() { + childMap["attributes"]["tnVzBrCPName"] = fvRsCons.TnVzBrCPName.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"fvRsCons": childMap}) + fvRsConsIdentifier := FvRsConsIdentifier{} + fvRsConsIdentifier.TnVzBrCPName = fvRsCons.TnVzBrCPName + fvRsConsIdentifiers = append(fvRsConsIdentifiers, fvRsConsIdentifier) + } + for _, fvRsCons := range fvRsConsState { + delete := true + for _, fvRsConsIdentifier := range fvRsConsIdentifiers { + if fvRsConsIdentifier.TnVzBrCPName == fvRsCons.TnVzBrCPName { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["tnVzBrCPName"] = fvRsCons.TnVzBrCPName.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"fvRsCons": childMap}) + } + } + } else { + data.FvRsCons = types.SetNull(data.FvRsCons.ElementType(ctx)) + } + + return childPayloads +} +func getFvESgFvRsConsIfChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvESgResourceModel, fvRsConsIfPlan, fvRsConsIfState []FvRsConsIfFvESgResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.FvRsConsIf.IsUnknown() { + fvRsConsIfIdentifiers := []FvRsConsIfIdentifier{} + for _, fvRsConsIf := range fvRsConsIfPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !fvRsConsIf.Annotation.IsUnknown() { + childMap["attributes"]["annotation"] = fvRsConsIf.Annotation.ValueString() + } else { + childMap["attributes"]["annotation"] = globalAnnotation + } + if !fvRsConsIf.Prio.IsUnknown() { + childMap["attributes"]["prio"] = fvRsConsIf.Prio.ValueString() + } + if !fvRsConsIf.TnVzCPIfName.IsUnknown() { + childMap["attributes"]["tnVzCPIfName"] = fvRsConsIf.TnVzCPIfName.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"fvRsConsIf": childMap}) + fvRsConsIfIdentifier := FvRsConsIfIdentifier{} + fvRsConsIfIdentifier.TnVzCPIfName = fvRsConsIf.TnVzCPIfName + fvRsConsIfIdentifiers = append(fvRsConsIfIdentifiers, fvRsConsIfIdentifier) + } + for _, fvRsConsIf := range fvRsConsIfState { + delete := true + for _, fvRsConsIfIdentifier := range fvRsConsIfIdentifiers { + if fvRsConsIfIdentifier.TnVzCPIfName == fvRsConsIf.TnVzCPIfName { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["tnVzCPIfName"] = fvRsConsIf.TnVzCPIfName.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"fvRsConsIf": childMap}) + } + } + } else { + data.FvRsConsIf = types.SetNull(data.FvRsConsIf.ElementType(ctx)) + } + + return childPayloads +} +func getFvESgFvRsIntraEpgChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvESgResourceModel, fvRsIntraEpgPlan, fvRsIntraEpgState []FvRsIntraEpgFvESgResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.FvRsIntraEpg.IsUnknown() { + fvRsIntraEpgIdentifiers := []FvRsIntraEpgIdentifier{} + for _, fvRsIntraEpg := range fvRsIntraEpgPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !fvRsIntraEpg.Annotation.IsUnknown() { + childMap["attributes"]["annotation"] = fvRsIntraEpg.Annotation.ValueString() + } else { + childMap["attributes"]["annotation"] = globalAnnotation + } + if !fvRsIntraEpg.TnVzBrCPName.IsUnknown() { + childMap["attributes"]["tnVzBrCPName"] = fvRsIntraEpg.TnVzBrCPName.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"fvRsIntraEpg": childMap}) + fvRsIntraEpgIdentifier := FvRsIntraEpgIdentifier{} + fvRsIntraEpgIdentifier.TnVzBrCPName = fvRsIntraEpg.TnVzBrCPName + fvRsIntraEpgIdentifiers = append(fvRsIntraEpgIdentifiers, fvRsIntraEpgIdentifier) + } + for _, fvRsIntraEpg := range fvRsIntraEpgState { + delete := true + for _, fvRsIntraEpgIdentifier := range fvRsIntraEpgIdentifiers { + if fvRsIntraEpgIdentifier.TnVzBrCPName == fvRsIntraEpg.TnVzBrCPName { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["tnVzBrCPName"] = fvRsIntraEpg.TnVzBrCPName.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"fvRsIntraEpg": childMap}) + } + } + } else { + data.FvRsIntraEpg = types.SetNull(data.FvRsIntraEpg.ElementType(ctx)) + } + + return childPayloads +} +func getFvESgFvRsProvChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvESgResourceModel, fvRsProvPlan, fvRsProvState []FvRsProvFvESgResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.FvRsProv.IsUnknown() { + fvRsProvIdentifiers := []FvRsProvIdentifier{} + for _, fvRsProv := range fvRsProvPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !fvRsProv.Annotation.IsUnknown() { + childMap["attributes"]["annotation"] = fvRsProv.Annotation.ValueString() + } else { + childMap["attributes"]["annotation"] = globalAnnotation + } + if !fvRsProv.MatchT.IsUnknown() { + childMap["attributes"]["matchT"] = fvRsProv.MatchT.ValueString() + } + if !fvRsProv.Prio.IsUnknown() { + childMap["attributes"]["prio"] = fvRsProv.Prio.ValueString() + } + if !fvRsProv.TnVzBrCPName.IsUnknown() { + childMap["attributes"]["tnVzBrCPName"] = fvRsProv.TnVzBrCPName.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"fvRsProv": childMap}) + fvRsProvIdentifier := FvRsProvIdentifier{} + fvRsProvIdentifier.TnVzBrCPName = fvRsProv.TnVzBrCPName + fvRsProvIdentifiers = append(fvRsProvIdentifiers, fvRsProvIdentifier) + } + for _, fvRsProv := range fvRsProvState { + delete := true + for _, fvRsProvIdentifier := range fvRsProvIdentifiers { + if fvRsProvIdentifier.TnVzBrCPName == fvRsProv.TnVzBrCPName { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["tnVzBrCPName"] = fvRsProv.TnVzBrCPName.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"fvRsProv": childMap}) + } + } + } else { + data.FvRsProv = types.SetNull(data.FvRsProv.ElementType(ctx)) + } + + return childPayloads +} +func getFvESgFvRsScopeChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvESgResourceModel, fvRsScopePlan, fvRsScopeState []FvRsScopeFvESgResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.FvRsScope.IsUnknown() { + for _, fvRsScope := range fvRsScopePlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !fvRsScope.Annotation.IsUnknown() { + childMap["attributes"]["annotation"] = fvRsScope.Annotation.ValueString() + } else { + childMap["attributes"]["annotation"] = globalAnnotation + } + if !fvRsScope.TnFvCtxName.IsUnknown() { + childMap["attributes"]["tnFvCtxName"] = fvRsScope.TnFvCtxName.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"fvRsScope": childMap}) + } + if len(fvRsScopePlan) == 0 && len(fvRsScopeState) == 1 { + diags.AddError( + "FvRsScope object cannot be deleted", + "deletion of child is only possible upon deletion of the parent", + ) + return nil + } + } else { + data.FvRsScope = types.SetNull(data.FvRsScope.ElementType(ctx)) + } + + return childPayloads +} +func getFvESgFvRsSecInheritedChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvESgResourceModel, fvRsSecInheritedPlan, fvRsSecInheritedState []FvRsSecInheritedFvESgResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.FvRsSecInherited.IsUnknown() { + fvRsSecInheritedIdentifiers := []FvRsSecInheritedIdentifier{} + for _, fvRsSecInherited := range fvRsSecInheritedPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !fvRsSecInherited.Annotation.IsUnknown() { + childMap["attributes"]["annotation"] = fvRsSecInherited.Annotation.ValueString() + } else { + childMap["attributes"]["annotation"] = globalAnnotation + } + if !fvRsSecInherited.TDn.IsUnknown() { + childMap["attributes"]["tDn"] = fvRsSecInherited.TDn.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"fvRsSecInherited": childMap}) + fvRsSecInheritedIdentifier := FvRsSecInheritedIdentifier{} + fvRsSecInheritedIdentifier.TDn = fvRsSecInherited.TDn + fvRsSecInheritedIdentifiers = append(fvRsSecInheritedIdentifiers, fvRsSecInheritedIdentifier) + } + for _, fvRsSecInherited := range fvRsSecInheritedState { + delete := true + for _, fvRsSecInheritedIdentifier := range fvRsSecInheritedIdentifiers { + if fvRsSecInheritedIdentifier.TDn == fvRsSecInherited.TDn { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["tDn"] = fvRsSecInherited.TDn.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"fvRsSecInherited": childMap}) + } + } + } else { + data.FvRsSecInherited = types.SetNull(data.FvRsSecInherited.ElementType(ctx)) + } + + return childPayloads +} +func getFvESgTagAnnotationChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvESgResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvESgResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagAnnotation.IsUnknown() { + tagAnnotationIdentifiers := []TagAnnotationIdentifier{} + for _, tagAnnotation := range tagAnnotationPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagAnnotation.Key.IsUnknown() { + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + } + if !tagAnnotation.Value.IsUnknown() { + childMap["attributes"]["value"] = tagAnnotation.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + tagAnnotationIdentifier := TagAnnotationIdentifier{} + tagAnnotationIdentifier.Key = tagAnnotation.Key + tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier) + } + for _, tagAnnotation := range tagAnnotationState { + delete := true + for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers { + if tagAnnotationIdentifier.Key == tagAnnotation.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + } + } + } else { + data.TagAnnotation = types.SetNull(data.TagAnnotation.ElementType(ctx)) + } + + return childPayloads +} +func getFvESgTagTagChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvESgResourceModel, tagTagPlan, tagTagState []TagTagFvESgResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagTag.IsUnknown() { + tagTagIdentifiers := []TagTagIdentifier{} + for _, tagTag := range tagTagPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagTag.Key.IsUnknown() { + childMap["attributes"]["key"] = tagTag.Key.ValueString() + } + if !tagTag.Value.IsUnknown() { + childMap["attributes"]["value"] = tagTag.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + tagTagIdentifier := TagTagIdentifier{} + tagTagIdentifier.Key = tagTag.Key + tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier) + } + for _, tagTag := range tagTagState { + delete := true + for _, tagTagIdentifier := range tagTagIdentifiers { + if tagTagIdentifier.Key == tagTag.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagTag.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + } + } + } else { + data.TagTag = types.SetNull(data.TagTag.ElementType(ctx)) + } + + return childPayloads +} + +func getFvESgCreateJsonPayload(ctx context.Context, diags *diag.Diagnostics, data *FvESgResourceModel, fvRsConsPlan, fvRsConsState []FvRsConsFvESgResourceModel, fvRsConsIfPlan, fvRsConsIfState []FvRsConsIfFvESgResourceModel, fvRsIntraEpgPlan, fvRsIntraEpgState []FvRsIntraEpgFvESgResourceModel, fvRsProvPlan, fvRsProvState []FvRsProvFvESgResourceModel, fvRsScopePlan, fvRsScopeState []FvRsScopeFvESgResourceModel, fvRsSecInheritedPlan, fvRsSecInheritedState []FvRsSecInheritedFvESgResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvESgResourceModel, tagTagPlan, tagTagState []TagTagFvESgResourceModel) *container.Container { + payloadMap := map[string]interface{}{} + payloadMap["attributes"] = map[string]string{} + childPayloads := []map[string]interface{}{} + + FvRsConschildPayloads := getFvESgFvRsConsChildPayloads(ctx, diags, data, fvRsConsPlan, fvRsConsState) + if FvRsConschildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, FvRsConschildPayloads...) + + FvRsConsIfchildPayloads := getFvESgFvRsConsIfChildPayloads(ctx, diags, data, fvRsConsIfPlan, fvRsConsIfState) + if FvRsConsIfchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, FvRsConsIfchildPayloads...) + + FvRsIntraEpgchildPayloads := getFvESgFvRsIntraEpgChildPayloads(ctx, diags, data, fvRsIntraEpgPlan, fvRsIntraEpgState) + if FvRsIntraEpgchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, FvRsIntraEpgchildPayloads...) + + FvRsProvchildPayloads := getFvESgFvRsProvChildPayloads(ctx, diags, data, fvRsProvPlan, fvRsProvState) + if FvRsProvchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, FvRsProvchildPayloads...) + + FvRsScopechildPayloads := getFvESgFvRsScopeChildPayloads(ctx, diags, data, fvRsScopePlan, fvRsScopeState) + if FvRsScopechildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, FvRsScopechildPayloads...) + + FvRsSecInheritedchildPayloads := getFvESgFvRsSecInheritedChildPayloads(ctx, diags, data, fvRsSecInheritedPlan, fvRsSecInheritedState) + if FvRsSecInheritedchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, FvRsSecInheritedchildPayloads...) + + TagAnnotationchildPayloads := getFvESgTagAnnotationChildPayloads(ctx, diags, data, tagAnnotationPlan, tagAnnotationState) + if TagAnnotationchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagAnnotationchildPayloads...) + + TagTagchildPayloads := getFvESgTagTagChildPayloads(ctx, diags, data, tagTagPlan, tagTagState) + if TagTagchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagTagchildPayloads...) + + payloadMap["children"] = childPayloads + if !data.Annotation.IsNull() && !data.Annotation.IsUnknown() { + payloadMap["attributes"].(map[string]string)["annotation"] = data.Annotation.ValueString() + } + if !data.Descr.IsNull() && !data.Descr.IsUnknown() { + payloadMap["attributes"].(map[string]string)["descr"] = data.Descr.ValueString() + } + if !data.ExceptionTag.IsNull() && !data.ExceptionTag.IsUnknown() { + payloadMap["attributes"].(map[string]string)["exceptionTag"] = data.ExceptionTag.ValueString() + } + if !data.MatchT.IsNull() && !data.MatchT.IsUnknown() { + payloadMap["attributes"].(map[string]string)["matchT"] = data.MatchT.ValueString() + } + if !data.Name.IsNull() && !data.Name.IsUnknown() { + payloadMap["attributes"].(map[string]string)["name"] = data.Name.ValueString() + } + if !data.NameAlias.IsNull() && !data.NameAlias.IsUnknown() { + payloadMap["attributes"].(map[string]string)["nameAlias"] = data.NameAlias.ValueString() + } + if !data.PcEnfPref.IsNull() && !data.PcEnfPref.IsUnknown() { + payloadMap["attributes"].(map[string]string)["pcEnfPref"] = data.PcEnfPref.ValueString() + } + if !data.PrefGrMemb.IsNull() && !data.PrefGrMemb.IsUnknown() { + payloadMap["attributes"].(map[string]string)["prefGrMemb"] = data.PrefGrMemb.ValueString() + } + if !data.Shutdown.IsNull() && !data.Shutdown.IsUnknown() { + payloadMap["attributes"].(map[string]string)["shutdown"] = data.Shutdown.ValueString() + } + + payload, err := json.Marshal(map[string]interface{}{"fvESg": payloadMap}) + if err != nil { + diags.AddError( + "Marshalling of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + + jsonPayload, err := container.ParseJSON(payload) + + if err != nil { + diags.AddError( + "Construction of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + return jsonPayload +} diff --git a/internal/provider/resource_aci_endpoint_security_group_test.go b/internal/provider/resource_aci_endpoint_security_group_test.go new file mode 100644 index 000000000..9babdfb73 --- /dev/null +++ b/internal/provider/resource_aci_endpoint_security_group_test.go @@ -0,0 +1,520 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccResourceFvESgWithFvAp(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvESgMinDependencyWithFvAp, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "name", "test_name"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "admin_state", "no"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "description", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "exception_tag", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "intra_esg_isolation", "unenforced"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "name_alias", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "preferred_group_member", "exclude"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvESgAllDependencyWithFvAp, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "name", "test_name"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "admin_state", "no"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotation", "annotation"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "description", "description"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "exception_tag", "exception_tag"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "intra_esg_isolation", "enforced"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "match_criteria", "All"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "name_alias", "name_alias"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "preferred_group_member", "exclude"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvESgMinDependencyWithFvAp, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "name", "test_name"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvESgResetDependencyWithFvAp, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "name", "test_name"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "admin_state", "no"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "description", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "exception_tag", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "intra_esg_isolation", "unenforced"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "name_alias", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "preferred_group_member", "exclude"), + ), + }, + // Import testing + { + ResourceName: "aci_endpoint_security_group.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "name", "test_name"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "admin_state", "no"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "description", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "exception_tag", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "intra_esg_isolation", "unenforced"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "name_alias", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "preferred_group_member", "exclude"), + ), + }, + // Update with children + { + Config: testConfigFvESgChildrenDependencyWithFvAp, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "name", "test_name"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "admin_state", "no"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "description", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "exception_tag", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "intra_esg_isolation", "unenforced"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "name_alias", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "preferred_group_member", "exclude"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.contract_interface_name", "contract_interface_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.priority", "level1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.contract_interface_name", "contract_interface_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.contract_name", "contract_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.priority", "level1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.1.contract_name", "contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.1.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.0.target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.1.target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.contract_name", "contract_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.1.contract_name", "contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.contract_name", "contract_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.match_criteria", "All"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.priority", "level1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.1.contract_name", "contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.1.match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.1.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.0.vrf_name", "vrf_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_endpoint_security_group.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "name", "test_name"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "admin_state", "no"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "description", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "exception_tag", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "intra_esg_isolation", "unenforced"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "name_alias", ""), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "preferred_group_member", "exclude"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.contract_interface_name", "contract_interface_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.priority", "level1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.contract_interface_name", "contract_interface_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.contract_name", "contract_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.priority", "level1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.1.contract_name", "contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.1.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.0.target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.1.target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.contract_name", "contract_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.1.contract_name", "contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.contract_name", "contract_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.match_criteria", "All"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.priority", "level1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.1.contract_name", "contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.1.match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.1.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.0.vrf_name", "vrf_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvESgChildrenRemoveFromConfigDependencyWithFvAp, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.contract_interface_name", "contract_interface_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.priority", "level1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.contract_interface_name", "contract_interface_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.#", "2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.contract_name", "contract_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.priority", "level1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.1.contract_name", "contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.1.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.#", "2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.0.target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.1.target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.#", "2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.contract_name", "contract_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.1.contract_name", "contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.#", "2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.contract_name", "contract_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.match_criteria", "All"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.priority", "level1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.1.contract_name", "contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.1.match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.1.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.#", "2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.0.vrf_name", "vrf_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.#", "1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvESgChildrenRemoveOneDependencyWithFvAp, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.contract_interface_name", "contract_interface_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.#", "1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.contract_name", "contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.#", "1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.0.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.0.target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.#", "1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.contract_name", "contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.#", "1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.contract_name", "contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.0.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.#", "1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.0.vrf_name", "vrf_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.#", "1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvESgChildrenRemoveAllDependencyWithFvAp, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.#", "0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.#", "0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.#", "0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.#", "0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.#", "0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.0.vrf_name", "vrf_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.#", "1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "tags.#", "0"), + ), + }, + }, + }) +} + +const testChildDependencyConfigFvESg = ` +resource "aci_endpoint_security_group" "test_0" { + application_profile_dn = aci_application_profile.test.id + name = "esg_0" +} +resource "aci_endpoint_security_group" "test_1" { + application_profile_dn = aci_application_profile.test.id + name = "esg_1" +} +` + +const testConfigFvESgMinDependencyWithFvAp = testConfigFvApMinDependencyWithFvTenant + ` +resource "aci_endpoint_security_group" "test" { + parent_dn = aci_application_profile.test.id + name = "test_name" +} +` + +const testConfigFvESgAllDependencyWithFvAp = testConfigFvApMinDependencyWithFvTenant + ` +resource "aci_endpoint_security_group" "test" { + parent_dn = aci_application_profile.test.id + name = "test_name" + admin_state = "no" + annotation = "annotation" + description = "description" + exception_tag = "exception_tag" + intra_esg_isolation = "enforced" + match_criteria = "All" + name_alias = "name_alias" + preferred_group_member = "exclude" +} +` + +const testConfigFvESgResetDependencyWithFvAp = testConfigFvApMinDependencyWithFvTenant + ` +resource "aci_endpoint_security_group" "test" { + parent_dn = aci_application_profile.test.id + name = "test_name" + admin_state = "no" + annotation = "orchestrator:terraform" + description = "" + exception_tag = "" + intra_esg_isolation = "unenforced" + match_criteria = "AtleastOne" + name_alias = "" + preferred_group_member = "exclude" +} +` +const testConfigFvESgChildrenDependencyWithFvAp = testChildDependencyConfigFvESg + testConfigFvApMinDependencyWithFvTenant + ` +resource "aci_endpoint_security_group" "test" { + parent_dn = aci_application_profile.test.id + name = "test_name" + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + relation_to_consumed_contract_interfaces = [ + { + annotation = "annotation_1" + contract_interface_name = "contract_interface_name_0" + priority = "level1" + }, + { + annotation = "annotation_2" + contract_interface_name = "contract_interface_name_1" + priority = "level2" + }, + ] + relation_to_consumed_contracts = [ + { + annotation = "annotation_1" + contract_name = "contract_name_0" + priority = "level1" + }, + { + annotation = "annotation_2" + contract_name = "contract_name_1" + priority = "level2" + }, + ] + relation_to_contract_masters = [ + { + annotation = "annotation_1" + target_dn = aci_endpoint_security_group.test_0.id + }, + { + annotation = "annotation_2" + target_dn = aci_endpoint_security_group.test_1.id + }, + ] + relation_to_intra_epg_contracts = [ + { + annotation = "annotation_1" + contract_name = "contract_name_0" + }, + { + annotation = "annotation_2" + contract_name = "contract_name_1" + }, + ] + relation_to_provided_contracts = [ + { + annotation = "annotation_1" + contract_name = "contract_name_0" + match_criteria = "All" + priority = "level1" + }, + { + annotation = "annotation_2" + contract_name = "contract_name_1" + match_criteria = "AtleastOne" + priority = "level2" + }, + ] + relation_to_vrf = [ + { + annotation = "annotation_1" + vrf_name = "vrf_name_1" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvESgChildrenRemoveFromConfigDependencyWithFvAp = testChildDependencyConfigFvESg + testConfigFvApMinDependencyWithFvTenant + ` +resource "aci_endpoint_security_group" "test" { + parent_dn = aci_application_profile.test.id + name = "test_name" +} +` + +const testConfigFvESgChildrenRemoveOneDependencyWithFvAp = testChildDependencyConfigFvESg + testConfigFvApMinDependencyWithFvTenant + ` +resource "aci_endpoint_security_group" "test" { + parent_dn = aci_application_profile.test.id + name = "test_name" + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + relation_to_consumed_contract_interfaces = [ + { + annotation = "annotation_2" + contract_interface_name = "contract_interface_name_1" + priority = "level2" + }, + ] + relation_to_consumed_contracts = [ + { + annotation = "annotation_2" + contract_name = "contract_name_1" + priority = "level2" + }, + ] + relation_to_contract_masters = [ + { + annotation = "annotation_2" + target_dn = aci_endpoint_security_group.test_1.id + }, + ] + relation_to_intra_epg_contracts = [ + { + annotation = "annotation_2" + contract_name = "contract_name_1" + }, + ] + relation_to_provided_contracts = [ + { + annotation = "annotation_2" + contract_name = "contract_name_1" + match_criteria = "AtleastOne" + priority = "level2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvESgChildrenRemoveAllDependencyWithFvAp = testChildDependencyConfigFvESg + testConfigFvApMinDependencyWithFvTenant + ` +resource "aci_endpoint_security_group" "test" { + parent_dn = aci_application_profile.test.id + name = "test_name" + annotations = [] + relation_to_consumed_contract_interfaces = [] + relation_to_consumed_contracts = [] + relation_to_contract_masters = [] + relation_to_intra_epg_contracts = [] + relation_to_provided_contracts = [] + tags = [] +} +` diff --git a/internal/provider/resource_aci_out_of_band_contract.go b/internal/provider/resource_aci_out_of_band_contract.go index c0bb85548..0656ca1dc 100644 --- a/internal/provider/resource_aci_out_of_band_contract.go +++ b/internal/provider/resource_aci_out_of_band_contract.go @@ -46,7 +46,6 @@ type VzOOBBrCPResourceModel struct { Id types.String `tfsdk:"id"` Annotation types.String `tfsdk:"annotation"` Descr types.String `tfsdk:"description"` - Intent types.String `tfsdk:"intent"` Name types.String `tfsdk:"name"` NameAlias types.String `tfsdk:"name_alias"` OwnerKey types.String `tfsdk:"owner_key"` @@ -111,17 +110,6 @@ func (r *VzOOBBrCPResource) Schema(ctx context.Context, req resource.SchemaReque }, MarkdownDescription: `The description of the Out Of Band Contract object.`, }, - "intent": schema.StringAttribute{ - Optional: true, - Computed: true, - PlanModifiers: []planmodifier.String{ - stringplanmodifier.UseStateForUnknown(), - }, - Validators: []validator.String{ - stringvalidator.OneOf("estimate_add", "estimate_delete", "install"), - }, - MarkdownDescription: `The Install Rules or Estimate Number of Rules.`, - }, "name": schema.StringAttribute{ Required: true, PlanModifiers: []planmodifier.String{ @@ -431,9 +419,6 @@ func getAndSetVzOOBBrCPAttributes(ctx context.Context, diags *diag.Diagnostics, if attributeName == "descr" { data.Descr = basetypes.NewStringValue(attributeValue.(string)) } - if attributeName == "intent" { - data.Intent = basetypes.NewStringValue(attributeValue.(string)) - } if attributeName == "name" { data.Name = basetypes.NewStringValue(attributeValue.(string)) } @@ -624,9 +609,6 @@ func getVzOOBBrCPCreateJsonPayload(ctx context.Context, diags *diag.Diagnostics, if !data.Descr.IsNull() && !data.Descr.IsUnknown() { payloadMap["attributes"].(map[string]string)["descr"] = data.Descr.ValueString() } - if !data.Intent.IsNull() && !data.Intent.IsUnknown() { - payloadMap["attributes"].(map[string]string)["intent"] = data.Intent.ValueString() - } if !data.Name.IsNull() && !data.Name.IsUnknown() { payloadMap["attributes"].(map[string]string)["name"] = data.Name.ValueString() } diff --git a/internal/provider/resource_aci_out_of_band_contract_test.go b/internal/provider/resource_aci_out_of_band_contract_test.go index baabe7f5c..3d33b9b79 100644 --- a/internal/provider/resource_aci_out_of_band_contract_test.go +++ b/internal/provider/resource_aci_out_of_band_contract_test.go @@ -23,7 +23,6 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name", "test_name"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), - resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -39,7 +38,6 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name", "test_name"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "annotation"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", "description"), - resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "estimate_add"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", "name_alias"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", "owner_key"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", "owner_tag"), @@ -55,7 +53,6 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name", "test_name"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", "description"), - resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "estimate_add"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", "name_alias"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", "owner_key"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", "owner_tag"), @@ -71,7 +68,6 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name", "test_name"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), - resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -89,7 +85,6 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name", "test_name"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), - resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -104,7 +99,6 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), - resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -129,7 +123,6 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), - resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -154,7 +147,6 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), - resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -175,7 +167,6 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), - resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -201,7 +192,6 @@ resource "aci_out_of_band_contract" "test" { name = "test_name" annotation = "annotation" description = "description" - intent = "estimate_add" name_alias = "name_alias" owner_key = "owner_key" owner_tag = "owner_tag" @@ -216,7 +206,6 @@ resource "aci_out_of_band_contract" "test" { name = "test_name" annotation = "orchestrator:terraform" description = "" - intent = "install" name_alias = "" owner_key = "" owner_tag = "" diff --git a/internal/provider/resource_aci_relation_to_consumed_contract.go b/internal/provider/resource_aci_relation_to_consumed_contract.go new file mode 100644 index 000000000..a6e09ce08 --- /dev/null +++ b/internal/provider/resource_aci_relation_to_consumed_contract.go @@ -0,0 +1,583 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "encoding/json" + "fmt" + "reflect" + "strings" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + "github.com/ciscoecosystem/aci-go-client/v2/container" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-framework/types/basetypes" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ resource.Resource = &FvRsConsResource{} +var _ resource.ResourceWithImportState = &FvRsConsResource{} + +func NewFvRsConsResource() resource.Resource { + return &FvRsConsResource{} +} + +// FvRsConsResource defines the resource implementation. +type FvRsConsResource struct { + client *client.Client +} + +// FvRsConsResourceModel describes the resource data model. +type FvRsConsResourceModel struct { + Id types.String `tfsdk:"id"` + ParentDn types.String `tfsdk:"parent_dn"` + Annotation types.String `tfsdk:"annotation"` + Prio types.String `tfsdk:"priority"` + TnVzBrCPName types.String `tfsdk:"contract_name"` + TagAnnotation types.Set `tfsdk:"annotations"` + TagTag types.Set `tfsdk:"tags"` +} + +// TagAnnotationFvRsConsResourceModel describes the resource data model for the children without relation ships. +type TagAnnotationFvRsConsResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +// TagTagFvRsConsResourceModel describes the resource data model for the children without relation ships. +type TagTagFvRsConsResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +type FvRsConsIdentifier struct { + TnVzBrCPName types.String +} + +func (r *FvRsConsResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of resource: aci_relation_to_consumed_contract") + resp.TypeName = req.ProviderTypeName + "_relation_to_consumed_contract" + tflog.Debug(ctx, "End metadata of resource: aci_relation_to_consumed_contract") +} + +func (r *FvRsConsResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of resource: aci_relation_to_consumed_contract") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The relation_to_consumed_contract resource for the 'fvRsCons' class", + + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Relation To Consumed Contract object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "parent_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + }, + "annotation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Default: stringdefault.StaticString(globalAnnotation), + MarkdownDescription: `The annotation of the Relation To Consumed Contract object.`, + }, + "priority": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), + }, + MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + }, + "contract_name": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + MarkdownDescription: `The consumer contract name.`, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of resource: aci_relation_to_consumed_contract") +} + +func (r *FvRsConsResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of resource: aci_relation_to_consumed_contract") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Resource Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + r.client = client + tflog.Debug(ctx, "End configure of resource: aci_relation_to_consumed_contract") +} + +func (r *FvRsConsResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + tflog.Debug(ctx, "Start create of resource: aci_relation_to_consumed_contract") + // On create retrieve information on current state prior to making any changes in order to determine child delete operations + var stateData *FvRsConsResourceModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &stateData)...) + setFvRsConsId(ctx, stateData) + getAndSetFvRsConsAttributes(ctx, &resp.Diagnostics, r.client, stateData) + + var data *FvRsConsResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvRsConsId(ctx, data) + + tflog.Debug(ctx, fmt.Sprintf("Create of resource aci_relation_to_consumed_contract with id '%s'", data.Id.ValueString())) + + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsConsResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvRsConsResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvRsConsCreateJsonPayload(ctx, &resp.Diagnostics, data, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvRsConsAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End create of resource aci_relation_to_consumed_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsConsResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + tflog.Debug(ctx, "Start read of resource: aci_relation_to_consumed_contract") + var data *FvRsConsResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Read of resource aci_relation_to_consumed_contract with id '%s'", data.Id.ValueString())) + + getAndSetFvRsConsAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + if data.Id.IsNull() { + var emptyData *FvRsConsResourceModel + resp.Diagnostics.Append(resp.State.Set(ctx, &emptyData)...) + } else { + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + } + + tflog.Debug(ctx, fmt.Sprintf("End read of resource aci_relation_to_consumed_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsConsResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + tflog.Debug(ctx, "Start update of resource: aci_relation_to_consumed_contract") + var data *FvRsConsResourceModel + var stateData *FvRsConsResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + resp.Diagnostics.Append(req.State.Get(ctx, &stateData)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Update of resource aci_relation_to_consumed_contract with id '%s'", data.Id.ValueString())) + + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsConsResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvRsConsResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvRsConsCreateJsonPayload(ctx, &resp.Diagnostics, data, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvRsConsAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End update of resource aci_relation_to_consumed_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsConsResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + tflog.Debug(ctx, "Start delete of resource: aci_relation_to_consumed_contract") + var data *FvRsConsResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Delete of resource aci_relation_to_consumed_contract with id '%s'", data.Id.ValueString())) + jsonPayload := GetDeleteJsonPayload(ctx, &resp.Diagnostics, "fvRsCons", data.Id.ValueString()) + if resp.Diagnostics.HasError() { + return + } + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + tflog.Debug(ctx, fmt.Sprintf("End delete of resource aci_relation_to_consumed_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsConsResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + tflog.Debug(ctx, "Start import state of resource: aci_relation_to_consumed_contract") + resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) + + var stateData *FvRsConsResourceModel + resp.Diagnostics.Append(resp.State.Get(ctx, &stateData)...) + tflog.Debug(ctx, fmt.Sprintf("Import state of resource aci_relation_to_consumed_contract with id '%s'", stateData.Id.ValueString())) + + tflog.Debug(ctx, "End import of state resource: aci_relation_to_consumed_contract") +} + +func getAndSetFvRsConsAttributes(ctx context.Context, diags *diag.Diagnostics, client *client.Client, data *FvRsConsResourceModel) { + requestData := DoRestRequest(ctx, diags, client, fmt.Sprintf("api/mo/%s.json?rsp-subtree=children&rsp-subtree-class=%s", data.Id.ValueString(), "fvRsCons,tagAnnotation,tagTag"), "GET", nil) + + if diags.HasError() { + return + } + if requestData.Search("imdata").Search("fvRsCons").Data() != nil { + classReadInfo := requestData.Search("imdata").Search("fvRsCons").Data().([]interface{}) + if len(classReadInfo) == 1 { + attributes := classReadInfo[0].(map[string]interface{})["attributes"].(map[string]interface{}) + for attributeName, attributeValue := range attributes { + if attributeName == "dn" { + data.Id = basetypes.NewStringValue(attributeValue.(string)) + setFvRsConsParentDn(ctx, attributeValue.(string), data) + } + if attributeName == "annotation" { + data.Annotation = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "prio" { + data.Prio = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "tnVzBrCPName" { + data.TnVzBrCPName = basetypes.NewStringValue(attributeValue.(string)) + } + } + TagAnnotationFvRsConsList := make([]TagAnnotationFvRsConsResourceModel, 0) + TagTagFvRsConsList := make([]TagTagFvRsConsResourceModel, 0) + _, ok := classReadInfo[0].(map[string]interface{})["children"] + if ok { + children := classReadInfo[0].(map[string]interface{})["children"].([]interface{}) + for _, child := range children { + for childClassName, childClassDetails := range child.(map[string]interface{}) { + childAttributes := childClassDetails.(map[string]interface{})["attributes"].(map[string]interface{}) + if childClassName == "tagAnnotation" { + TagAnnotationFvRsCons := TagAnnotationFvRsConsResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagAnnotationFvRsCons.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagAnnotationFvRsCons.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagAnnotationFvRsConsList = append(TagAnnotationFvRsConsList, TagAnnotationFvRsCons) + } + if childClassName == "tagTag" { + TagTagFvRsCons := TagTagFvRsConsResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagTagFvRsCons.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagTagFvRsCons.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagTagFvRsConsList = append(TagTagFvRsConsList, TagTagFvRsCons) + } + } + } + } + tagAnnotationSet, _ := types.SetValueFrom(ctx, data.TagAnnotation.ElementType(ctx), TagAnnotationFvRsConsList) + data.TagAnnotation = tagAnnotationSet + tagTagSet, _ := types.SetValueFrom(ctx, data.TagTag.ElementType(ctx), TagTagFvRsConsList) + data.TagTag = tagTagSet + } else { + diags.AddError( + "too many results in response", + fmt.Sprintf("%v matches returned for class 'fvRsCons'. Please report this issue to the provider developers.", len(classReadInfo)), + ) + } + } else { + data.Id = basetypes.NewStringNull() + } +} + +func getFvRsConsRn(ctx context.Context, data *FvRsConsResourceModel) string { + rn := "rscons-{tnVzBrCPName}" + for _, identifier := range []string{"tnVzBrCPName"} { + fieldName := fmt.Sprintf("%s%s", strings.ToUpper(identifier[:1]), identifier[1:]) + fieldValue := reflect.ValueOf(data).Elem().FieldByName(fieldName).Interface().(basetypes.StringValue).ValueString() + rn = strings.ReplaceAll(rn, fmt.Sprintf("{%s}", identifier), fieldValue) + } + return rn +} + +func setFvRsConsParentDn(ctx context.Context, dn string, data *FvRsConsResourceModel) { + bracketIndex := 0 + rnIndex := 0 + for i := len(dn) - 1; i >= 0; i-- { + if string(dn[i]) == "]" { + bracketIndex = bracketIndex + 1 + } else if string(dn[i]) == "[" { + bracketIndex = bracketIndex - 1 + } else if string(dn[i]) == "/" && bracketIndex == 0 { + rnIndex = i + break + } + } + data.ParentDn = basetypes.NewStringValue(dn[:rnIndex]) +} + +func setFvRsConsId(ctx context.Context, data *FvRsConsResourceModel) { + rn := getFvRsConsRn(ctx, data) + data.Id = types.StringValue(fmt.Sprintf("%s/%s", data.ParentDn.ValueString(), rn)) +} + +func getFvRsConsTagAnnotationChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvRsConsResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsConsResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagAnnotation.IsUnknown() { + tagAnnotationIdentifiers := []TagAnnotationIdentifier{} + for _, tagAnnotation := range tagAnnotationPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagAnnotation.Key.IsUnknown() { + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + } + if !tagAnnotation.Value.IsUnknown() { + childMap["attributes"]["value"] = tagAnnotation.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + tagAnnotationIdentifier := TagAnnotationIdentifier{} + tagAnnotationIdentifier.Key = tagAnnotation.Key + tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier) + } + for _, tagAnnotation := range tagAnnotationState { + delete := true + for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers { + if tagAnnotationIdentifier.Key == tagAnnotation.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + } + } + } else { + data.TagAnnotation = types.SetNull(data.TagAnnotation.ElementType(ctx)) + } + + return childPayloads +} +func getFvRsConsTagTagChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvRsConsResourceModel, tagTagPlan, tagTagState []TagTagFvRsConsResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagTag.IsUnknown() { + tagTagIdentifiers := []TagTagIdentifier{} + for _, tagTag := range tagTagPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagTag.Key.IsUnknown() { + childMap["attributes"]["key"] = tagTag.Key.ValueString() + } + if !tagTag.Value.IsUnknown() { + childMap["attributes"]["value"] = tagTag.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + tagTagIdentifier := TagTagIdentifier{} + tagTagIdentifier.Key = tagTag.Key + tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier) + } + for _, tagTag := range tagTagState { + delete := true + for _, tagTagIdentifier := range tagTagIdentifiers { + if tagTagIdentifier.Key == tagTag.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagTag.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + } + } + } else { + data.TagTag = types.SetNull(data.TagTag.ElementType(ctx)) + } + + return childPayloads +} + +func getFvRsConsCreateJsonPayload(ctx context.Context, diags *diag.Diagnostics, data *FvRsConsResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsConsResourceModel, tagTagPlan, tagTagState []TagTagFvRsConsResourceModel) *container.Container { + payloadMap := map[string]interface{}{} + payloadMap["attributes"] = map[string]string{} + childPayloads := []map[string]interface{}{} + + TagAnnotationchildPayloads := getFvRsConsTagAnnotationChildPayloads(ctx, diags, data, tagAnnotationPlan, tagAnnotationState) + if TagAnnotationchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagAnnotationchildPayloads...) + + TagTagchildPayloads := getFvRsConsTagTagChildPayloads(ctx, diags, data, tagTagPlan, tagTagState) + if TagTagchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagTagchildPayloads...) + + payloadMap["children"] = childPayloads + if !data.Annotation.IsNull() && !data.Annotation.IsUnknown() { + payloadMap["attributes"].(map[string]string)["annotation"] = data.Annotation.ValueString() + } + if !data.Prio.IsNull() && !data.Prio.IsUnknown() { + payloadMap["attributes"].(map[string]string)["prio"] = data.Prio.ValueString() + } + if !data.TnVzBrCPName.IsNull() && !data.TnVzBrCPName.IsUnknown() { + payloadMap["attributes"].(map[string]string)["tnVzBrCPName"] = data.TnVzBrCPName.ValueString() + } + + payload, err := json.Marshal(map[string]interface{}{"fvRsCons": payloadMap}) + if err != nil { + diags.AddError( + "Marshalling of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + + jsonPayload, err := container.ParseJSON(payload) + + if err != nil { + diags.AddError( + "Construction of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + return jsonPayload +} diff --git a/internal/provider/resource_aci_relation_to_consumed_contract_interface.go b/internal/provider/resource_aci_relation_to_consumed_contract_interface.go new file mode 100644 index 000000000..59a4c0019 --- /dev/null +++ b/internal/provider/resource_aci_relation_to_consumed_contract_interface.go @@ -0,0 +1,583 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "encoding/json" + "fmt" + "reflect" + "strings" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + "github.com/ciscoecosystem/aci-go-client/v2/container" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-framework/types/basetypes" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ resource.Resource = &FvRsConsIfResource{} +var _ resource.ResourceWithImportState = &FvRsConsIfResource{} + +func NewFvRsConsIfResource() resource.Resource { + return &FvRsConsIfResource{} +} + +// FvRsConsIfResource defines the resource implementation. +type FvRsConsIfResource struct { + client *client.Client +} + +// FvRsConsIfResourceModel describes the resource data model. +type FvRsConsIfResourceModel struct { + Id types.String `tfsdk:"id"` + ParentDn types.String `tfsdk:"parent_dn"` + Annotation types.String `tfsdk:"annotation"` + Prio types.String `tfsdk:"priority"` + TnVzCPIfName types.String `tfsdk:"contract_interface_name"` + TagAnnotation types.Set `tfsdk:"annotations"` + TagTag types.Set `tfsdk:"tags"` +} + +// TagAnnotationFvRsConsIfResourceModel describes the resource data model for the children without relation ships. +type TagAnnotationFvRsConsIfResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +// TagTagFvRsConsIfResourceModel describes the resource data model for the children without relation ships. +type TagTagFvRsConsIfResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +type FvRsConsIfIdentifier struct { + TnVzCPIfName types.String +} + +func (r *FvRsConsIfResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of resource: aci_relation_to_consumed_contract_interface") + resp.TypeName = req.ProviderTypeName + "_relation_to_consumed_contract_interface" + tflog.Debug(ctx, "End metadata of resource: aci_relation_to_consumed_contract_interface") +} + +func (r *FvRsConsIfResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of resource: aci_relation_to_consumed_contract_interface") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The relation_to_consumed_contract_interface resource for the 'fvRsConsIf' class", + + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Relation To Consumed Contract Interface object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "parent_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + }, + "annotation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Default: stringdefault.StaticString(globalAnnotation), + MarkdownDescription: `The annotation of the Relation To Consumed Contract Interface object.`, + }, + "priority": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), + }, + MarkdownDescription: `The contract interface priority.`, + }, + "contract_interface_name": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + MarkdownDescription: `The contract interface name.`, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of resource: aci_relation_to_consumed_contract_interface") +} + +func (r *FvRsConsIfResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of resource: aci_relation_to_consumed_contract_interface") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Resource Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + r.client = client + tflog.Debug(ctx, "End configure of resource: aci_relation_to_consumed_contract_interface") +} + +func (r *FvRsConsIfResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + tflog.Debug(ctx, "Start create of resource: aci_relation_to_consumed_contract_interface") + // On create retrieve information on current state prior to making any changes in order to determine child delete operations + var stateData *FvRsConsIfResourceModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &stateData)...) + setFvRsConsIfId(ctx, stateData) + getAndSetFvRsConsIfAttributes(ctx, &resp.Diagnostics, r.client, stateData) + + var data *FvRsConsIfResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvRsConsIfId(ctx, data) + + tflog.Debug(ctx, fmt.Sprintf("Create of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsConsIfResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvRsConsIfResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvRsConsIfCreateJsonPayload(ctx, &resp.Diagnostics, data, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvRsConsIfAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End create of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsConsIfResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + tflog.Debug(ctx, "Start read of resource: aci_relation_to_consumed_contract_interface") + var data *FvRsConsIfResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Read of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + + getAndSetFvRsConsIfAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + if data.Id.IsNull() { + var emptyData *FvRsConsIfResourceModel + resp.Diagnostics.Append(resp.State.Set(ctx, &emptyData)...) + } else { + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + } + + tflog.Debug(ctx, fmt.Sprintf("End read of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsConsIfResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + tflog.Debug(ctx, "Start update of resource: aci_relation_to_consumed_contract_interface") + var data *FvRsConsIfResourceModel + var stateData *FvRsConsIfResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + resp.Diagnostics.Append(req.State.Get(ctx, &stateData)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Update of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsConsIfResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvRsConsIfResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvRsConsIfCreateJsonPayload(ctx, &resp.Diagnostics, data, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvRsConsIfAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End update of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsConsIfResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + tflog.Debug(ctx, "Start delete of resource: aci_relation_to_consumed_contract_interface") + var data *FvRsConsIfResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Delete of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + jsonPayload := GetDeleteJsonPayload(ctx, &resp.Diagnostics, "fvRsConsIf", data.Id.ValueString()) + if resp.Diagnostics.HasError() { + return + } + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + tflog.Debug(ctx, fmt.Sprintf("End delete of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsConsIfResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + tflog.Debug(ctx, "Start import state of resource: aci_relation_to_consumed_contract_interface") + resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) + + var stateData *FvRsConsIfResourceModel + resp.Diagnostics.Append(resp.State.Get(ctx, &stateData)...) + tflog.Debug(ctx, fmt.Sprintf("Import state of resource aci_relation_to_consumed_contract_interface with id '%s'", stateData.Id.ValueString())) + + tflog.Debug(ctx, "End import of state resource: aci_relation_to_consumed_contract_interface") +} + +func getAndSetFvRsConsIfAttributes(ctx context.Context, diags *diag.Diagnostics, client *client.Client, data *FvRsConsIfResourceModel) { + requestData := DoRestRequest(ctx, diags, client, fmt.Sprintf("api/mo/%s.json?rsp-subtree=children&rsp-subtree-class=%s", data.Id.ValueString(), "fvRsConsIf,tagAnnotation,tagTag"), "GET", nil) + + if diags.HasError() { + return + } + if requestData.Search("imdata").Search("fvRsConsIf").Data() != nil { + classReadInfo := requestData.Search("imdata").Search("fvRsConsIf").Data().([]interface{}) + if len(classReadInfo) == 1 { + attributes := classReadInfo[0].(map[string]interface{})["attributes"].(map[string]interface{}) + for attributeName, attributeValue := range attributes { + if attributeName == "dn" { + data.Id = basetypes.NewStringValue(attributeValue.(string)) + setFvRsConsIfParentDn(ctx, attributeValue.(string), data) + } + if attributeName == "annotation" { + data.Annotation = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "prio" { + data.Prio = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "tnVzCPIfName" { + data.TnVzCPIfName = basetypes.NewStringValue(attributeValue.(string)) + } + } + TagAnnotationFvRsConsIfList := make([]TagAnnotationFvRsConsIfResourceModel, 0) + TagTagFvRsConsIfList := make([]TagTagFvRsConsIfResourceModel, 0) + _, ok := classReadInfo[0].(map[string]interface{})["children"] + if ok { + children := classReadInfo[0].(map[string]interface{})["children"].([]interface{}) + for _, child := range children { + for childClassName, childClassDetails := range child.(map[string]interface{}) { + childAttributes := childClassDetails.(map[string]interface{})["attributes"].(map[string]interface{}) + if childClassName == "tagAnnotation" { + TagAnnotationFvRsConsIf := TagAnnotationFvRsConsIfResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagAnnotationFvRsConsIf.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagAnnotationFvRsConsIf.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagAnnotationFvRsConsIfList = append(TagAnnotationFvRsConsIfList, TagAnnotationFvRsConsIf) + } + if childClassName == "tagTag" { + TagTagFvRsConsIf := TagTagFvRsConsIfResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagTagFvRsConsIf.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagTagFvRsConsIf.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagTagFvRsConsIfList = append(TagTagFvRsConsIfList, TagTagFvRsConsIf) + } + } + } + } + tagAnnotationSet, _ := types.SetValueFrom(ctx, data.TagAnnotation.ElementType(ctx), TagAnnotationFvRsConsIfList) + data.TagAnnotation = tagAnnotationSet + tagTagSet, _ := types.SetValueFrom(ctx, data.TagTag.ElementType(ctx), TagTagFvRsConsIfList) + data.TagTag = tagTagSet + } else { + diags.AddError( + "too many results in response", + fmt.Sprintf("%v matches returned for class 'fvRsConsIf'. Please report this issue to the provider developers.", len(classReadInfo)), + ) + } + } else { + data.Id = basetypes.NewStringNull() + } +} + +func getFvRsConsIfRn(ctx context.Context, data *FvRsConsIfResourceModel) string { + rn := "rsconsIf-{tnVzCPIfName}" + for _, identifier := range []string{"tnVzCPIfName"} { + fieldName := fmt.Sprintf("%s%s", strings.ToUpper(identifier[:1]), identifier[1:]) + fieldValue := reflect.ValueOf(data).Elem().FieldByName(fieldName).Interface().(basetypes.StringValue).ValueString() + rn = strings.ReplaceAll(rn, fmt.Sprintf("{%s}", identifier), fieldValue) + } + return rn +} + +func setFvRsConsIfParentDn(ctx context.Context, dn string, data *FvRsConsIfResourceModel) { + bracketIndex := 0 + rnIndex := 0 + for i := len(dn) - 1; i >= 0; i-- { + if string(dn[i]) == "]" { + bracketIndex = bracketIndex + 1 + } else if string(dn[i]) == "[" { + bracketIndex = bracketIndex - 1 + } else if string(dn[i]) == "/" && bracketIndex == 0 { + rnIndex = i + break + } + } + data.ParentDn = basetypes.NewStringValue(dn[:rnIndex]) +} + +func setFvRsConsIfId(ctx context.Context, data *FvRsConsIfResourceModel) { + rn := getFvRsConsIfRn(ctx, data) + data.Id = types.StringValue(fmt.Sprintf("%s/%s", data.ParentDn.ValueString(), rn)) +} + +func getFvRsConsIfTagAnnotationChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvRsConsIfResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsConsIfResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagAnnotation.IsUnknown() { + tagAnnotationIdentifiers := []TagAnnotationIdentifier{} + for _, tagAnnotation := range tagAnnotationPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagAnnotation.Key.IsUnknown() { + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + } + if !tagAnnotation.Value.IsUnknown() { + childMap["attributes"]["value"] = tagAnnotation.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + tagAnnotationIdentifier := TagAnnotationIdentifier{} + tagAnnotationIdentifier.Key = tagAnnotation.Key + tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier) + } + for _, tagAnnotation := range tagAnnotationState { + delete := true + for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers { + if tagAnnotationIdentifier.Key == tagAnnotation.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + } + } + } else { + data.TagAnnotation = types.SetNull(data.TagAnnotation.ElementType(ctx)) + } + + return childPayloads +} +func getFvRsConsIfTagTagChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvRsConsIfResourceModel, tagTagPlan, tagTagState []TagTagFvRsConsIfResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagTag.IsUnknown() { + tagTagIdentifiers := []TagTagIdentifier{} + for _, tagTag := range tagTagPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagTag.Key.IsUnknown() { + childMap["attributes"]["key"] = tagTag.Key.ValueString() + } + if !tagTag.Value.IsUnknown() { + childMap["attributes"]["value"] = tagTag.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + tagTagIdentifier := TagTagIdentifier{} + tagTagIdentifier.Key = tagTag.Key + tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier) + } + for _, tagTag := range tagTagState { + delete := true + for _, tagTagIdentifier := range tagTagIdentifiers { + if tagTagIdentifier.Key == tagTag.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagTag.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + } + } + } else { + data.TagTag = types.SetNull(data.TagTag.ElementType(ctx)) + } + + return childPayloads +} + +func getFvRsConsIfCreateJsonPayload(ctx context.Context, diags *diag.Diagnostics, data *FvRsConsIfResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsConsIfResourceModel, tagTagPlan, tagTagState []TagTagFvRsConsIfResourceModel) *container.Container { + payloadMap := map[string]interface{}{} + payloadMap["attributes"] = map[string]string{} + childPayloads := []map[string]interface{}{} + + TagAnnotationchildPayloads := getFvRsConsIfTagAnnotationChildPayloads(ctx, diags, data, tagAnnotationPlan, tagAnnotationState) + if TagAnnotationchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagAnnotationchildPayloads...) + + TagTagchildPayloads := getFvRsConsIfTagTagChildPayloads(ctx, diags, data, tagTagPlan, tagTagState) + if TagTagchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagTagchildPayloads...) + + payloadMap["children"] = childPayloads + if !data.Annotation.IsNull() && !data.Annotation.IsUnknown() { + payloadMap["attributes"].(map[string]string)["annotation"] = data.Annotation.ValueString() + } + if !data.Prio.IsNull() && !data.Prio.IsUnknown() { + payloadMap["attributes"].(map[string]string)["prio"] = data.Prio.ValueString() + } + if !data.TnVzCPIfName.IsNull() && !data.TnVzCPIfName.IsUnknown() { + payloadMap["attributes"].(map[string]string)["tnVzCPIfName"] = data.TnVzCPIfName.ValueString() + } + + payload, err := json.Marshal(map[string]interface{}{"fvRsConsIf": payloadMap}) + if err != nil { + diags.AddError( + "Marshalling of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + + jsonPayload, err := container.ParseJSON(payload) + + if err != nil { + diags.AddError( + "Construction of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + return jsonPayload +} diff --git a/internal/provider/resource_aci_relation_to_consumed_contract_interface_test.go b/internal/provider/resource_aci_relation_to_consumed_contract_interface_test.go new file mode 100644 index 000000000..06370b33f --- /dev/null +++ b/internal/provider/resource_aci_relation_to_consumed_contract_interface_test.go @@ -0,0 +1,452 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccResourceFvRsConsIfWithFvAEPg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvRsConsIfMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvRsConsIfAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "annotation"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "level1"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvRsConsIfMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvRsConsIfResetDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + ), + }, + // Import testing + { + ResourceName: "aci_relation_to_consumed_contract_interface.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + ), + }, + // Update with children + { + Config: testConfigFvRsConsIfChildrenDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_relation_to_consumed_contract_interface.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvRsConsIfChildrenRemoveFromConfigDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvRsConsIfChildrenRemoveOneDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvRsConsIfChildrenRemoveAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.#", "0"), + ), + }, + }, + }) +} +func TestAccResourceFvRsConsIfWithFvESg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvRsConsIfMinDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvRsConsIfAllDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "annotation"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "level1"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvRsConsIfMinDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvRsConsIfResetDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + ), + }, + // Import testing + { + ResourceName: "aci_relation_to_consumed_contract_interface.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + ), + }, + // Update with children + { + Config: testConfigFvRsConsIfChildrenDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_relation_to_consumed_contract_interface.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvRsConsIfChildrenRemoveFromConfigDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvRsConsIfChildrenRemoveOneDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvRsConsIfChildrenRemoveAllDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.#", "0"), + ), + }, + }, + }) +} + +const testConfigFvRsConsIfMinDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_application_epg.test.id + contract_interface_name = "test_tn_vz_cp_if_name" +} +` + +const testConfigFvRsConsIfAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_application_epg.test.id + contract_interface_name = "test_tn_vz_cp_if_name" + annotation = "annotation" + priority = "level1" +} +` + +const testConfigFvRsConsIfResetDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_application_epg.test.id + contract_interface_name = "test_tn_vz_cp_if_name" + annotation = "orchestrator:terraform" + priority = "unspecified" +} +` +const testConfigFvRsConsIfChildrenDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_application_epg.test.id + contract_interface_name = "test_tn_vz_cp_if_name" + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsConsIfChildrenRemoveFromConfigDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_application_epg.test.id + contract_interface_name = "test_tn_vz_cp_if_name" +} +` + +const testConfigFvRsConsIfChildrenRemoveOneDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_application_epg.test.id + contract_interface_name = "test_tn_vz_cp_if_name" + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsConsIfChildrenRemoveAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_application_epg.test.id + contract_interface_name = "test_tn_vz_cp_if_name" + annotations = [] + tags = [] +} +` + +const testConfigFvRsConsIfMinDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_interface_name = "test_tn_vz_cp_if_name" +} +` + +const testConfigFvRsConsIfAllDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_interface_name = "test_tn_vz_cp_if_name" + annotation = "annotation" + priority = "level1" +} +` + +const testConfigFvRsConsIfResetDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_interface_name = "test_tn_vz_cp_if_name" + annotation = "orchestrator:terraform" + priority = "unspecified" +} +` +const testConfigFvRsConsIfChildrenDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_interface_name = "test_tn_vz_cp_if_name" + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsConsIfChildrenRemoveFromConfigDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_interface_name = "test_tn_vz_cp_if_name" +} +` + +const testConfigFvRsConsIfChildrenRemoveOneDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_interface_name = "test_tn_vz_cp_if_name" + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsConsIfChildrenRemoveAllDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract_interface" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_interface_name = "test_tn_vz_cp_if_name" + annotations = [] + tags = [] +} +` diff --git a/internal/provider/resource_aci_relation_to_consumed_contract_test.go b/internal/provider/resource_aci_relation_to_consumed_contract_test.go new file mode 100644 index 000000000..dbe03dfa9 --- /dev/null +++ b/internal/provider/resource_aci_relation_to_consumed_contract_test.go @@ -0,0 +1,452 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccResourceFvRsConsWithFvAEPg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvRsConsMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "priority", "unspecified"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvRsConsAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotation", "annotation"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "priority", "level1"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvRsConsMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvRsConsResetDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "priority", "unspecified"), + ), + }, + // Import testing + { + ResourceName: "aci_relation_to_consumed_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "priority", "unspecified"), + ), + }, + // Update with children + { + Config: testConfigFvRsConsChildrenDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_relation_to_consumed_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvRsConsChildrenRemoveFromConfigDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvRsConsChildrenRemoveOneDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvRsConsChildrenRemoveAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.#", "0"), + ), + }, + }, + }) +} +func TestAccResourceFvRsConsWithFvESg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvRsConsMinDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "priority", "unspecified"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvRsConsAllDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotation", "annotation"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "priority", "level1"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvRsConsMinDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvRsConsResetDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "priority", "unspecified"), + ), + }, + // Import testing + { + ResourceName: "aci_relation_to_consumed_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "priority", "unspecified"), + ), + }, + // Update with children + { + Config: testConfigFvRsConsChildrenDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_relation_to_consumed_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvRsConsChildrenRemoveFromConfigDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvRsConsChildrenRemoveOneDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvRsConsChildrenRemoveAllDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_relation_to_consumed_contract.test", "tags.#", "0"), + ), + }, + }, + }) +} + +const testConfigFvRsConsMinDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" +} +` + +const testConfigFvRsConsAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotation = "annotation" + priority = "level1" +} +` + +const testConfigFvRsConsResetDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotation = "orchestrator:terraform" + priority = "unspecified" +} +` +const testConfigFvRsConsChildrenDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsConsChildrenRemoveFromConfigDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" +} +` + +const testConfigFvRsConsChildrenRemoveOneDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsConsChildrenRemoveAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [] + tags = [] +} +` + +const testConfigFvRsConsMinDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" +} +` + +const testConfigFvRsConsAllDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotation = "annotation" + priority = "level1" +} +` + +const testConfigFvRsConsResetDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotation = "orchestrator:terraform" + priority = "unspecified" +} +` +const testConfigFvRsConsChildrenDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsConsChildrenRemoveFromConfigDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" +} +` + +const testConfigFvRsConsChildrenRemoveOneDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsConsChildrenRemoveAllDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_consumed_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [] + tags = [] +} +` diff --git a/internal/provider/resource_aci_relation_to_contract_master.go b/internal/provider/resource_aci_relation_to_contract_master.go new file mode 100644 index 000000000..811bd36fe --- /dev/null +++ b/internal/provider/resource_aci_relation_to_contract_master.go @@ -0,0 +1,563 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "encoding/json" + "fmt" + "reflect" + "strings" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + "github.com/ciscoecosystem/aci-go-client/v2/container" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-framework/types/basetypes" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ resource.Resource = &FvRsSecInheritedResource{} +var _ resource.ResourceWithImportState = &FvRsSecInheritedResource{} + +func NewFvRsSecInheritedResource() resource.Resource { + return &FvRsSecInheritedResource{} +} + +// FvRsSecInheritedResource defines the resource implementation. +type FvRsSecInheritedResource struct { + client *client.Client +} + +// FvRsSecInheritedResourceModel describes the resource data model. +type FvRsSecInheritedResourceModel struct { + Id types.String `tfsdk:"id"` + ParentDn types.String `tfsdk:"parent_dn"` + Annotation types.String `tfsdk:"annotation"` + TDn types.String `tfsdk:"target_dn"` + TagAnnotation types.Set `tfsdk:"annotations"` + TagTag types.Set `tfsdk:"tags"` +} + +// TagAnnotationFvRsSecInheritedResourceModel describes the resource data model for the children without relation ships. +type TagAnnotationFvRsSecInheritedResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +// TagTagFvRsSecInheritedResourceModel describes the resource data model for the children without relation ships. +type TagTagFvRsSecInheritedResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +type FvRsSecInheritedIdentifier struct { + TDn types.String +} + +func (r *FvRsSecInheritedResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of resource: aci_relation_to_contract_master") + resp.TypeName = req.ProviderTypeName + "_relation_to_contract_master" + tflog.Debug(ctx, "End metadata of resource: aci_relation_to_contract_master") +} + +func (r *FvRsSecInheritedResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of resource: aci_relation_to_contract_master") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The relation_to_contract_master resource for the 'fvRsSecInherited' class", + + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Relation To Contract Master object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "parent_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + }, + "annotation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Default: stringdefault.StaticString(globalAnnotation), + MarkdownDescription: `The annotation of the Relation To Contract Master object.`, + }, + "target_dn": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + MarkdownDescription: `The distinguished name of the target.`, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of resource: aci_relation_to_contract_master") +} + +func (r *FvRsSecInheritedResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of resource: aci_relation_to_contract_master") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Resource Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + r.client = client + tflog.Debug(ctx, "End configure of resource: aci_relation_to_contract_master") +} + +func (r *FvRsSecInheritedResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + tflog.Debug(ctx, "Start create of resource: aci_relation_to_contract_master") + // On create retrieve information on current state prior to making any changes in order to determine child delete operations + var stateData *FvRsSecInheritedResourceModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &stateData)...) + setFvRsSecInheritedId(ctx, stateData) + getAndSetFvRsSecInheritedAttributes(ctx, &resp.Diagnostics, r.client, stateData) + + var data *FvRsSecInheritedResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvRsSecInheritedId(ctx, data) + + tflog.Debug(ctx, fmt.Sprintf("Create of resource aci_relation_to_contract_master with id '%s'", data.Id.ValueString())) + + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsSecInheritedResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvRsSecInheritedResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvRsSecInheritedCreateJsonPayload(ctx, &resp.Diagnostics, data, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvRsSecInheritedAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End create of resource aci_relation_to_contract_master with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsSecInheritedResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + tflog.Debug(ctx, "Start read of resource: aci_relation_to_contract_master") + var data *FvRsSecInheritedResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Read of resource aci_relation_to_contract_master with id '%s'", data.Id.ValueString())) + + getAndSetFvRsSecInheritedAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + if data.Id.IsNull() { + var emptyData *FvRsSecInheritedResourceModel + resp.Diagnostics.Append(resp.State.Set(ctx, &emptyData)...) + } else { + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + } + + tflog.Debug(ctx, fmt.Sprintf("End read of resource aci_relation_to_contract_master with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsSecInheritedResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + tflog.Debug(ctx, "Start update of resource: aci_relation_to_contract_master") + var data *FvRsSecInheritedResourceModel + var stateData *FvRsSecInheritedResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + resp.Diagnostics.Append(req.State.Get(ctx, &stateData)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Update of resource aci_relation_to_contract_master with id '%s'", data.Id.ValueString())) + + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsSecInheritedResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvRsSecInheritedResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvRsSecInheritedCreateJsonPayload(ctx, &resp.Diagnostics, data, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvRsSecInheritedAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End update of resource aci_relation_to_contract_master with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsSecInheritedResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + tflog.Debug(ctx, "Start delete of resource: aci_relation_to_contract_master") + var data *FvRsSecInheritedResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Delete of resource aci_relation_to_contract_master with id '%s'", data.Id.ValueString())) + jsonPayload := GetDeleteJsonPayload(ctx, &resp.Diagnostics, "fvRsSecInherited", data.Id.ValueString()) + if resp.Diagnostics.HasError() { + return + } + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + tflog.Debug(ctx, fmt.Sprintf("End delete of resource aci_relation_to_contract_master with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsSecInheritedResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + tflog.Debug(ctx, "Start import state of resource: aci_relation_to_contract_master") + resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) + + var stateData *FvRsSecInheritedResourceModel + resp.Diagnostics.Append(resp.State.Get(ctx, &stateData)...) + tflog.Debug(ctx, fmt.Sprintf("Import state of resource aci_relation_to_contract_master with id '%s'", stateData.Id.ValueString())) + + tflog.Debug(ctx, "End import of state resource: aci_relation_to_contract_master") +} + +func getAndSetFvRsSecInheritedAttributes(ctx context.Context, diags *diag.Diagnostics, client *client.Client, data *FvRsSecInheritedResourceModel) { + requestData := DoRestRequest(ctx, diags, client, fmt.Sprintf("api/mo/%s.json?rsp-subtree=children&rsp-subtree-class=%s", data.Id.ValueString(), "fvRsSecInherited,tagAnnotation,tagTag"), "GET", nil) + + if diags.HasError() { + return + } + if requestData.Search("imdata").Search("fvRsSecInherited").Data() != nil { + classReadInfo := requestData.Search("imdata").Search("fvRsSecInherited").Data().([]interface{}) + if len(classReadInfo) == 1 { + attributes := classReadInfo[0].(map[string]interface{})["attributes"].(map[string]interface{}) + for attributeName, attributeValue := range attributes { + if attributeName == "dn" { + data.Id = basetypes.NewStringValue(attributeValue.(string)) + setFvRsSecInheritedParentDn(ctx, attributeValue.(string), data) + } + if attributeName == "annotation" { + data.Annotation = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "tDn" { + data.TDn = basetypes.NewStringValue(attributeValue.(string)) + } + } + TagAnnotationFvRsSecInheritedList := make([]TagAnnotationFvRsSecInheritedResourceModel, 0) + TagTagFvRsSecInheritedList := make([]TagTagFvRsSecInheritedResourceModel, 0) + _, ok := classReadInfo[0].(map[string]interface{})["children"] + if ok { + children := classReadInfo[0].(map[string]interface{})["children"].([]interface{}) + for _, child := range children { + for childClassName, childClassDetails := range child.(map[string]interface{}) { + childAttributes := childClassDetails.(map[string]interface{})["attributes"].(map[string]interface{}) + if childClassName == "tagAnnotation" { + TagAnnotationFvRsSecInherited := TagAnnotationFvRsSecInheritedResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagAnnotationFvRsSecInherited.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagAnnotationFvRsSecInherited.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagAnnotationFvRsSecInheritedList = append(TagAnnotationFvRsSecInheritedList, TagAnnotationFvRsSecInherited) + } + if childClassName == "tagTag" { + TagTagFvRsSecInherited := TagTagFvRsSecInheritedResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagTagFvRsSecInherited.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagTagFvRsSecInherited.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagTagFvRsSecInheritedList = append(TagTagFvRsSecInheritedList, TagTagFvRsSecInherited) + } + } + } + } + tagAnnotationSet, _ := types.SetValueFrom(ctx, data.TagAnnotation.ElementType(ctx), TagAnnotationFvRsSecInheritedList) + data.TagAnnotation = tagAnnotationSet + tagTagSet, _ := types.SetValueFrom(ctx, data.TagTag.ElementType(ctx), TagTagFvRsSecInheritedList) + data.TagTag = tagTagSet + } else { + diags.AddError( + "too many results in response", + fmt.Sprintf("%v matches returned for class 'fvRsSecInherited'. Please report this issue to the provider developers.", len(classReadInfo)), + ) + } + } else { + data.Id = basetypes.NewStringNull() + } +} + +func getFvRsSecInheritedRn(ctx context.Context, data *FvRsSecInheritedResourceModel) string { + rn := "rssecInherited-[{tDn}]" + for _, identifier := range []string{"tDn"} { + fieldName := fmt.Sprintf("%s%s", strings.ToUpper(identifier[:1]), identifier[1:]) + fieldValue := reflect.ValueOf(data).Elem().FieldByName(fieldName).Interface().(basetypes.StringValue).ValueString() + rn = strings.ReplaceAll(rn, fmt.Sprintf("{%s}", identifier), fieldValue) + } + return rn +} + +func setFvRsSecInheritedParentDn(ctx context.Context, dn string, data *FvRsSecInheritedResourceModel) { + bracketIndex := 0 + rnIndex := 0 + for i := len(dn) - 1; i >= 0; i-- { + if string(dn[i]) == "]" { + bracketIndex = bracketIndex + 1 + } else if string(dn[i]) == "[" { + bracketIndex = bracketIndex - 1 + } else if string(dn[i]) == "/" && bracketIndex == 0 { + rnIndex = i + break + } + } + data.ParentDn = basetypes.NewStringValue(dn[:rnIndex]) +} + +func setFvRsSecInheritedId(ctx context.Context, data *FvRsSecInheritedResourceModel) { + rn := getFvRsSecInheritedRn(ctx, data) + data.Id = types.StringValue(fmt.Sprintf("%s/%s", data.ParentDn.ValueString(), rn)) +} + +func getFvRsSecInheritedTagAnnotationChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvRsSecInheritedResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsSecInheritedResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagAnnotation.IsUnknown() { + tagAnnotationIdentifiers := []TagAnnotationIdentifier{} + for _, tagAnnotation := range tagAnnotationPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagAnnotation.Key.IsUnknown() { + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + } + if !tagAnnotation.Value.IsUnknown() { + childMap["attributes"]["value"] = tagAnnotation.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + tagAnnotationIdentifier := TagAnnotationIdentifier{} + tagAnnotationIdentifier.Key = tagAnnotation.Key + tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier) + } + for _, tagAnnotation := range tagAnnotationState { + delete := true + for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers { + if tagAnnotationIdentifier.Key == tagAnnotation.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + } + } + } else { + data.TagAnnotation = types.SetNull(data.TagAnnotation.ElementType(ctx)) + } + + return childPayloads +} +func getFvRsSecInheritedTagTagChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvRsSecInheritedResourceModel, tagTagPlan, tagTagState []TagTagFvRsSecInheritedResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagTag.IsUnknown() { + tagTagIdentifiers := []TagTagIdentifier{} + for _, tagTag := range tagTagPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagTag.Key.IsUnknown() { + childMap["attributes"]["key"] = tagTag.Key.ValueString() + } + if !tagTag.Value.IsUnknown() { + childMap["attributes"]["value"] = tagTag.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + tagTagIdentifier := TagTagIdentifier{} + tagTagIdentifier.Key = tagTag.Key + tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier) + } + for _, tagTag := range tagTagState { + delete := true + for _, tagTagIdentifier := range tagTagIdentifiers { + if tagTagIdentifier.Key == tagTag.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagTag.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + } + } + } else { + data.TagTag = types.SetNull(data.TagTag.ElementType(ctx)) + } + + return childPayloads +} + +func getFvRsSecInheritedCreateJsonPayload(ctx context.Context, diags *diag.Diagnostics, data *FvRsSecInheritedResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsSecInheritedResourceModel, tagTagPlan, tagTagState []TagTagFvRsSecInheritedResourceModel) *container.Container { + payloadMap := map[string]interface{}{} + payloadMap["attributes"] = map[string]string{} + childPayloads := []map[string]interface{}{} + + TagAnnotationchildPayloads := getFvRsSecInheritedTagAnnotationChildPayloads(ctx, diags, data, tagAnnotationPlan, tagAnnotationState) + if TagAnnotationchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagAnnotationchildPayloads...) + + TagTagchildPayloads := getFvRsSecInheritedTagTagChildPayloads(ctx, diags, data, tagTagPlan, tagTagState) + if TagTagchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagTagchildPayloads...) + + payloadMap["children"] = childPayloads + if !data.Annotation.IsNull() && !data.Annotation.IsUnknown() { + payloadMap["attributes"].(map[string]string)["annotation"] = data.Annotation.ValueString() + } + if !data.TDn.IsNull() && !data.TDn.IsUnknown() { + payloadMap["attributes"].(map[string]string)["tDn"] = data.TDn.ValueString() + } + + payload, err := json.Marshal(map[string]interface{}{"fvRsSecInherited": payloadMap}) + if err != nil { + diags.AddError( + "Marshalling of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + + jsonPayload, err := container.ParseJSON(payload) + + if err != nil { + diags.AddError( + "Construction of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + return jsonPayload +} diff --git a/internal/provider/resource_aci_relation_to_contract_master_test.go b/internal/provider/resource_aci_relation_to_contract_master_test.go new file mode 100644 index 000000000..ef51debad --- /dev/null +++ b/internal/provider/resource_aci_relation_to_contract_master_test.go @@ -0,0 +1,455 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccResourceFvRsSecInheritedWithFvAEPg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvRsSecInheritedMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/epg-epg_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotation", "orchestrator:terraform"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvRsSecInheritedAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/epg-epg_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotation", "annotation"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvRsSecInheritedMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/epg-epg_2"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvRsSecInheritedResetDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/epg-epg_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotation", "orchestrator:terraform"), + ), + }, + // Import testing + { + ResourceName: "aci_relation_to_contract_master.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/epg-epg_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotation", "orchestrator:terraform"), + ), + }, + // Update with children + { + Config: testConfigFvRsSecInheritedChildrenDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/epg-epg_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_relation_to_contract_master.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/epg-epg_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvRsSecInheritedChildrenRemoveFromConfigDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvRsSecInheritedChildrenRemoveOneDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvRsSecInheritedChildrenRemoveAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.#", "0"), + ), + }, + }, + }) +} +func TestAccResourceFvRsSecInheritedWithFvESg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvRsSecInheritedMinDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotation", "orchestrator:terraform"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvRsSecInheritedAllDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotation", "annotation"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvRsSecInheritedMinDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_0"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvRsSecInheritedResetDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotation", "orchestrator:terraform"), + ), + }, + // Import testing + { + ResourceName: "aci_relation_to_contract_master.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotation", "orchestrator:terraform"), + ), + }, + // Update with children + { + Config: testConfigFvRsSecInheritedChildrenDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_relation_to_contract_master.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvRsSecInheritedChildrenRemoveFromConfigDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvRsSecInheritedChildrenRemoveOneDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvRsSecInheritedChildrenRemoveAllDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_relation_to_contract_master.test", "tags.#", "0"), + ), + }, + }, + }) +} + +const testDependencyConfigFvRsSecInherited = ` +resource "aci_endpoint_security_group" "test_0" { + application_profile_dn = aci_application_profile.test.id + name = "esg_0" +} +resource "aci_endpoint_security_group" "test_1" { + application_profile_dn = aci_application_profile.test.id + name = "esg_1" +} +resource "aci_application_epg" "test_2" { + application_profile_dn = aci_application_profile.test.id + name = "epg_2" +} +resource "aci_application_epg" "test_3" { + application_profile_dn = aci_application_profile.test.id + name = "epg_3" +} +` + +const testConfigFvRsSecInheritedMinDependencyWithFvAEPg = testDependencyConfigFvRsSecInherited + testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_application_epg.test.id + target_dn = aci_application_epg.test_2.id +} +` + +const testConfigFvRsSecInheritedAllDependencyWithFvAEPg = testDependencyConfigFvRsSecInherited + testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_application_epg.test.id + target_dn = aci_application_epg.test_2.id + annotation = "annotation" +} +` + +const testConfigFvRsSecInheritedResetDependencyWithFvAEPg = testDependencyConfigFvRsSecInherited + testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_application_epg.test.id + target_dn = aci_application_epg.test_2.id + annotation = "orchestrator:terraform" +} +` +const testConfigFvRsSecInheritedChildrenDependencyWithFvAEPg = testDependencyConfigFvRsSecInherited + testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_application_epg.test.id + target_dn = aci_application_epg.test_2.id + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsSecInheritedChildrenRemoveFromConfigDependencyWithFvAEPg = testDependencyConfigFvRsSecInherited + testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_application_epg.test.id + target_dn = aci_application_epg.test_2.id +} +` + +const testConfigFvRsSecInheritedChildrenRemoveOneDependencyWithFvAEPg = testDependencyConfigFvRsSecInherited + testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_application_epg.test.id + target_dn = aci_application_epg.test_2.id + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsSecInheritedChildrenRemoveAllDependencyWithFvAEPg = testDependencyConfigFvRsSecInherited + testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_application_epg.test.id + target_dn = aci_application_epg.test_2.id + annotations = [] + tags = [] +} +` + +const testConfigFvRsSecInheritedMinDependencyWithFvESg = testDependencyConfigFvRsSecInherited + testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_endpoint_security_group.test.id + target_dn = aci_endpoint_security_group.test_0.id +} +` + +const testConfigFvRsSecInheritedAllDependencyWithFvESg = testDependencyConfigFvRsSecInherited + testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_endpoint_security_group.test.id + target_dn = aci_endpoint_security_group.test_0.id + annotation = "annotation" +} +` + +const testConfigFvRsSecInheritedResetDependencyWithFvESg = testDependencyConfigFvRsSecInherited + testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_endpoint_security_group.test.id + target_dn = aci_endpoint_security_group.test_0.id + annotation = "orchestrator:terraform" +} +` +const testConfigFvRsSecInheritedChildrenDependencyWithFvESg = testDependencyConfigFvRsSecInherited + testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_endpoint_security_group.test.id + target_dn = aci_endpoint_security_group.test_0.id + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsSecInheritedChildrenRemoveFromConfigDependencyWithFvESg = testDependencyConfigFvRsSecInherited + testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_endpoint_security_group.test.id + target_dn = aci_endpoint_security_group.test_0.id +} +` + +const testConfigFvRsSecInheritedChildrenRemoveOneDependencyWithFvESg = testDependencyConfigFvRsSecInherited + testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_endpoint_security_group.test.id + target_dn = aci_endpoint_security_group.test_0.id + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsSecInheritedChildrenRemoveAllDependencyWithFvESg = testDependencyConfigFvRsSecInherited + testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_contract_master" "test" { + parent_dn = aci_endpoint_security_group.test.id + target_dn = aci_endpoint_security_group.test_0.id + annotations = [] + tags = [] +} +` diff --git a/internal/provider/resource_aci_relation_to_fallback_route_group_test.go b/internal/provider/resource_aci_relation_to_fallback_route_group_test.go index 6d59993bf..25d045ee7 100644 --- a/internal/provider/resource_aci_relation_to_fallback_route_group_test.go +++ b/internal/provider/resource_aci_relation_to_fallback_route_group_test.go @@ -21,7 +21,7 @@ func TestAccResourceL3extRsOutToFBRGroupWithL3extOut(t *testing.T) { Config: testConfigL3extRsOutToFBRGroupMinDependencyWithL3extOut, ExpectNonEmptyPlan: false, Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group"), + resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group_0"), resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "annotation", "orchestrator:terraform"), ), }, @@ -30,7 +30,7 @@ func TestAccResourceL3extRsOutToFBRGroupWithL3extOut(t *testing.T) { Config: testConfigL3extRsOutToFBRGroupAllDependencyWithL3extOut, ExpectNonEmptyPlan: false, Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group"), + resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group_0"), resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "annotation", "annotation"), ), }, @@ -39,7 +39,7 @@ func TestAccResourceL3extRsOutToFBRGroupWithL3extOut(t *testing.T) { Config: testConfigL3extRsOutToFBRGroupMinDependencyWithL3extOut, ExpectNonEmptyPlan: false, Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group"), + resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group_0"), ), }, // Update with empty strings config or default value @@ -47,7 +47,7 @@ func TestAccResourceL3extRsOutToFBRGroupWithL3extOut(t *testing.T) { Config: testConfigL3extRsOutToFBRGroupResetDependencyWithL3extOut, ExpectNonEmptyPlan: false, Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group"), + resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group_0"), resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "annotation", "orchestrator:terraform"), ), }, @@ -57,7 +57,7 @@ func TestAccResourceL3extRsOutToFBRGroupWithL3extOut(t *testing.T) { ImportState: true, ImportStateVerify: true, Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group"), + resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group_0"), resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "annotation", "orchestrator:terraform"), ), }, @@ -66,7 +66,7 @@ func TestAccResourceL3extRsOutToFBRGroupWithL3extOut(t *testing.T) { Config: testConfigL3extRsOutToFBRGroupChildrenDependencyWithL3extOut, ExpectNonEmptyPlan: false, Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group"), + resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group_0"), resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "annotations.0.key", "key_0"), resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "annotations.0.value", "value_1"), @@ -84,7 +84,7 @@ func TestAccResourceL3extRsOutToFBRGroupWithL3extOut(t *testing.T) { ImportState: true, ImportStateVerify: true, Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group"), + resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "target_dn", "uni/tn-test_tenant/ctx-test_vrf/fbrg-fallback_route_group_0"), resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "annotations.0.key", "key_0"), resource.TestCheckResourceAttr("aci_relation_to_fallback_route_group.test", "annotations.0.value", "value_1"), @@ -139,39 +139,39 @@ func TestAccResourceL3extRsOutToFBRGroupWithL3extOut(t *testing.T) { }) } -const testConfigfvFBRGroupMinDependencyWithFvCtx = ` -resource "aci_vrf_fallback_route_group" "test" { +const testDependencyConfigL3extRsOutToFBRGroup = ` +resource "aci_vrf_fallback_route_group" "test_0" { parent_dn = aci_vrf.test.id - name = "fallback_route_group" + name = "fallback_route_group_0" } ` -const testConfigL3extRsOutToFBRGroupMinDependencyWithL3extOut = testConfigfvFBRGroupMinDependencyWithFvCtx + testConfigL3extOutMinDependencyWithFvTenant + ` +const testConfigL3extRsOutToFBRGroupMinDependencyWithL3extOut = testDependencyConfigL3extRsOutToFBRGroup + testConfigL3extOutMinDependencyWithFvTenant + ` resource "aci_relation_to_fallback_route_group" "test" { parent_dn = aci_l3_outside.test.id - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.test_0.id } ` -const testConfigL3extRsOutToFBRGroupAllDependencyWithL3extOut = testConfigfvFBRGroupMinDependencyWithFvCtx + testConfigL3extOutMinDependencyWithFvTenant + ` +const testConfigL3extRsOutToFBRGroupAllDependencyWithL3extOut = testDependencyConfigL3extRsOutToFBRGroup + testConfigL3extOutMinDependencyWithFvTenant + ` resource "aci_relation_to_fallback_route_group" "test" { parent_dn = aci_l3_outside.test.id - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.test_0.id annotation = "annotation" } ` -const testConfigL3extRsOutToFBRGroupResetDependencyWithL3extOut = testConfigfvFBRGroupMinDependencyWithFvCtx + testConfigL3extOutMinDependencyWithFvTenant + ` +const testConfigL3extRsOutToFBRGroupResetDependencyWithL3extOut = testDependencyConfigL3extRsOutToFBRGroup + testConfigL3extOutMinDependencyWithFvTenant + ` resource "aci_relation_to_fallback_route_group" "test" { parent_dn = aci_l3_outside.test.id - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.test_0.id annotation = "orchestrator:terraform" } ` -const testConfigL3extRsOutToFBRGroupChildrenDependencyWithL3extOut = testConfigfvFBRGroupMinDependencyWithFvCtx + testConfigL3extOutMinDependencyWithFvTenant + ` +const testConfigL3extRsOutToFBRGroupChildrenDependencyWithL3extOut = testDependencyConfigL3extRsOutToFBRGroup + testConfigL3extOutMinDependencyWithFvTenant + ` resource "aci_relation_to_fallback_route_group" "test" { parent_dn = aci_l3_outside.test.id - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.test_0.id annotations = [ { key = "key_0" @@ -195,17 +195,17 @@ resource "aci_relation_to_fallback_route_group" "test" { } ` -const testConfigL3extRsOutToFBRGroupChildrenRemoveFromConfigDependencyWithL3extOut = testConfigfvFBRGroupMinDependencyWithFvCtx + testConfigL3extOutMinDependencyWithFvTenant + ` +const testConfigL3extRsOutToFBRGroupChildrenRemoveFromConfigDependencyWithL3extOut = testDependencyConfigL3extRsOutToFBRGroup + testConfigL3extOutMinDependencyWithFvTenant + ` resource "aci_relation_to_fallback_route_group" "test" { parent_dn = aci_l3_outside.test.id - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.test_0.id } ` -const testConfigL3extRsOutToFBRGroupChildrenRemoveOneDependencyWithL3extOut = testConfigfvFBRGroupMinDependencyWithFvCtx + testConfigL3extOutMinDependencyWithFvTenant + ` +const testConfigL3extRsOutToFBRGroupChildrenRemoveOneDependencyWithL3extOut = testDependencyConfigL3extRsOutToFBRGroup + testConfigL3extOutMinDependencyWithFvTenant + ` resource "aci_relation_to_fallback_route_group" "test" { parent_dn = aci_l3_outside.test.id - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.test_0.id annotations = [ { key = "key_1" @@ -221,10 +221,10 @@ resource "aci_relation_to_fallback_route_group" "test" { } ` -const testConfigL3extRsOutToFBRGroupChildrenRemoveAllDependencyWithL3extOut = testConfigfvFBRGroupMinDependencyWithFvCtx + testConfigL3extOutMinDependencyWithFvTenant + ` +const testConfigL3extRsOutToFBRGroupChildrenRemoveAllDependencyWithL3extOut = testDependencyConfigL3extRsOutToFBRGroup + testConfigL3extOutMinDependencyWithFvTenant + ` resource "aci_relation_to_fallback_route_group" "test" { parent_dn = aci_l3_outside.test.id - target_dn = aci_vrf_fallback_route_group.test.id + target_dn = aci_vrf_fallback_route_group.test_0.id annotations = [] tags = [] } diff --git a/internal/provider/resource_aci_relation_to_intra_epg_contract.go b/internal/provider/resource_aci_relation_to_intra_epg_contract.go new file mode 100644 index 000000000..ff6e9b0f5 --- /dev/null +++ b/internal/provider/resource_aci_relation_to_intra_epg_contract.go @@ -0,0 +1,563 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "encoding/json" + "fmt" + "reflect" + "strings" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + "github.com/ciscoecosystem/aci-go-client/v2/container" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-framework/types/basetypes" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ resource.Resource = &FvRsIntraEpgResource{} +var _ resource.ResourceWithImportState = &FvRsIntraEpgResource{} + +func NewFvRsIntraEpgResource() resource.Resource { + return &FvRsIntraEpgResource{} +} + +// FvRsIntraEpgResource defines the resource implementation. +type FvRsIntraEpgResource struct { + client *client.Client +} + +// FvRsIntraEpgResourceModel describes the resource data model. +type FvRsIntraEpgResourceModel struct { + Id types.String `tfsdk:"id"` + ParentDn types.String `tfsdk:"parent_dn"` + Annotation types.String `tfsdk:"annotation"` + TnVzBrCPName types.String `tfsdk:"contract_name"` + TagAnnotation types.Set `tfsdk:"annotations"` + TagTag types.Set `tfsdk:"tags"` +} + +// TagAnnotationFvRsIntraEpgResourceModel describes the resource data model for the children without relation ships. +type TagAnnotationFvRsIntraEpgResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +// TagTagFvRsIntraEpgResourceModel describes the resource data model for the children without relation ships. +type TagTagFvRsIntraEpgResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +type FvRsIntraEpgIdentifier struct { + TnVzBrCPName types.String +} + +func (r *FvRsIntraEpgResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of resource: aci_relation_to_intra_epg_contract") + resp.TypeName = req.ProviderTypeName + "_relation_to_intra_epg_contract" + tflog.Debug(ctx, "End metadata of resource: aci_relation_to_intra_epg_contract") +} + +func (r *FvRsIntraEpgResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of resource: aci_relation_to_intra_epg_contract") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The relation_to_intra_epg_contract resource for the 'fvRsIntraEpg' class", + + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Relation To Intra Epg Contract object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "parent_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + }, + "annotation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Default: stringdefault.StaticString(globalAnnotation), + MarkdownDescription: `The annotation of the Relation To Intra Epg Contract object.`, + }, + "contract_name": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + MarkdownDescription: `The binary contract name.`, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of resource: aci_relation_to_intra_epg_contract") +} + +func (r *FvRsIntraEpgResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of resource: aci_relation_to_intra_epg_contract") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Resource Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + r.client = client + tflog.Debug(ctx, "End configure of resource: aci_relation_to_intra_epg_contract") +} + +func (r *FvRsIntraEpgResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + tflog.Debug(ctx, "Start create of resource: aci_relation_to_intra_epg_contract") + // On create retrieve information on current state prior to making any changes in order to determine child delete operations + var stateData *FvRsIntraEpgResourceModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &stateData)...) + setFvRsIntraEpgId(ctx, stateData) + getAndSetFvRsIntraEpgAttributes(ctx, &resp.Diagnostics, r.client, stateData) + + var data *FvRsIntraEpgResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvRsIntraEpgId(ctx, data) + + tflog.Debug(ctx, fmt.Sprintf("Create of resource aci_relation_to_intra_epg_contract with id '%s'", data.Id.ValueString())) + + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsIntraEpgResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvRsIntraEpgResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvRsIntraEpgCreateJsonPayload(ctx, &resp.Diagnostics, data, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvRsIntraEpgAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End create of resource aci_relation_to_intra_epg_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsIntraEpgResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + tflog.Debug(ctx, "Start read of resource: aci_relation_to_intra_epg_contract") + var data *FvRsIntraEpgResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Read of resource aci_relation_to_intra_epg_contract with id '%s'", data.Id.ValueString())) + + getAndSetFvRsIntraEpgAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + if data.Id.IsNull() { + var emptyData *FvRsIntraEpgResourceModel + resp.Diagnostics.Append(resp.State.Set(ctx, &emptyData)...) + } else { + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + } + + tflog.Debug(ctx, fmt.Sprintf("End read of resource aci_relation_to_intra_epg_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsIntraEpgResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + tflog.Debug(ctx, "Start update of resource: aci_relation_to_intra_epg_contract") + var data *FvRsIntraEpgResourceModel + var stateData *FvRsIntraEpgResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + resp.Diagnostics.Append(req.State.Get(ctx, &stateData)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Update of resource aci_relation_to_intra_epg_contract with id '%s'", data.Id.ValueString())) + + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsIntraEpgResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvRsIntraEpgResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvRsIntraEpgCreateJsonPayload(ctx, &resp.Diagnostics, data, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvRsIntraEpgAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End update of resource aci_relation_to_intra_epg_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsIntraEpgResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + tflog.Debug(ctx, "Start delete of resource: aci_relation_to_intra_epg_contract") + var data *FvRsIntraEpgResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Delete of resource aci_relation_to_intra_epg_contract with id '%s'", data.Id.ValueString())) + jsonPayload := GetDeleteJsonPayload(ctx, &resp.Diagnostics, "fvRsIntraEpg", data.Id.ValueString()) + if resp.Diagnostics.HasError() { + return + } + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + tflog.Debug(ctx, fmt.Sprintf("End delete of resource aci_relation_to_intra_epg_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsIntraEpgResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + tflog.Debug(ctx, "Start import state of resource: aci_relation_to_intra_epg_contract") + resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) + + var stateData *FvRsIntraEpgResourceModel + resp.Diagnostics.Append(resp.State.Get(ctx, &stateData)...) + tflog.Debug(ctx, fmt.Sprintf("Import state of resource aci_relation_to_intra_epg_contract with id '%s'", stateData.Id.ValueString())) + + tflog.Debug(ctx, "End import of state resource: aci_relation_to_intra_epg_contract") +} + +func getAndSetFvRsIntraEpgAttributes(ctx context.Context, diags *diag.Diagnostics, client *client.Client, data *FvRsIntraEpgResourceModel) { + requestData := DoRestRequest(ctx, diags, client, fmt.Sprintf("api/mo/%s.json?rsp-subtree=children&rsp-subtree-class=%s", data.Id.ValueString(), "fvRsIntraEpg,tagAnnotation,tagTag"), "GET", nil) + + if diags.HasError() { + return + } + if requestData.Search("imdata").Search("fvRsIntraEpg").Data() != nil { + classReadInfo := requestData.Search("imdata").Search("fvRsIntraEpg").Data().([]interface{}) + if len(classReadInfo) == 1 { + attributes := classReadInfo[0].(map[string]interface{})["attributes"].(map[string]interface{}) + for attributeName, attributeValue := range attributes { + if attributeName == "dn" { + data.Id = basetypes.NewStringValue(attributeValue.(string)) + setFvRsIntraEpgParentDn(ctx, attributeValue.(string), data) + } + if attributeName == "annotation" { + data.Annotation = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "tnVzBrCPName" { + data.TnVzBrCPName = basetypes.NewStringValue(attributeValue.(string)) + } + } + TagAnnotationFvRsIntraEpgList := make([]TagAnnotationFvRsIntraEpgResourceModel, 0) + TagTagFvRsIntraEpgList := make([]TagTagFvRsIntraEpgResourceModel, 0) + _, ok := classReadInfo[0].(map[string]interface{})["children"] + if ok { + children := classReadInfo[0].(map[string]interface{})["children"].([]interface{}) + for _, child := range children { + for childClassName, childClassDetails := range child.(map[string]interface{}) { + childAttributes := childClassDetails.(map[string]interface{})["attributes"].(map[string]interface{}) + if childClassName == "tagAnnotation" { + TagAnnotationFvRsIntraEpg := TagAnnotationFvRsIntraEpgResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagAnnotationFvRsIntraEpg.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagAnnotationFvRsIntraEpg.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagAnnotationFvRsIntraEpgList = append(TagAnnotationFvRsIntraEpgList, TagAnnotationFvRsIntraEpg) + } + if childClassName == "tagTag" { + TagTagFvRsIntraEpg := TagTagFvRsIntraEpgResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagTagFvRsIntraEpg.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagTagFvRsIntraEpg.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagTagFvRsIntraEpgList = append(TagTagFvRsIntraEpgList, TagTagFvRsIntraEpg) + } + } + } + } + tagAnnotationSet, _ := types.SetValueFrom(ctx, data.TagAnnotation.ElementType(ctx), TagAnnotationFvRsIntraEpgList) + data.TagAnnotation = tagAnnotationSet + tagTagSet, _ := types.SetValueFrom(ctx, data.TagTag.ElementType(ctx), TagTagFvRsIntraEpgList) + data.TagTag = tagTagSet + } else { + diags.AddError( + "too many results in response", + fmt.Sprintf("%v matches returned for class 'fvRsIntraEpg'. Please report this issue to the provider developers.", len(classReadInfo)), + ) + } + } else { + data.Id = basetypes.NewStringNull() + } +} + +func getFvRsIntraEpgRn(ctx context.Context, data *FvRsIntraEpgResourceModel) string { + rn := "rsintraEpg-{tnVzBrCPName}" + for _, identifier := range []string{"tnVzBrCPName"} { + fieldName := fmt.Sprintf("%s%s", strings.ToUpper(identifier[:1]), identifier[1:]) + fieldValue := reflect.ValueOf(data).Elem().FieldByName(fieldName).Interface().(basetypes.StringValue).ValueString() + rn = strings.ReplaceAll(rn, fmt.Sprintf("{%s}", identifier), fieldValue) + } + return rn +} + +func setFvRsIntraEpgParentDn(ctx context.Context, dn string, data *FvRsIntraEpgResourceModel) { + bracketIndex := 0 + rnIndex := 0 + for i := len(dn) - 1; i >= 0; i-- { + if string(dn[i]) == "]" { + bracketIndex = bracketIndex + 1 + } else if string(dn[i]) == "[" { + bracketIndex = bracketIndex - 1 + } else if string(dn[i]) == "/" && bracketIndex == 0 { + rnIndex = i + break + } + } + data.ParentDn = basetypes.NewStringValue(dn[:rnIndex]) +} + +func setFvRsIntraEpgId(ctx context.Context, data *FvRsIntraEpgResourceModel) { + rn := getFvRsIntraEpgRn(ctx, data) + data.Id = types.StringValue(fmt.Sprintf("%s/%s", data.ParentDn.ValueString(), rn)) +} + +func getFvRsIntraEpgTagAnnotationChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvRsIntraEpgResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsIntraEpgResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagAnnotation.IsUnknown() { + tagAnnotationIdentifiers := []TagAnnotationIdentifier{} + for _, tagAnnotation := range tagAnnotationPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagAnnotation.Key.IsUnknown() { + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + } + if !tagAnnotation.Value.IsUnknown() { + childMap["attributes"]["value"] = tagAnnotation.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + tagAnnotationIdentifier := TagAnnotationIdentifier{} + tagAnnotationIdentifier.Key = tagAnnotation.Key + tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier) + } + for _, tagAnnotation := range tagAnnotationState { + delete := true + for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers { + if tagAnnotationIdentifier.Key == tagAnnotation.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + } + } + } else { + data.TagAnnotation = types.SetNull(data.TagAnnotation.ElementType(ctx)) + } + + return childPayloads +} +func getFvRsIntraEpgTagTagChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvRsIntraEpgResourceModel, tagTagPlan, tagTagState []TagTagFvRsIntraEpgResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagTag.IsUnknown() { + tagTagIdentifiers := []TagTagIdentifier{} + for _, tagTag := range tagTagPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagTag.Key.IsUnknown() { + childMap["attributes"]["key"] = tagTag.Key.ValueString() + } + if !tagTag.Value.IsUnknown() { + childMap["attributes"]["value"] = tagTag.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + tagTagIdentifier := TagTagIdentifier{} + tagTagIdentifier.Key = tagTag.Key + tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier) + } + for _, tagTag := range tagTagState { + delete := true + for _, tagTagIdentifier := range tagTagIdentifiers { + if tagTagIdentifier.Key == tagTag.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagTag.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + } + } + } else { + data.TagTag = types.SetNull(data.TagTag.ElementType(ctx)) + } + + return childPayloads +} + +func getFvRsIntraEpgCreateJsonPayload(ctx context.Context, diags *diag.Diagnostics, data *FvRsIntraEpgResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsIntraEpgResourceModel, tagTagPlan, tagTagState []TagTagFvRsIntraEpgResourceModel) *container.Container { + payloadMap := map[string]interface{}{} + payloadMap["attributes"] = map[string]string{} + childPayloads := []map[string]interface{}{} + + TagAnnotationchildPayloads := getFvRsIntraEpgTagAnnotationChildPayloads(ctx, diags, data, tagAnnotationPlan, tagAnnotationState) + if TagAnnotationchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagAnnotationchildPayloads...) + + TagTagchildPayloads := getFvRsIntraEpgTagTagChildPayloads(ctx, diags, data, tagTagPlan, tagTagState) + if TagTagchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagTagchildPayloads...) + + payloadMap["children"] = childPayloads + if !data.Annotation.IsNull() && !data.Annotation.IsUnknown() { + payloadMap["attributes"].(map[string]string)["annotation"] = data.Annotation.ValueString() + } + if !data.TnVzBrCPName.IsNull() && !data.TnVzBrCPName.IsUnknown() { + payloadMap["attributes"].(map[string]string)["tnVzBrCPName"] = data.TnVzBrCPName.ValueString() + } + + payload, err := json.Marshal(map[string]interface{}{"fvRsIntraEpg": payloadMap}) + if err != nil { + diags.AddError( + "Marshalling of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + + jsonPayload, err := container.ParseJSON(payload) + + if err != nil { + diags.AddError( + "Construction of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + return jsonPayload +} diff --git a/internal/provider/resource_aci_relation_to_intra_epg_contract_test.go b/internal/provider/resource_aci_relation_to_intra_epg_contract_test.go new file mode 100644 index 000000000..bb3e1f3e3 --- /dev/null +++ b/internal/provider/resource_aci_relation_to_intra_epg_contract_test.go @@ -0,0 +1,436 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccResourceFvRsIntraEpgWithFvAEPg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvRsIntraEpgMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotation", "orchestrator:terraform"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvRsIntraEpgAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotation", "annotation"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvRsIntraEpgMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvRsIntraEpgResetDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotation", "orchestrator:terraform"), + ), + }, + // Import testing + { + ResourceName: "aci_relation_to_intra_epg_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotation", "orchestrator:terraform"), + ), + }, + // Update with children + { + Config: testConfigFvRsIntraEpgChildrenDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_relation_to_intra_epg_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvRsIntraEpgChildrenRemoveFromConfigDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvRsIntraEpgChildrenRemoveOneDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvRsIntraEpgChildrenRemoveAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.#", "0"), + ), + }, + }, + }) +} +func TestAccResourceFvRsIntraEpgWithFvESg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvRsIntraEpgMinDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotation", "orchestrator:terraform"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvRsIntraEpgAllDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotation", "annotation"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvRsIntraEpgMinDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvRsIntraEpgResetDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotation", "orchestrator:terraform"), + ), + }, + // Import testing + { + ResourceName: "aci_relation_to_intra_epg_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotation", "orchestrator:terraform"), + ), + }, + // Update with children + { + Config: testConfigFvRsIntraEpgChildrenDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_relation_to_intra_epg_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvRsIntraEpgChildrenRemoveFromConfigDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvRsIntraEpgChildrenRemoveOneDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvRsIntraEpgChildrenRemoveAllDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_relation_to_intra_epg_contract.test", "tags.#", "0"), + ), + }, + }, + }) +} + +const testConfigFvRsIntraEpgMinDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" +} +` + +const testConfigFvRsIntraEpgAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotation = "annotation" +} +` + +const testConfigFvRsIntraEpgResetDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotation = "orchestrator:terraform" +} +` +const testConfigFvRsIntraEpgChildrenDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsIntraEpgChildrenRemoveFromConfigDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" +} +` + +const testConfigFvRsIntraEpgChildrenRemoveOneDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsIntraEpgChildrenRemoveAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [] + tags = [] +} +` + +const testConfigFvRsIntraEpgMinDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" +} +` + +const testConfigFvRsIntraEpgAllDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotation = "annotation" +} +` + +const testConfigFvRsIntraEpgResetDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotation = "orchestrator:terraform" +} +` +const testConfigFvRsIntraEpgChildrenDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsIntraEpgChildrenRemoveFromConfigDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" +} +` + +const testConfigFvRsIntraEpgChildrenRemoveOneDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsIntraEpgChildrenRemoveAllDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_intra_epg_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [] + tags = [] +} +` diff --git a/internal/provider/resource_aci_relation_to_provided_contract.go b/internal/provider/resource_aci_relation_to_provided_contract.go new file mode 100644 index 000000000..92b57ed7c --- /dev/null +++ b/internal/provider/resource_aci_relation_to_provided_contract.go @@ -0,0 +1,601 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "encoding/json" + "fmt" + "reflect" + "strings" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + "github.com/ciscoecosystem/aci-go-client/v2/container" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-framework/types/basetypes" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ resource.Resource = &FvRsProvResource{} +var _ resource.ResourceWithImportState = &FvRsProvResource{} + +func NewFvRsProvResource() resource.Resource { + return &FvRsProvResource{} +} + +// FvRsProvResource defines the resource implementation. +type FvRsProvResource struct { + client *client.Client +} + +// FvRsProvResourceModel describes the resource data model. +type FvRsProvResourceModel struct { + Id types.String `tfsdk:"id"` + ParentDn types.String `tfsdk:"parent_dn"` + Annotation types.String `tfsdk:"annotation"` + MatchT types.String `tfsdk:"match_criteria"` + Prio types.String `tfsdk:"priority"` + TnVzBrCPName types.String `tfsdk:"contract_name"` + TagAnnotation types.Set `tfsdk:"annotations"` + TagTag types.Set `tfsdk:"tags"` +} + +// TagAnnotationFvRsProvResourceModel describes the resource data model for the children without relation ships. +type TagAnnotationFvRsProvResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +// TagTagFvRsProvResourceModel describes the resource data model for the children without relation ships. +type TagTagFvRsProvResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +type FvRsProvIdentifier struct { + TnVzBrCPName types.String +} + +func (r *FvRsProvResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of resource: aci_relation_to_provided_contract") + resp.TypeName = req.ProviderTypeName + "_relation_to_provided_contract" + tflog.Debug(ctx, "End metadata of resource: aci_relation_to_provided_contract") +} + +func (r *FvRsProvResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of resource: aci_relation_to_provided_contract") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The relation_to_provided_contract resource for the 'fvRsProv' class", + + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Relation To Provided Contract object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "parent_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + }, + "annotation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Default: stringdefault.StaticString(globalAnnotation), + MarkdownDescription: `The annotation of the Relation To Provided Contract object.`, + }, + "match_criteria": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf("All", "AtleastOne", "AtmostOne", "None"), + }, + MarkdownDescription: `The matched EPG type.`, + }, + "priority": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), + }, + MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + }, + "contract_name": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + MarkdownDescription: `The provider contract name.`, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of resource: aci_relation_to_provided_contract") +} + +func (r *FvRsProvResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of resource: aci_relation_to_provided_contract") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Resource Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + r.client = client + tflog.Debug(ctx, "End configure of resource: aci_relation_to_provided_contract") +} + +func (r *FvRsProvResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + tflog.Debug(ctx, "Start create of resource: aci_relation_to_provided_contract") + // On create retrieve information on current state prior to making any changes in order to determine child delete operations + var stateData *FvRsProvResourceModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &stateData)...) + setFvRsProvId(ctx, stateData) + getAndSetFvRsProvAttributes(ctx, &resp.Diagnostics, r.client, stateData) + + var data *FvRsProvResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvRsProvId(ctx, data) + + tflog.Debug(ctx, fmt.Sprintf("Create of resource aci_relation_to_provided_contract with id '%s'", data.Id.ValueString())) + + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsProvResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvRsProvResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvRsProvCreateJsonPayload(ctx, &resp.Diagnostics, data, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvRsProvAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End create of resource aci_relation_to_provided_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsProvResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + tflog.Debug(ctx, "Start read of resource: aci_relation_to_provided_contract") + var data *FvRsProvResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Read of resource aci_relation_to_provided_contract with id '%s'", data.Id.ValueString())) + + getAndSetFvRsProvAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + if data.Id.IsNull() { + var emptyData *FvRsProvResourceModel + resp.Diagnostics.Append(resp.State.Set(ctx, &emptyData)...) + } else { + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + } + + tflog.Debug(ctx, fmt.Sprintf("End read of resource aci_relation_to_provided_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsProvResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + tflog.Debug(ctx, "Start update of resource: aci_relation_to_provided_contract") + var data *FvRsProvResourceModel + var stateData *FvRsProvResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + resp.Diagnostics.Append(req.State.Get(ctx, &stateData)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Update of resource aci_relation_to_provided_contract with id '%s'", data.Id.ValueString())) + + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsProvResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvRsProvResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvRsProvCreateJsonPayload(ctx, &resp.Diagnostics, data, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvRsProvAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End update of resource aci_relation_to_provided_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsProvResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + tflog.Debug(ctx, "Start delete of resource: aci_relation_to_provided_contract") + var data *FvRsProvResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Delete of resource aci_relation_to_provided_contract with id '%s'", data.Id.ValueString())) + jsonPayload := GetDeleteJsonPayload(ctx, &resp.Diagnostics, "fvRsProv", data.Id.ValueString()) + if resp.Diagnostics.HasError() { + return + } + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + tflog.Debug(ctx, fmt.Sprintf("End delete of resource aci_relation_to_provided_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsProvResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + tflog.Debug(ctx, "Start import state of resource: aci_relation_to_provided_contract") + resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) + + var stateData *FvRsProvResourceModel + resp.Diagnostics.Append(resp.State.Get(ctx, &stateData)...) + tflog.Debug(ctx, fmt.Sprintf("Import state of resource aci_relation_to_provided_contract with id '%s'", stateData.Id.ValueString())) + + tflog.Debug(ctx, "End import of state resource: aci_relation_to_provided_contract") +} + +func getAndSetFvRsProvAttributes(ctx context.Context, diags *diag.Diagnostics, client *client.Client, data *FvRsProvResourceModel) { + requestData := DoRestRequest(ctx, diags, client, fmt.Sprintf("api/mo/%s.json?rsp-subtree=children&rsp-subtree-class=%s", data.Id.ValueString(), "fvRsProv,tagAnnotation,tagTag"), "GET", nil) + + if diags.HasError() { + return + } + if requestData.Search("imdata").Search("fvRsProv").Data() != nil { + classReadInfo := requestData.Search("imdata").Search("fvRsProv").Data().([]interface{}) + if len(classReadInfo) == 1 { + attributes := classReadInfo[0].(map[string]interface{})["attributes"].(map[string]interface{}) + for attributeName, attributeValue := range attributes { + if attributeName == "dn" { + data.Id = basetypes.NewStringValue(attributeValue.(string)) + setFvRsProvParentDn(ctx, attributeValue.(string), data) + } + if attributeName == "annotation" { + data.Annotation = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "matchT" { + data.MatchT = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "prio" { + data.Prio = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "tnVzBrCPName" { + data.TnVzBrCPName = basetypes.NewStringValue(attributeValue.(string)) + } + } + TagAnnotationFvRsProvList := make([]TagAnnotationFvRsProvResourceModel, 0) + TagTagFvRsProvList := make([]TagTagFvRsProvResourceModel, 0) + _, ok := classReadInfo[0].(map[string]interface{})["children"] + if ok { + children := classReadInfo[0].(map[string]interface{})["children"].([]interface{}) + for _, child := range children { + for childClassName, childClassDetails := range child.(map[string]interface{}) { + childAttributes := childClassDetails.(map[string]interface{})["attributes"].(map[string]interface{}) + if childClassName == "tagAnnotation" { + TagAnnotationFvRsProv := TagAnnotationFvRsProvResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagAnnotationFvRsProv.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagAnnotationFvRsProv.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagAnnotationFvRsProvList = append(TagAnnotationFvRsProvList, TagAnnotationFvRsProv) + } + if childClassName == "tagTag" { + TagTagFvRsProv := TagTagFvRsProvResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagTagFvRsProv.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagTagFvRsProv.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagTagFvRsProvList = append(TagTagFvRsProvList, TagTagFvRsProv) + } + } + } + } + tagAnnotationSet, _ := types.SetValueFrom(ctx, data.TagAnnotation.ElementType(ctx), TagAnnotationFvRsProvList) + data.TagAnnotation = tagAnnotationSet + tagTagSet, _ := types.SetValueFrom(ctx, data.TagTag.ElementType(ctx), TagTagFvRsProvList) + data.TagTag = tagTagSet + } else { + diags.AddError( + "too many results in response", + fmt.Sprintf("%v matches returned for class 'fvRsProv'. Please report this issue to the provider developers.", len(classReadInfo)), + ) + } + } else { + data.Id = basetypes.NewStringNull() + } +} + +func getFvRsProvRn(ctx context.Context, data *FvRsProvResourceModel) string { + rn := "rsprov-{tnVzBrCPName}" + for _, identifier := range []string{"tnVzBrCPName"} { + fieldName := fmt.Sprintf("%s%s", strings.ToUpper(identifier[:1]), identifier[1:]) + fieldValue := reflect.ValueOf(data).Elem().FieldByName(fieldName).Interface().(basetypes.StringValue).ValueString() + rn = strings.ReplaceAll(rn, fmt.Sprintf("{%s}", identifier), fieldValue) + } + return rn +} + +func setFvRsProvParentDn(ctx context.Context, dn string, data *FvRsProvResourceModel) { + bracketIndex := 0 + rnIndex := 0 + for i := len(dn) - 1; i >= 0; i-- { + if string(dn[i]) == "]" { + bracketIndex = bracketIndex + 1 + } else if string(dn[i]) == "[" { + bracketIndex = bracketIndex - 1 + } else if string(dn[i]) == "/" && bracketIndex == 0 { + rnIndex = i + break + } + } + data.ParentDn = basetypes.NewStringValue(dn[:rnIndex]) +} + +func setFvRsProvId(ctx context.Context, data *FvRsProvResourceModel) { + rn := getFvRsProvRn(ctx, data) + data.Id = types.StringValue(fmt.Sprintf("%s/%s", data.ParentDn.ValueString(), rn)) +} + +func getFvRsProvTagAnnotationChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvRsProvResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsProvResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagAnnotation.IsUnknown() { + tagAnnotationIdentifiers := []TagAnnotationIdentifier{} + for _, tagAnnotation := range tagAnnotationPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagAnnotation.Key.IsUnknown() { + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + } + if !tagAnnotation.Value.IsUnknown() { + childMap["attributes"]["value"] = tagAnnotation.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + tagAnnotationIdentifier := TagAnnotationIdentifier{} + tagAnnotationIdentifier.Key = tagAnnotation.Key + tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier) + } + for _, tagAnnotation := range tagAnnotationState { + delete := true + for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers { + if tagAnnotationIdentifier.Key == tagAnnotation.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + } + } + } else { + data.TagAnnotation = types.SetNull(data.TagAnnotation.ElementType(ctx)) + } + + return childPayloads +} +func getFvRsProvTagTagChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvRsProvResourceModel, tagTagPlan, tagTagState []TagTagFvRsProvResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagTag.IsUnknown() { + tagTagIdentifiers := []TagTagIdentifier{} + for _, tagTag := range tagTagPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagTag.Key.IsUnknown() { + childMap["attributes"]["key"] = tagTag.Key.ValueString() + } + if !tagTag.Value.IsUnknown() { + childMap["attributes"]["value"] = tagTag.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + tagTagIdentifier := TagTagIdentifier{} + tagTagIdentifier.Key = tagTag.Key + tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier) + } + for _, tagTag := range tagTagState { + delete := true + for _, tagTagIdentifier := range tagTagIdentifiers { + if tagTagIdentifier.Key == tagTag.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagTag.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + } + } + } else { + data.TagTag = types.SetNull(data.TagTag.ElementType(ctx)) + } + + return childPayloads +} + +func getFvRsProvCreateJsonPayload(ctx context.Context, diags *diag.Diagnostics, data *FvRsProvResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsProvResourceModel, tagTagPlan, tagTagState []TagTagFvRsProvResourceModel) *container.Container { + payloadMap := map[string]interface{}{} + payloadMap["attributes"] = map[string]string{} + childPayloads := []map[string]interface{}{} + + TagAnnotationchildPayloads := getFvRsProvTagAnnotationChildPayloads(ctx, diags, data, tagAnnotationPlan, tagAnnotationState) + if TagAnnotationchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagAnnotationchildPayloads...) + + TagTagchildPayloads := getFvRsProvTagTagChildPayloads(ctx, diags, data, tagTagPlan, tagTagState) + if TagTagchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagTagchildPayloads...) + + payloadMap["children"] = childPayloads + if !data.Annotation.IsNull() && !data.Annotation.IsUnknown() { + payloadMap["attributes"].(map[string]string)["annotation"] = data.Annotation.ValueString() + } + if !data.MatchT.IsNull() && !data.MatchT.IsUnknown() { + payloadMap["attributes"].(map[string]string)["matchT"] = data.MatchT.ValueString() + } + if !data.Prio.IsNull() && !data.Prio.IsUnknown() { + payloadMap["attributes"].(map[string]string)["prio"] = data.Prio.ValueString() + } + if !data.TnVzBrCPName.IsNull() && !data.TnVzBrCPName.IsUnknown() { + payloadMap["attributes"].(map[string]string)["tnVzBrCPName"] = data.TnVzBrCPName.ValueString() + } + + payload, err := json.Marshal(map[string]interface{}{"fvRsProv": payloadMap}) + if err != nil { + diags.AddError( + "Marshalling of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + + jsonPayload, err := container.ParseJSON(payload) + + if err != nil { + diags.AddError( + "Construction of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + return jsonPayload +} diff --git a/internal/provider/resource_aci_relation_to_provided_contract_test.go b/internal/provider/resource_aci_relation_to_provided_contract_test.go new file mode 100644 index 000000000..fee30eb2c --- /dev/null +++ b/internal/provider/resource_aci_relation_to_provided_contract_test.go @@ -0,0 +1,468 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccResourceFvRsProvWithFvAEPg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvRsProvMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "priority", "unspecified"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvRsProvAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotation", "annotation"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "match_criteria", "All"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "priority", "level1"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvRsProvMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvRsProvResetDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "priority", "unspecified"), + ), + }, + // Import testing + { + ResourceName: "aci_relation_to_provided_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "priority", "unspecified"), + ), + }, + // Update with children + { + Config: testConfigFvRsProvChildrenDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_relation_to_provided_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvRsProvChildrenRemoveFromConfigDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvRsProvChildrenRemoveOneDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvRsProvChildrenRemoveAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.#", "0"), + ), + }, + }, + }) +} +func TestAccResourceFvRsProvWithFvESg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvRsProvMinDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "priority", "unspecified"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvRsProvAllDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotation", "annotation"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "match_criteria", "All"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "priority", "level1"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvRsProvMinDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvRsProvResetDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "priority", "unspecified"), + ), + }, + // Import testing + { + ResourceName: "aci_relation_to_provided_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "priority", "unspecified"), + ), + }, + // Update with children + { + Config: testConfigFvRsProvChildrenDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_relation_to_provided_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "contract_name", "test_tn_vz_br_cp_name"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "match_criteria", "AtleastOne"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvRsProvChildrenRemoveFromConfigDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvRsProvChildrenRemoveOneDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvRsProvChildrenRemoveAllDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_relation_to_provided_contract.test", "tags.#", "0"), + ), + }, + }, + }) +} + +const testConfigFvRsProvMinDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" +} +` + +const testConfigFvRsProvAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotation = "annotation" + match_criteria = "All" + priority = "level1" +} +` + +const testConfigFvRsProvResetDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotation = "orchestrator:terraform" + match_criteria = "AtleastOne" + priority = "unspecified" +} +` +const testConfigFvRsProvChildrenDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsProvChildrenRemoveFromConfigDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" +} +` + +const testConfigFvRsProvChildrenRemoveOneDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsProvChildrenRemoveAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_application_epg.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [] + tags = [] +} +` + +const testConfigFvRsProvMinDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" +} +` + +const testConfigFvRsProvAllDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotation = "annotation" + match_criteria = "All" + priority = "level1" +} +` + +const testConfigFvRsProvResetDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotation = "orchestrator:terraform" + match_criteria = "AtleastOne" + priority = "unspecified" +} +` +const testConfigFvRsProvChildrenDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsProvChildrenRemoveFromConfigDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" +} +` + +const testConfigFvRsProvChildrenRemoveOneDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsProvChildrenRemoveAllDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_provided_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + contract_name = "test_tn_vz_br_cp_name" + annotations = [] + tags = [] +} +` diff --git a/internal/provider/resource_aci_relation_to_taboo_contract.go b/internal/provider/resource_aci_relation_to_taboo_contract.go new file mode 100644 index 000000000..0e48b2b76 --- /dev/null +++ b/internal/provider/resource_aci_relation_to_taboo_contract.go @@ -0,0 +1,563 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "context" + "encoding/json" + "fmt" + "reflect" + "strings" + + "github.com/ciscoecosystem/aci-go-client/v2/client" + "github.com/ciscoecosystem/aci-go-client/v2/container" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/types" + "github.com/hashicorp/terraform-plugin-framework/types/basetypes" + "github.com/hashicorp/terraform-plugin-log/tflog" +) + +// Ensure provider defined types fully satisfy framework interfaces. +var _ resource.Resource = &FvRsProtByResource{} +var _ resource.ResourceWithImportState = &FvRsProtByResource{} + +func NewFvRsProtByResource() resource.Resource { + return &FvRsProtByResource{} +} + +// FvRsProtByResource defines the resource implementation. +type FvRsProtByResource struct { + client *client.Client +} + +// FvRsProtByResourceModel describes the resource data model. +type FvRsProtByResourceModel struct { + Id types.String `tfsdk:"id"` + ParentDn types.String `tfsdk:"parent_dn"` + Annotation types.String `tfsdk:"annotation"` + TnVzTabooName types.String `tfsdk:"taboo_contract_name"` + TagAnnotation types.Set `tfsdk:"annotations"` + TagTag types.Set `tfsdk:"tags"` +} + +// TagAnnotationFvRsProtByResourceModel describes the resource data model for the children without relation ships. +type TagAnnotationFvRsProtByResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +// TagTagFvRsProtByResourceModel describes the resource data model for the children without relation ships. +type TagTagFvRsProtByResourceModel struct { + Key types.String `tfsdk:"key"` + Value types.String `tfsdk:"value"` +} + +type FvRsProtByIdentifier struct { + TnVzTabooName types.String +} + +func (r *FvRsProtByResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + tflog.Debug(ctx, "Start metadata of resource: aci_relation_to_taboo_contract") + resp.TypeName = req.ProviderTypeName + "_relation_to_taboo_contract" + tflog.Debug(ctx, "End metadata of resource: aci_relation_to_taboo_contract") +} + +func (r *FvRsProtByResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + tflog.Debug(ctx, "Start schema of resource: aci_relation_to_taboo_contract") + resp.Schema = schema.Schema{ + // This description is used by the documentation generator and the language server. + MarkdownDescription: "The relation_to_taboo_contract resource for the 'fvRsProtBy' class", + + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + MarkdownDescription: "The distinguished name (DN) of the Relation To Taboo Contract object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + }, + "parent_dn": schema.StringAttribute{ + Required: true, + MarkdownDescription: "The distinguished name (DN) of the parent object.", + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + }, + "annotation": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Default: stringdefault.StaticString(globalAnnotation), + MarkdownDescription: `The annotation of the Relation To Taboo Contract object.`, + }, + "taboo_contract_name": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + stringplanmodifier.RequiresReplace(), + }, + MarkdownDescription: `A contract for denying specific classes of traffic. Taboo rules are applied in the hardware before applying the rules of regular contracts. Without a contract, the default forwarding policy is to not allow any communication between EPGs.`, + }, + "annotations": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + "tags": schema.SetNestedAttribute{ + MarkdownDescription: ``, + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.Set{ + setplanmodifier.UseStateForUnknown(), + }, + NestedObject: schema.NestedAttributeObject{ + Attributes: map[string]schema.Attribute{ + "key": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The key used to uniquely identify this configuration object.`, + }, + "value": schema.StringAttribute{ + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: `The value of the property.`, + }, + }, + }, + }, + }, + } + tflog.Debug(ctx, "End schema of resource: aci_relation_to_taboo_contract") +} + +func (r *FvRsProtByResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { + tflog.Debug(ctx, "Start configure of resource: aci_relation_to_taboo_contract") + // Prevent panic if the provider has not been configured. + if req.ProviderData == nil { + return + } + + client, ok := req.ProviderData.(*client.Client) + + if !ok { + resp.Diagnostics.AddError( + "Unexpected Resource Configure Type", + fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + r.client = client + tflog.Debug(ctx, "End configure of resource: aci_relation_to_taboo_contract") +} + +func (r *FvRsProtByResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + tflog.Debug(ctx, "Start create of resource: aci_relation_to_taboo_contract") + // On create retrieve information on current state prior to making any changes in order to determine child delete operations + var stateData *FvRsProtByResourceModel + resp.Diagnostics.Append(req.Plan.Get(ctx, &stateData)...) + setFvRsProtById(ctx, stateData) + getAndSetFvRsProtByAttributes(ctx, &resp.Diagnostics, r.client, stateData) + + var data *FvRsProtByResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + setFvRsProtById(ctx, data) + + tflog.Debug(ctx, fmt.Sprintf("Create of resource aci_relation_to_taboo_contract with id '%s'", data.Id.ValueString())) + + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsProtByResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvRsProtByResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvRsProtByCreateJsonPayload(ctx, &resp.Diagnostics, data, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvRsProtByAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End create of resource aci_relation_to_taboo_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsProtByResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + tflog.Debug(ctx, "Start read of resource: aci_relation_to_taboo_contract") + var data *FvRsProtByResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Read of resource aci_relation_to_taboo_contract with id '%s'", data.Id.ValueString())) + + getAndSetFvRsProtByAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + if data.Id.IsNull() { + var emptyData *FvRsProtByResourceModel + resp.Diagnostics.Append(resp.State.Set(ctx, &emptyData)...) + } else { + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + } + + tflog.Debug(ctx, fmt.Sprintf("End read of resource aci_relation_to_taboo_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsProtByResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + tflog.Debug(ctx, "Start update of resource: aci_relation_to_taboo_contract") + var data *FvRsProtByResourceModel + var stateData *FvRsProtByResourceModel + + // Read Terraform plan data into the model + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + resp.Diagnostics.Append(req.State.Get(ctx, &stateData)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Update of resource aci_relation_to_taboo_contract with id '%s'", data.Id.ValueString())) + + var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsProtByResourceModel + data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) + stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false) + var tagTagPlan, tagTagState []TagTagFvRsProtByResourceModel + data.TagTag.ElementsAs(ctx, &tagTagPlan, false) + stateData.TagTag.ElementsAs(ctx, &tagTagState, false) + jsonPayload := getFvRsProtByCreateJsonPayload(ctx, &resp.Diagnostics, data, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState) + + if resp.Diagnostics.HasError() { + return + } + + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + + if resp.Diagnostics.HasError() { + return + } + + getAndSetFvRsProtByAttributes(ctx, &resp.Diagnostics, r.client, data) + + // Save updated data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) + tflog.Debug(ctx, fmt.Sprintf("End update of resource aci_relation_to_taboo_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsProtByResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + tflog.Debug(ctx, "Start delete of resource: aci_relation_to_taboo_contract") + var data *FvRsProtByResourceModel + + // Read Terraform prior state data into the model + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + + if resp.Diagnostics.HasError() { + return + } + + tflog.Debug(ctx, fmt.Sprintf("Delete of resource aci_relation_to_taboo_contract with id '%s'", data.Id.ValueString())) + jsonPayload := GetDeleteJsonPayload(ctx, &resp.Diagnostics, "fvRsProtBy", data.Id.ValueString()) + if resp.Diagnostics.HasError() { + return + } + DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload) + if resp.Diagnostics.HasError() { + return + } + tflog.Debug(ctx, fmt.Sprintf("End delete of resource aci_relation_to_taboo_contract with id '%s'", data.Id.ValueString())) +} + +func (r *FvRsProtByResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + tflog.Debug(ctx, "Start import state of resource: aci_relation_to_taboo_contract") + resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) + + var stateData *FvRsProtByResourceModel + resp.Diagnostics.Append(resp.State.Get(ctx, &stateData)...) + tflog.Debug(ctx, fmt.Sprintf("Import state of resource aci_relation_to_taboo_contract with id '%s'", stateData.Id.ValueString())) + + tflog.Debug(ctx, "End import of state resource: aci_relation_to_taboo_contract") +} + +func getAndSetFvRsProtByAttributes(ctx context.Context, diags *diag.Diagnostics, client *client.Client, data *FvRsProtByResourceModel) { + requestData := DoRestRequest(ctx, diags, client, fmt.Sprintf("api/mo/%s.json?rsp-subtree=children&rsp-subtree-class=%s", data.Id.ValueString(), "fvRsProtBy,tagAnnotation,tagTag"), "GET", nil) + + if diags.HasError() { + return + } + if requestData.Search("imdata").Search("fvRsProtBy").Data() != nil { + classReadInfo := requestData.Search("imdata").Search("fvRsProtBy").Data().([]interface{}) + if len(classReadInfo) == 1 { + attributes := classReadInfo[0].(map[string]interface{})["attributes"].(map[string]interface{}) + for attributeName, attributeValue := range attributes { + if attributeName == "dn" { + data.Id = basetypes.NewStringValue(attributeValue.(string)) + setFvRsProtByParentDn(ctx, attributeValue.(string), data) + } + if attributeName == "annotation" { + data.Annotation = basetypes.NewStringValue(attributeValue.(string)) + } + if attributeName == "tnVzTabooName" { + data.TnVzTabooName = basetypes.NewStringValue(attributeValue.(string)) + } + } + TagAnnotationFvRsProtByList := make([]TagAnnotationFvRsProtByResourceModel, 0) + TagTagFvRsProtByList := make([]TagTagFvRsProtByResourceModel, 0) + _, ok := classReadInfo[0].(map[string]interface{})["children"] + if ok { + children := classReadInfo[0].(map[string]interface{})["children"].([]interface{}) + for _, child := range children { + for childClassName, childClassDetails := range child.(map[string]interface{}) { + childAttributes := childClassDetails.(map[string]interface{})["attributes"].(map[string]interface{}) + if childClassName == "tagAnnotation" { + TagAnnotationFvRsProtBy := TagAnnotationFvRsProtByResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagAnnotationFvRsProtBy.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagAnnotationFvRsProtBy.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagAnnotationFvRsProtByList = append(TagAnnotationFvRsProtByList, TagAnnotationFvRsProtBy) + } + if childClassName == "tagTag" { + TagTagFvRsProtBy := TagTagFvRsProtByResourceModel{} + for childAttributeName, childAttributeValue := range childAttributes { + if childAttributeName == "key" { + TagTagFvRsProtBy.Key = basetypes.NewStringValue(childAttributeValue.(string)) + } + if childAttributeName == "value" { + TagTagFvRsProtBy.Value = basetypes.NewStringValue(childAttributeValue.(string)) + } + } + TagTagFvRsProtByList = append(TagTagFvRsProtByList, TagTagFvRsProtBy) + } + } + } + } + tagAnnotationSet, _ := types.SetValueFrom(ctx, data.TagAnnotation.ElementType(ctx), TagAnnotationFvRsProtByList) + data.TagAnnotation = tagAnnotationSet + tagTagSet, _ := types.SetValueFrom(ctx, data.TagTag.ElementType(ctx), TagTagFvRsProtByList) + data.TagTag = tagTagSet + } else { + diags.AddError( + "too many results in response", + fmt.Sprintf("%v matches returned for class 'fvRsProtBy'. Please report this issue to the provider developers.", len(classReadInfo)), + ) + } + } else { + data.Id = basetypes.NewStringNull() + } +} + +func getFvRsProtByRn(ctx context.Context, data *FvRsProtByResourceModel) string { + rn := "rsprotBy-{tnVzTabooName}" + for _, identifier := range []string{"tnVzTabooName"} { + fieldName := fmt.Sprintf("%s%s", strings.ToUpper(identifier[:1]), identifier[1:]) + fieldValue := reflect.ValueOf(data).Elem().FieldByName(fieldName).Interface().(basetypes.StringValue).ValueString() + rn = strings.ReplaceAll(rn, fmt.Sprintf("{%s}", identifier), fieldValue) + } + return rn +} + +func setFvRsProtByParentDn(ctx context.Context, dn string, data *FvRsProtByResourceModel) { + bracketIndex := 0 + rnIndex := 0 + for i := len(dn) - 1; i >= 0; i-- { + if string(dn[i]) == "]" { + bracketIndex = bracketIndex + 1 + } else if string(dn[i]) == "[" { + bracketIndex = bracketIndex - 1 + } else if string(dn[i]) == "/" && bracketIndex == 0 { + rnIndex = i + break + } + } + data.ParentDn = basetypes.NewStringValue(dn[:rnIndex]) +} + +func setFvRsProtById(ctx context.Context, data *FvRsProtByResourceModel) { + rn := getFvRsProtByRn(ctx, data) + data.Id = types.StringValue(fmt.Sprintf("%s/%s", data.ParentDn.ValueString(), rn)) +} + +func getFvRsProtByTagAnnotationChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvRsProtByResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsProtByResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagAnnotation.IsUnknown() { + tagAnnotationIdentifiers := []TagAnnotationIdentifier{} + for _, tagAnnotation := range tagAnnotationPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagAnnotation.Key.IsUnknown() { + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + } + if !tagAnnotation.Value.IsUnknown() { + childMap["attributes"]["value"] = tagAnnotation.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + tagAnnotationIdentifier := TagAnnotationIdentifier{} + tagAnnotationIdentifier.Key = tagAnnotation.Key + tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier) + } + for _, tagAnnotation := range tagAnnotationState { + delete := true + for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers { + if tagAnnotationIdentifier.Key == tagAnnotation.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagAnnotation.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap}) + } + } + } else { + data.TagAnnotation = types.SetNull(data.TagAnnotation.ElementType(ctx)) + } + + return childPayloads +} +func getFvRsProtByTagTagChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvRsProtByResourceModel, tagTagPlan, tagTagState []TagTagFvRsProtByResourceModel) []map[string]interface{} { + + childPayloads := []map[string]interface{}{} + if !data.TagTag.IsUnknown() { + tagTagIdentifiers := []TagTagIdentifier{} + for _, tagTag := range tagTagPlan { + childMap := map[string]map[string]interface{}{"attributes": {}} + if !tagTag.Key.IsUnknown() { + childMap["attributes"]["key"] = tagTag.Key.ValueString() + } + if !tagTag.Value.IsUnknown() { + childMap["attributes"]["value"] = tagTag.Value.ValueString() + } + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + tagTagIdentifier := TagTagIdentifier{} + tagTagIdentifier.Key = tagTag.Key + tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier) + } + for _, tagTag := range tagTagState { + delete := true + for _, tagTagIdentifier := range tagTagIdentifiers { + if tagTagIdentifier.Key == tagTag.Key { + delete = false + break + } + } + if delete { + childMap := map[string]map[string]interface{}{"attributes": {}} + childMap["attributes"]["status"] = "deleted" + childMap["attributes"]["key"] = tagTag.Key.ValueString() + childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap}) + } + } + } else { + data.TagTag = types.SetNull(data.TagTag.ElementType(ctx)) + } + + return childPayloads +} + +func getFvRsProtByCreateJsonPayload(ctx context.Context, diags *diag.Diagnostics, data *FvRsProtByResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsProtByResourceModel, tagTagPlan, tagTagState []TagTagFvRsProtByResourceModel) *container.Container { + payloadMap := map[string]interface{}{} + payloadMap["attributes"] = map[string]string{} + childPayloads := []map[string]interface{}{} + + TagAnnotationchildPayloads := getFvRsProtByTagAnnotationChildPayloads(ctx, diags, data, tagAnnotationPlan, tagAnnotationState) + if TagAnnotationchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagAnnotationchildPayloads...) + + TagTagchildPayloads := getFvRsProtByTagTagChildPayloads(ctx, diags, data, tagTagPlan, tagTagState) + if TagTagchildPayloads == nil { + return nil + } + childPayloads = append(childPayloads, TagTagchildPayloads...) + + payloadMap["children"] = childPayloads + if !data.Annotation.IsNull() && !data.Annotation.IsUnknown() { + payloadMap["attributes"].(map[string]string)["annotation"] = data.Annotation.ValueString() + } + if !data.TnVzTabooName.IsNull() && !data.TnVzTabooName.IsUnknown() { + payloadMap["attributes"].(map[string]string)["tnVzTabooName"] = data.TnVzTabooName.ValueString() + } + + payload, err := json.Marshal(map[string]interface{}{"fvRsProtBy": payloadMap}) + if err != nil { + diags.AddError( + "Marshalling of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + + jsonPayload, err := container.ParseJSON(payload) + + if err != nil { + diags.AddError( + "Construction of json payload failed", + fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err), + ) + return nil + } + return jsonPayload +} diff --git a/internal/provider/resource_aci_relation_to_taboo_contract_test.go b/internal/provider/resource_aci_relation_to_taboo_contract_test.go new file mode 100644 index 000000000..ef2270671 --- /dev/null +++ b/internal/provider/resource_aci_relation_to_taboo_contract_test.go @@ -0,0 +1,224 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccResourceFvRsProtByWithFvAEPg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvRsProtByMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "taboo_contract_name", "test_tn_vz_taboo_name"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotation", "orchestrator:terraform"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvRsProtByAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "taboo_contract_name", "test_tn_vz_taboo_name"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotation", "annotation"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvRsProtByMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "taboo_contract_name", "test_tn_vz_taboo_name"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvRsProtByResetDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "taboo_contract_name", "test_tn_vz_taboo_name"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotation", "orchestrator:terraform"), + ), + }, + // Import testing + { + ResourceName: "aci_relation_to_taboo_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "taboo_contract_name", "test_tn_vz_taboo_name"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotation", "orchestrator:terraform"), + ), + }, + // Update with children + { + Config: testConfigFvRsProtByChildrenDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "taboo_contract_name", "test_tn_vz_taboo_name"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_relation_to_taboo_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "taboo_contract_name", "test_tn_vz_taboo_name"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvRsProtByChildrenRemoveFromConfigDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvRsProtByChildrenRemoveOneDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvRsProtByChildrenRemoveAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_relation_to_taboo_contract.test", "tags.#", "0"), + ), + }, + }, + }) +} + +const testConfigFvRsProtByMinDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_taboo_contract" "test" { + parent_dn = aci_application_epg.test.id + taboo_contract_name = "test_tn_vz_taboo_name" +} +` + +const testConfigFvRsProtByAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_taboo_contract" "test" { + parent_dn = aci_application_epg.test.id + taboo_contract_name = "test_tn_vz_taboo_name" + annotation = "annotation" +} +` + +const testConfigFvRsProtByResetDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_taboo_contract" "test" { + parent_dn = aci_application_epg.test.id + taboo_contract_name = "test_tn_vz_taboo_name" + annotation = "orchestrator:terraform" +} +` +const testConfigFvRsProtByChildrenDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_taboo_contract" "test" { + parent_dn = aci_application_epg.test.id + taboo_contract_name = "test_tn_vz_taboo_name" + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsProtByChildrenRemoveFromConfigDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_taboo_contract" "test" { + parent_dn = aci_application_epg.test.id + taboo_contract_name = "test_tn_vz_taboo_name" +} +` + +const testConfigFvRsProtByChildrenRemoveOneDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_taboo_contract" "test" { + parent_dn = aci_application_epg.test.id + taboo_contract_name = "test_tn_vz_taboo_name" + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsProtByChildrenRemoveAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_taboo_contract" "test" { + parent_dn = aci_application_epg.test.id + taboo_contract_name = "test_tn_vz_taboo_name" + annotations = [] + tags = [] +} +` diff --git a/internal/provider/test_constants.go b/internal/provider/test_constants.go index e44ac5da0..dd9dfd73c 100644 --- a/internal/provider/test_constants.go +++ b/internal/provider/test_constants.go @@ -20,6 +20,20 @@ resource "aci_l3_outside" "test" { } ` +const testConfigFvApMinDependencyWithFvTenant = testConfigFvTenantMin + ` +resource "aci_application_profile" "test" { + tenant_dn = aci_tenant.test.id + name = "test_ap" +} +` + +const testConfigFvAEPgMinDependencyWithFvAp = testConfigFvApMinDependencyWithFvTenant + ` +resource "aci_application_epg" "test" { + application_profile_dn = aci_application_profile.test.id + name = "test_epg" +} +` + const testConfigFvAEPgMin = testConfigFvTenantMin + ` resource "aci_application_profile" "test" { tenant_dn = aci_tenant.test.id From e1513f6e5b891a41ceaf7493c4da65a83deeecdc Mon Sep 17 00:00:00 2001 From: akinross Date: Thu, 30 May 2024 09:06:00 +0200 Subject: [PATCH 04/22] [ignore] Documentation updates for DN formats an UI locations --- docs/data-sources/annotation.md | 4 +-- .../relation_to_consumed_contract.md | 10 +++--- ...relation_to_consumed_contract_interface.md | 10 +++--- .../relation_to_contract_master.md | 6 ++-- .../relation_to_intra_epg_contract.md | 8 ++--- .../relation_to_provided_contract.md | 10 +++--- .../relation_to_taboo_contract.md | 10 +++--- docs/data-sources/tag.md | 4 +-- docs/resources/annotation.md | 4 +-- .../relation_to_consumed_contract.md | 14 ++++---- ...relation_to_consumed_contract_interface.md | 14 ++++---- docs/resources/relation_to_contract_master.md | 10 +++--- .../relation_to_intra_epg_contract.md | 12 +++---- .../relation_to_provided_contract.md | 14 ++++---- docs/resources/relation_to_taboo_contract.md | 14 ++++---- docs/resources/tag.md | 4 +-- gen/definitions/classes.yaml | 36 ++++++++++++------- 17 files changed, 104 insertions(+), 80 deletions(-) diff --git a/docs/data-sources/annotation.md b/docs/data-sources/annotation.md index 4093bbea3..42d39fc67 100644 --- a/docs/data-sources/annotation.md +++ b/docs/data-sources/annotation.md @@ -70,10 +70,10 @@ data "aci_annotation" "example_application_epg" { - [aci_relation_to_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_vrf) ([fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) - [aci_relation_to_contract_master](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_contract_master) ([fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) - [aci_tenant](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tenant) ([fvTenant](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTenant/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_l3out_consumer_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_consumer_label) ([l3extConsLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extConsLbl/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - [aci_logical_node_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_profile) ([l3extLNodeP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLNodeP/overview)) - - [aci_l3out_loopback_interface_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_loopback_interface_profile) ([l3extLoopBackIfP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLoopBackIfP/overview)) - - [aci_l3_outside](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3_outside) ([l3extOut](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extOut/overview)) * `key` (key) - (string) The key used to uniquely identify this configuration object. ### Read-Only ### diff --git a/docs/data-sources/relation_to_consumed_contract.md b/docs/data-sources/relation_to_consumed_contract.md index e23eee855..fa00968c9 100644 --- a/docs/data-sources/relation_to_consumed_contract.md +++ b/docs/data-sources/relation_to_consumed_contract.md @@ -21,17 +21,19 @@ Data source for Relation To Consumed Contract * Supported in ACI versions: 1.0(1e) and later. * Distinguished Name Formats: - - `... add all relevant DNs ...` - Too many DN formats to display, see model documentation for all possible parents of [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rscons-{tnVzBrCPName}` - `uni/tn-{name}/ap-{name}/esg-{name}/rscons-{tnVzBrCPName}` + - `uni/tn-{name}/l2out-{name}/instP-{name}/rscons-{tnVzBrCPName}` + - `uni/tn-{name}/out-{name}/instP-{name}/rscons-{tnVzBrCPName}` ## GUI Information ## * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `... add all locations ...` + - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## @@ -56,6 +58,8 @@ data "aci_relation_to_consumed_contract" "example_endpoint_security_group" { * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) @@ -67,8 +71,6 @@ data "aci_relation_to_consumed_contract" "example_endpoint_security_group" { - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) - - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) diff --git a/docs/data-sources/relation_to_consumed_contract_interface.md b/docs/data-sources/relation_to_consumed_contract_interface.md index 1b6e5df18..dcc5c405b 100644 --- a/docs/data-sources/relation_to_consumed_contract_interface.md +++ b/docs/data-sources/relation_to_consumed_contract_interface.md @@ -21,17 +21,19 @@ Data source for Relation To Consumed Contract Interface * Supported in ACI versions: 1.0(1e) and later. * Distinguished Name Formats: - - `... add all relevant DNs ...` - Too many DN formats to display, see model documentation for all possible parents of [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rsconsIf-{tnVzCPIfName}` - `uni/tn-{name}/ap-{name}/esg-{name}/rsconsIf-{tnVzCPIfName}` + - `uni/tn-{name}/l2out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` + - `uni/tn-{name}/out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` ## GUI Information ## * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `... add all locations ...` + - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## @@ -56,6 +58,8 @@ data "aci_relation_to_consumed_contract_interface" "example_endpoint_security_gr * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) @@ -67,8 +71,6 @@ data "aci_relation_to_consumed_contract_interface" "example_endpoint_security_gr - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) - - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) diff --git a/docs/data-sources/relation_to_contract_master.md b/docs/data-sources/relation_to_contract_master.md index 0451836b7..24dcc5efc 100644 --- a/docs/data-sources/relation_to_contract_master.md +++ b/docs/data-sources/relation_to_contract_master.md @@ -21,7 +21,6 @@ Data source for Relation To Contract Master * Supported in ACI versions: 2.3(1e) and later. * Distinguished Name Formats: - - `... add all relevant DNs ...` - Too many DN formats to display, see model documentation for all possible parents of [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rssecInherited-[{tDn}]` - `uni/tn-{name}/ap-{name}/esg-{name}/rssecInherited-[{tDn}]` @@ -31,7 +30,6 @@ Data source for Relation To Contract Master * Locations: - `Tenants -> Application Profiles -> Application EPGs` - `Tenants -> Application Profiles -> Endpoint Security Groups` - - `... add all locations ...` ## Example Usage ## @@ -56,6 +54,8 @@ data "aci_relation_to_contract_master" "example_endpoint_security_group" { * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) @@ -67,8 +67,6 @@ data "aci_relation_to_contract_master" "example_endpoint_security_group" { - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) - - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) diff --git a/docs/data-sources/relation_to_intra_epg_contract.md b/docs/data-sources/relation_to_intra_epg_contract.md index 0d1a0c07f..45f706e26 100644 --- a/docs/data-sources/relation_to_intra_epg_contract.md +++ b/docs/data-sources/relation_to_intra_epg_contract.md @@ -21,17 +21,17 @@ Data source for Relation To Intra Epg Contract * Supported in ACI versions: 3.0(1k) and later. * Distinguished Name Formats: - - `... add all relevant DNs ...` - Too many DN formats to display, see model documentation for all possible parents of [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rsintraEpg-{tnVzBrCPName}` - `uni/tn-{name}/ap-{name}/esg-{name}/rsintraEpg-{tnVzBrCPName}` + - `uni/tn-{name}/out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` ## GUI Information ## * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `... add all locations ...` + - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` ## Example Usage ## @@ -56,6 +56,8 @@ data "aci_relation_to_intra_epg_contract" "example_endpoint_security_group" { * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) @@ -67,8 +69,6 @@ data "aci_relation_to_intra_epg_contract" "example_endpoint_security_group" { - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) - - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) diff --git a/docs/data-sources/relation_to_provided_contract.md b/docs/data-sources/relation_to_provided_contract.md index 153297771..a8d622256 100644 --- a/docs/data-sources/relation_to_provided_contract.md +++ b/docs/data-sources/relation_to_provided_contract.md @@ -21,17 +21,19 @@ Data source for Relation To Provided Contract * Supported in ACI versions: 1.0(1e) and later. * Distinguished Name Formats: - - `... add all relevant DNs ...` - Too many DN formats to display, see model documentation for all possible parents of [fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rsprov-{tnVzBrCPName}` - `uni/tn-{name}/ap-{name}/esg-{name}/rsprov-{tnVzBrCPName}` + - `uni/tn-{name}/l2out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` + - `uni/tn-{name}/out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` ## GUI Information ## * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `... add all locations ...` + - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## @@ -56,6 +58,8 @@ data "aci_relation_to_provided_contract" "example_endpoint_security_group" { * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) @@ -67,8 +71,6 @@ data "aci_relation_to_provided_contract" "example_endpoint_security_group" { - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) - - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) diff --git a/docs/data-sources/relation_to_taboo_contract.md b/docs/data-sources/relation_to_taboo_contract.md index 446e7261c..b6591fff1 100644 --- a/docs/data-sources/relation_to_taboo_contract.md +++ b/docs/data-sources/relation_to_taboo_contract.md @@ -21,15 +21,17 @@ Data source for Relation To Taboo Contract * Supported in ACI versions: 1.0(1e) and later. * Distinguished Name Formats: - - `... add all relevant DNs ...` - Too many DN formats to display, see model documentation for all possible parents of [fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rsprotBy-{tnVzTabooName}` + - `uni/tn-{name}/l2out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` + - `uni/tn-{name}/out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` ## GUI Information ## * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - - `... add all locations ...` + - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## @@ -49,6 +51,8 @@ data "aci_relation_to_taboo_contract" "example_application_epg" { * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) @@ -60,8 +64,6 @@ data "aci_relation_to_taboo_contract" "example_application_epg" { - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) - - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) diff --git a/docs/data-sources/tag.md b/docs/data-sources/tag.md index 65d267ddb..2dc107e64 100644 --- a/docs/data-sources/tag.md +++ b/docs/data-sources/tag.md @@ -70,10 +70,10 @@ data "aci_tag" "example_application_epg" { - [aci_relation_to_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_vrf) ([fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) - [aci_relation_to_contract_master](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_contract_master) ([fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) - [aci_tenant](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tenant) ([fvTenant](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTenant/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_l3out_consumer_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_consumer_label) ([l3extConsLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extConsLbl/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - [aci_logical_node_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_profile) ([l3extLNodeP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLNodeP/overview)) - - [aci_l3out_loopback_interface_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_loopback_interface_profile) ([l3extLoopBackIfP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLoopBackIfP/overview)) - - [aci_l3_outside](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3_outside) ([l3extOut](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extOut/overview)) * `key` (key) - (string) The key used to uniquely identify this configuration object. ### Read-Only ### diff --git a/docs/resources/annotation.md b/docs/resources/annotation.md index d1832d2ee..00a2541f8 100644 --- a/docs/resources/annotation.md +++ b/docs/resources/annotation.md @@ -79,10 +79,10 @@ All examples for the Annotation resource can be found in the [examples](https:// - [aci_relation_to_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_vrf) ([fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) - [aci_relation_to_contract_master](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_contract_master) ([fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) - [aci_tenant](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tenant) ([fvTenant](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTenant/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_l3out_consumer_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_consumer_label) ([l3extConsLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extConsLbl/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - [aci_logical_node_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_profile) ([l3extLNodeP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLNodeP/overview)) - - [aci_l3out_loopback_interface_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_loopback_interface_profile) ([l3extLoopBackIfP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLoopBackIfP/overview)) - - [aci_l3_outside](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3_outside) ([l3extOut](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extOut/overview)) * `key` (key) - (string) The key used to uniquely identify this configuration object. * `value` (value) - (string) The value of the property. diff --git a/docs/resources/relation_to_consumed_contract.md b/docs/resources/relation_to_consumed_contract.md index a10e51510..3bd7a86f8 100644 --- a/docs/resources/relation_to_consumed_contract.md +++ b/docs/resources/relation_to_consumed_contract.md @@ -23,17 +23,19 @@ Manages ACI Relation To Consumed Contract * Supported in ACI versions: 1.0(1e) and later. * Distinguished Name Formats: - - `... add all relevant DNs ...` - Too many DN formats to display, see model documentation for all possible parents of [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rscons-{tnVzBrCPName}` - `uni/tn-{name}/ap-{name}/esg-{name}/rscons-{tnVzBrCPName}` + - `uni/tn-{name}/l2out-{name}/instP-{name}/rscons-{tnVzBrCPName}` + - `uni/tn-{name}/out-{name}/instP-{name}/rscons-{tnVzBrCPName}` ## GUI Information ## * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `... add all locations ...` + - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## @@ -107,6 +109,8 @@ All examples for the Relation To Consumed Contract resource can be found in the * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) @@ -118,8 +122,6 @@ All examples for the Relation To Consumed Contract resource can be found in the - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) - - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) @@ -160,7 +162,7 @@ All examples for the Relation To Consumed Contract resource can be found in the An existing Relation To Consumed Contract can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: ``` -terraform import aci_relation_to_consumed_contract.example_application_epg ... add all relevant DNs ... +terraform import aci_relation_to_consumed_contract.example_application_epg uni/tn-{name}/ap-{name}/epg-{name}/rscons-{tnVzBrCPName} ``` Starting in Terraform version 1.5, an existing Relation To Consumed Contract can be imported @@ -168,7 +170,7 @@ using [import blocks](https://developer.hashicorp.com/terraform/language/import) ``` import { - id = "... add all relevant DNs ..." + id = "uni/tn-{name}/ap-{name}/epg-{name}/rscons-{tnVzBrCPName}" to = aci_relation_to_consumed_contract.example_application_epg } ``` diff --git a/docs/resources/relation_to_consumed_contract_interface.md b/docs/resources/relation_to_consumed_contract_interface.md index 2ab6e0611..b90e04221 100644 --- a/docs/resources/relation_to_consumed_contract_interface.md +++ b/docs/resources/relation_to_consumed_contract_interface.md @@ -23,17 +23,19 @@ Manages ACI Relation To Consumed Contract Interface * Supported in ACI versions: 1.0(1e) and later. * Distinguished Name Formats: - - `... add all relevant DNs ...` - Too many DN formats to display, see model documentation for all possible parents of [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rsconsIf-{tnVzCPIfName}` - `uni/tn-{name}/ap-{name}/esg-{name}/rsconsIf-{tnVzCPIfName}` + - `uni/tn-{name}/l2out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` + - `uni/tn-{name}/out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` ## GUI Information ## * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `... add all locations ...` + - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## @@ -107,6 +109,8 @@ All examples for the Relation To Consumed Contract Interface resource can be fou * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) @@ -118,8 +122,6 @@ All examples for the Relation To Consumed Contract Interface resource can be fou - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) - - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) @@ -160,7 +162,7 @@ All examples for the Relation To Consumed Contract Interface resource can be fou An existing Relation To Consumed Contract Interface can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: ``` -terraform import aci_relation_to_consumed_contract_interface.example_application_epg ... add all relevant DNs ... +terraform import aci_relation_to_consumed_contract_interface.example_application_epg uni/tn-{name}/ap-{name}/epg-{name}/rsconsIf-{tnVzCPIfName} ``` Starting in Terraform version 1.5, an existing Relation To Consumed Contract Interface can be imported @@ -168,7 +170,7 @@ using [import blocks](https://developer.hashicorp.com/terraform/language/import) ``` import { - id = "... add all relevant DNs ..." + id = "uni/tn-{name}/ap-{name}/epg-{name}/rsconsIf-{tnVzCPIfName}" to = aci_relation_to_consumed_contract_interface.example_application_epg } ``` diff --git a/docs/resources/relation_to_contract_master.md b/docs/resources/relation_to_contract_master.md index 6c989fe49..8c4f3cc88 100644 --- a/docs/resources/relation_to_contract_master.md +++ b/docs/resources/relation_to_contract_master.md @@ -23,7 +23,6 @@ Manages ACI Relation To Contract Master * Supported in ACI versions: 2.3(1e) and later. * Distinguished Name Formats: - - `... add all relevant DNs ...` - Too many DN formats to display, see model documentation for all possible parents of [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rssecInherited-[{tDn}]` - `uni/tn-{name}/ap-{name}/esg-{name}/rssecInherited-[{tDn}]` @@ -33,7 +32,6 @@ Manages ACI Relation To Contract Master * Locations: - `Tenants -> Application Profiles -> Application EPGs` - `Tenants -> Application Profiles -> Endpoint Security Groups` - - `... add all locations ...` ## Example Usage ## @@ -105,6 +103,8 @@ All examples for the Relation To Contract Master resource can be found in the [e * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) @@ -116,8 +116,6 @@ All examples for the Relation To Contract Master resource can be found in the [e - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) - - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) @@ -155,7 +153,7 @@ All examples for the Relation To Contract Master resource can be found in the [e An existing Relation To Contract Master can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: ``` -terraform import aci_relation_to_contract_master.example_application_epg ... add all relevant DNs ... +terraform import aci_relation_to_contract_master.example_application_epg uni/tn-{name}/ap-{name}/epg-{name}/rssecInherited-[{tDn}] ``` Starting in Terraform version 1.5, an existing Relation To Contract Master can be imported @@ -163,7 +161,7 @@ using [import blocks](https://developer.hashicorp.com/terraform/language/import) ``` import { - id = "... add all relevant DNs ..." + id = "uni/tn-{name}/ap-{name}/epg-{name}/rssecInherited-[{tDn}]" to = aci_relation_to_contract_master.example_application_epg } ``` diff --git a/docs/resources/relation_to_intra_epg_contract.md b/docs/resources/relation_to_intra_epg_contract.md index 38403a4c1..964d6345b 100644 --- a/docs/resources/relation_to_intra_epg_contract.md +++ b/docs/resources/relation_to_intra_epg_contract.md @@ -23,17 +23,17 @@ Manages ACI Relation To Intra Epg Contract * Supported in ACI versions: 3.0(1k) and later. * Distinguished Name Formats: - - `... add all relevant DNs ...` - Too many DN formats to display, see model documentation for all possible parents of [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rsintraEpg-{tnVzBrCPName}` - `uni/tn-{name}/ap-{name}/esg-{name}/rsintraEpg-{tnVzBrCPName}` + - `uni/tn-{name}/out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` ## GUI Information ## * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `... add all locations ...` + - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` ## Example Usage ## @@ -105,6 +105,8 @@ All examples for the Relation To Intra Epg Contract resource can be found in the * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) @@ -116,8 +118,6 @@ All examples for the Relation To Intra Epg Contract resource can be found in the - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) - - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) @@ -155,7 +155,7 @@ All examples for the Relation To Intra Epg Contract resource can be found in the An existing Relation To Intra Epg Contract can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: ``` -terraform import aci_relation_to_intra_epg_contract.example_application_epg ... add all relevant DNs ... +terraform import aci_relation_to_intra_epg_contract.example_application_epg uni/tn-{name}/ap-{name}/epg-{name}/rsintraEpg-{tnVzBrCPName} ``` Starting in Terraform version 1.5, an existing Relation To Intra Epg Contract can be imported @@ -163,7 +163,7 @@ using [import blocks](https://developer.hashicorp.com/terraform/language/import) ``` import { - id = "... add all relevant DNs ..." + id = "uni/tn-{name}/ap-{name}/epg-{name}/rsintraEpg-{tnVzBrCPName}" to = aci_relation_to_intra_epg_contract.example_application_epg } ``` diff --git a/docs/resources/relation_to_provided_contract.md b/docs/resources/relation_to_provided_contract.md index d579ac827..de8896c41 100644 --- a/docs/resources/relation_to_provided_contract.md +++ b/docs/resources/relation_to_provided_contract.md @@ -23,17 +23,19 @@ Manages ACI Relation To Provided Contract * Supported in ACI versions: 1.0(1e) and later. * Distinguished Name Formats: - - `... add all relevant DNs ...` - Too many DN formats to display, see model documentation for all possible parents of [fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rsprov-{tnVzBrCPName}` - `uni/tn-{name}/ap-{name}/esg-{name}/rsprov-{tnVzBrCPName}` + - `uni/tn-{name}/l2out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` + - `uni/tn-{name}/out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` ## GUI Information ## * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `... add all locations ...` + - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## @@ -109,6 +111,8 @@ All examples for the Relation To Provided Contract resource can be found in the * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) @@ -120,8 +124,6 @@ All examples for the Relation To Provided Contract resource can be found in the - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) - - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) @@ -165,7 +167,7 @@ All examples for the Relation To Provided Contract resource can be found in the An existing Relation To Provided Contract can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: ``` -terraform import aci_relation_to_provided_contract.example_application_epg ... add all relevant DNs ... +terraform import aci_relation_to_provided_contract.example_application_epg uni/tn-{name}/ap-{name}/epg-{name}/rsprov-{tnVzBrCPName} ``` Starting in Terraform version 1.5, an existing Relation To Provided Contract can be imported @@ -173,7 +175,7 @@ using [import blocks](https://developer.hashicorp.com/terraform/language/import) ``` import { - id = "... add all relevant DNs ..." + id = "uni/tn-{name}/ap-{name}/epg-{name}/rsprov-{tnVzBrCPName}" to = aci_relation_to_provided_contract.example_application_epg } ``` diff --git a/docs/resources/relation_to_taboo_contract.md b/docs/resources/relation_to_taboo_contract.md index 7f29ae97d..b3166a053 100644 --- a/docs/resources/relation_to_taboo_contract.md +++ b/docs/resources/relation_to_taboo_contract.md @@ -23,15 +23,17 @@ Manages ACI Relation To Taboo Contract * Supported in ACI versions: 1.0(1e) and later. * Distinguished Name Formats: - - `... add all relevant DNs ...` - Too many DN formats to display, see model documentation for all possible parents of [fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rsprotBy-{tnVzTabooName}` + - `uni/tn-{name}/l2out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` + - `uni/tn-{name}/out-{name}/instP-{name}/rsprov-{tnVzBrCPName}` ## GUI Information ## * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - - `... add all locations ...` + - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## @@ -80,6 +82,8 @@ All examples for the Relation To Taboo Contract resource can be found in the [ex * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) @@ -91,8 +95,6 @@ All examples for the Relation To Taboo Contract resource can be found in the [ex - [fvTnlEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTnlEPg/overview) - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - - [l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview) - - [l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) @@ -130,7 +132,7 @@ All examples for the Relation To Taboo Contract resource can be found in the [ex An existing Relation To Taboo Contract can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: ``` -terraform import aci_relation_to_taboo_contract.example_application_epg ... add all relevant DNs ... +terraform import aci_relation_to_taboo_contract.example_application_epg uni/tn-{name}/ap-{name}/epg-{name}/rsprotBy-{tnVzTabooName} ``` Starting in Terraform version 1.5, an existing Relation To Taboo Contract can be imported @@ -138,7 +140,7 @@ using [import blocks](https://developer.hashicorp.com/terraform/language/import) ``` import { - id = "... add all relevant DNs ..." + id = "uni/tn-{name}/ap-{name}/epg-{name}/rsprotBy-{tnVzTabooName}" to = aci_relation_to_taboo_contract.example_application_epg } ``` diff --git a/docs/resources/tag.md b/docs/resources/tag.md index 4e9a0fe08..9dddf0909 100644 --- a/docs/resources/tag.md +++ b/docs/resources/tag.md @@ -79,10 +79,10 @@ All examples for the Tag resource can be found in the [examples](https://github. - [aci_relation_to_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_vrf) ([fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) - [aci_relation_to_contract_master](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_contract_master) ([fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) - [aci_tenant](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tenant) ([fvTenant](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTenant/overview)) + - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_l3out_consumer_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_consumer_label) ([l3extConsLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extConsLbl/overview)) + - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - [aci_logical_node_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_profile) ([l3extLNodeP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLNodeP/overview)) - - [aci_l3out_loopback_interface_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_loopback_interface_profile) ([l3extLoopBackIfP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLoopBackIfP/overview)) - - [aci_l3_outside](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3_outside) ([l3extOut](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extOut/overview)) * `key` (key) - (string) The key used to uniquely identify this configuration object. * `value` (value) - (string) The value of the property. diff --git a/gen/definitions/classes.yaml b/gen/definitions/classes.yaml index 90c35f6a8..3eea6aff2 100644 --- a/gen/definitions/classes.yaml +++ b/gen/definitions/classes.yaml @@ -71,6 +71,12 @@ mgmtRsOoBCons: - "Tenants (mgmt) -> External Management Network Instance Profiles -> Contracts" sub_category: "Node Management" +l2extInstP: + resource_name: "aci_l2out_extepg" + +l3extInstP: + resource_name: "aci_external_network_instance_profile" + l3extOut: resource_name: "l3_outside" @@ -265,14 +271,16 @@ fvRsCons: - "fvAEPg" - "fvESg" dn_formats: - - "... add all relevant DNs ..." - "uni/tn-{name}/ap-{name}/epg-{name}/rscons-{tnVzBrCPName}" - "uni/tn-{name}/ap-{name}/esg-{name}/rscons-{tnVzBrCPName}" + - "uni/tn-{name}/out-{name}/instP-{name}/rscons-{tnVzBrCPName}" + - "uni/tn-{name}/l2out-{name}/instP-{name}/rscons-{tnVzBrCPName}" - "Too many DN formats to display, see model documentation for all possible parents of [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)." ui_locations: - "Tenants -> Application Profiles -> Application EPGs -> Contracts" - "Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts" - - "... add all locations ..." + - "Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts" + - "Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts" sub_category: "Application Management" fvRsProv: @@ -281,14 +289,16 @@ fvRsProv: - "fvAEPg" - "fvESg" dn_formats: - - "... add all relevant DNs ..." - "uni/tn-{name}/ap-{name}/epg-{name}/rsprov-{tnVzBrCPName}" - "uni/tn-{name}/ap-{name}/esg-{name}/rsprov-{tnVzBrCPName}" + - "uni/tn-{name}/out-{name}/instP-{name}/rsprov-{tnVzBrCPName}" + - "uni/tn-{name}/l2out-{name}/instP-{name}/rsprov-{tnVzBrCPName}" - "Too many DN formats to display, see model documentation for all possible parents of [fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)." ui_locations: - "Tenants -> Application Profiles -> Application EPGs -> Contracts" - "Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts" - - "... add all locations ..." + - "Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts" + - "Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts" sub_category: "Application Management" fvRsConsIf: @@ -297,14 +307,16 @@ fvRsConsIf: - "fvAEPg" - "fvESg" dn_formats: - - "... add all relevant DNs ..." - "uni/tn-{name}/ap-{name}/epg-{name}/rsconsIf-{tnVzCPIfName}" - "uni/tn-{name}/ap-{name}/esg-{name}/rsconsIf-{tnVzCPIfName}" + - "uni/tn-{name}/out-{name}/instP-{name}/rsprov-{tnVzBrCPName}" + - "uni/tn-{name}/l2out-{name}/instP-{name}/rsprov-{tnVzBrCPName}" - "Too many DN formats to display, see model documentation for all possible parents of [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)." ui_locations: - "Tenants -> Application Profiles -> Application EPGs -> Contracts" - "Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts" - - "... add all locations ..." + - "Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts" + - "Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts" sub_category: "Application Management" fvRsProtBy: @@ -312,12 +324,14 @@ fvRsProtBy: example_classes: - "fvAEPg" dn_formats: - - "... add all relevant DNs ..." - "uni/tn-{name}/ap-{name}/epg-{name}/rsprotBy-{tnVzTabooName}" + - "uni/tn-{name}/out-{name}/instP-{name}/rsprov-{tnVzBrCPName}" + - "uni/tn-{name}/l2out-{name}/instP-{name}/rsprov-{tnVzBrCPName}" - "Too many DN formats to display, see model documentation for all possible parents of [fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview)." ui_locations: - "Tenants -> Application Profiles -> Application EPGs -> Contracts" - - "... add all locations ..." + - "Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts" + - "Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts" sub_category: "Application Management" fvRsIntraEpg: @@ -326,14 +340,14 @@ fvRsIntraEpg: - "fvAEPg" - "fvESg" dn_formats: - - "... add all relevant DNs ..." - "uni/tn-{name}/ap-{name}/epg-{name}/rsintraEpg-{tnVzBrCPName}" - "uni/tn-{name}/ap-{name}/esg-{name}/rsintraEpg-{tnVzBrCPName}" + - "uni/tn-{name}/out-{name}/instP-{name}/rsprov-{tnVzBrCPName}" - "Too many DN formats to display, see model documentation for all possible parents of [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)." ui_locations: - "Tenants -> Application Profiles -> Application EPGs -> Contracts" - "Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts" - - "... add all locations ..." + - "Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts" sub_category: "Application Management" fvRsSecInherited: @@ -342,14 +356,12 @@ fvRsSecInherited: - "fvAEPg" - "fvESg" dn_formats: - - "... add all relevant DNs ..." - "uni/tn-{name}/ap-{name}/epg-{name}/rssecInherited-[{tDn}]" - "uni/tn-{name}/ap-{name}/esg-{name}/rssecInherited-[{tDn}]" - "Too many DN formats to display, see model documentation for all possible parents of [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)." ui_locations: - "Tenants -> Application Profiles -> Application EPGs" - "Tenants -> Application Profiles -> Endpoint Security Groups" - - "... add all locations ..." sub_category: "Application Management" vzBrCP: From 254fd190b88e8d6c8a08709c806ccadf6efbd59d Mon Sep 17 00:00:00 2001 From: akinross Date: Thu, 30 May 2024 10:31:26 +0200 Subject: [PATCH 05/22] [ignore] Documentation updates for relational classes that can point to multiple classes --- docs/data-sources/endpoint_security_group.md | 2 +- docs/resources/endpoint_security_group.md | 2 +- gen/definitions/classes.yaml | 3 ++ gen/generator.go | 34 ++++++++++++++++---- gen/templates/datasource.md.tmpl | 6 ++-- gen/templates/resource.md.tmpl | 6 ++-- 6 files changed, 39 insertions(+), 14 deletions(-) diff --git a/docs/data-sources/endpoint_security_group.md b/docs/data-sources/endpoint_security_group.md index 7aabe3256..237dd82e2 100644 --- a/docs/data-sources/endpoint_security_group.md +++ b/docs/data-sources/endpoint_security_group.md @@ -81,7 +81,7 @@ data "aci_endpoint_security_group" "example_application_profile" { * `annotation` (annotation) - (string) The annotation of the Relation To VRF object. * `vrf_name` (tnFvCtxName) - (string) Name. -* `relation_to_contract_masters` - (list) A list of Relation To Contract Masters (ACI object [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) pointing to (ACI Object [fvEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvEPg/overview)). This attribute is supported in ACI versions: 2.3(1e) and later. +* `relation_to_contract_masters` - (list) A list of Relation To Contract Masters (ACI object [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) pointing to Endpoint Security Group (ACI Object [fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)). This attribute is supported in ACI versions: 2.3(1e) and later. * `annotation` (annotation) - (string) The annotation of the Relation To Contract Master object. * `target_dn` (tDn) - (string) The distinguished name of the target. diff --git a/docs/resources/endpoint_security_group.md b/docs/resources/endpoint_security_group.md index eb03df03e..34af3c726 100644 --- a/docs/resources/endpoint_security_group.md +++ b/docs/resources/endpoint_security_group.md @@ -214,7 +214,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp - Default: `orchestrator:terraform` * `vrf_name` (tnFvCtxName) - (string) Name. -* `relation_to_contract_masters` - (list) A list of Relation To Contract Masters (ACI object [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) pointing to (ACI Object [fvEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvEPg/overview)) which can be configured using the [aci_](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/) resource. This attribute is supported in ACI versions: 2.3(1e) and later. +* `relation_to_contract_masters` - (list) A list of Relation To Contract Masters (ACI object [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) pointing to Endpoint Security Group (ACI Object [fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) which can be configured using the [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) resource. This attribute is supported in ACI versions: 2.3(1e) and later. #### Required #### diff --git a/gen/definitions/classes.yaml b/gen/definitions/classes.yaml index 3eea6aff2..ee43baf2f 100644 --- a/gen/definitions/classes.yaml +++ b/gen/definitions/classes.yaml @@ -355,6 +355,9 @@ fvRsSecInherited: example_classes: - "fvAEPg" - "fvESg" + relationship_classes: + - "fvAEPg" + - "fvESg" dn_formats: - "uni/tn-{name}/ap-{name}/epg-{name}/rssecInherited-[{tDn}]" - "uni/tn-{name}/ap-{name}/esg-{name}/rssecInherited-[{tDn}]" diff --git a/gen/generator.go b/gen/generator.go index 6130f83ec..eca6f5f32 100644 --- a/gen/generator.go +++ b/gen/generator.go @@ -705,7 +705,10 @@ func main() { // All classmodels have been read, thus now the model, child and relational resources names can be set // When done before additional files would need to be opened and read which would slow down the generation process model.ResourceName = GetResourceName(model.PkgName, definitions) - model.RelationshipResourceName = GetResourceName(model.RelationshipClass, definitions) + + for _, relationshipClass := range model.RelationshipClass { + model.RelationshipResourceName = append(model.RelationshipResourceName, GetResourceName(relationshipClass, definitions)) + } childMap := make(map[string]Model, 0) for childName, childModel := range model.Children { childModel.ChildResourceName = GetResourceName(childModel.PkgName, definitions) @@ -716,7 +719,9 @@ func main() { } else { childModel.ResourceName = childModel.ChildResourceName } - childModel.RelationshipResourceName = GetResourceName(childModel.RelationshipClass, definitions) + for _, relationshipClass := range childModel.RelationshipClass { + childModel.RelationshipResourceName = append(childModel.RelationshipResourceName, GetResourceName(relationshipClass, definitions)) + } childMap[childName] = childModel } model.Children = childMap @@ -794,8 +799,8 @@ type Model struct { ExampleResource string ExampleResourceFull string SubCategory string - RelationshipClass string - RelationshipResourceName string + RelationshipClass []string + RelationshipResourceName []string Versions string ChildClasses []string ContainedBy []string @@ -928,6 +933,7 @@ func (m *Model) setClassModel(metaPath string, child bool, definitions Definitio for _, classDetails := range classInfo { m.SetClassLabel(classDetails, child) m.SetClassName(classDetails) + m.SetRelationshipClasses(definitions) m.SetClassRnFormat(classDetails) m.SetClassDnFormats(classDetails) m.SetClassIdentifiers(classDetails) @@ -1052,12 +1058,28 @@ func (m *Model) SetClassName(classDetails interface{}) { func (m *Model) SetClassRnFormat(classDetails interface{}) { m.GetOverwriteRnFormat(classDetails.(map[string]interface{})["rnFormat"].(string)) - if strings.HasPrefix(m.RnFormat, "rs") { + if strings.HasPrefix(m.RnFormat, "rs") && len(m.RelationshipClass) == 0 { toMo := classDetails.(map[string]interface{})["relationInfo"].(map[string]interface{})["toMo"].(string) - m.RelationshipClass = strings.Replace(toMo, ":", "", 1) + m.RelationshipClass = []string{strings.Replace(toMo, ":", "", 1)} } } +func (m *Model) SetRelationshipClasses(definitions Definitions) { + overwriteExampleClasses := []interface{}{} + if v, ok := definitions.Classes[m.PkgName]; ok { + for key, value := range v.(map[interface{}]interface{}) { + if key.(string) == "relationship_classes" { + overwriteExampleClasses = value.([]interface{}) + } + } + } + + for _, className := range overwriteExampleClasses { + m.RelationshipClass = append(m.RelationshipClass, className.(string)) + } + +} + func (m *Model) SetClassDnFormats(classDetails interface{}) { for _, dnFormat := range GetOverwriteDnFormats(classDetails.(map[string]interface{})["dnFormats"].([]interface{}), m.PkgName, m.Definitions) { m.DnFormats = append(m.DnFormats, dnFormat.(string)) diff --git a/gen/templates/datasource.md.tmpl b/gen/templates/datasource.md.tmpl index e6925464d..796ddac2d 100644 --- a/gen/templates/datasource.md.tmpl +++ b/gen/templates/datasource.md.tmpl @@ -78,9 +78,9 @@ Data source for {{.ResourceNameAsDescription}} {{- end}} {{- end}} {{- end}} -{{ range .Children }}{{$childVersion := .Versions}} - {{- if ne .RelationshipClass ""}} -* `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}) pointing to {{getResourceNameAsDescription .RelationshipResourceName $.Definitions}} (ACI Object {{getDevnetDocForClass .RelationshipClass}}).{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} +{{ range .Children }}{{$childVersion := .Versions}}{{$RelationshipClass := .RelationshipClass}}{{$length := len .RelationshipClass}} + {{- if ge $length 1}} +* `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}) pointing to {{range $index, $value := .RelationshipResourceName}}{{- if or (eq $length 1) (eq $.PkgName (index $RelationshipClass $index))}}{{getResourceNameAsDescription $value $.Definitions}} (ACI Object {{getDevnetDocForClass (index $RelationshipClass $index)}}){{end}}{{end}}.{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} {{- else}} * `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}).{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} {{- end}} diff --git a/gen/templates/resource.md.tmpl b/gen/templates/resource.md.tmpl index 2673f527a..411240d60 100644 --- a/gen/templates/resource.md.tmpl +++ b/gen/templates/resource.md.tmpl @@ -118,9 +118,9 @@ All examples for the {{.ResourceNameAsDescription}} resource can be found in the {{- end}} {{- end}} {{- end}} -{{ range .Children }}{{$childVersion := .Versions}} - {{- if ne .RelationshipClass ""}} -* `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}) pointing to {{getResourceNameAsDescription .RelationshipResourceName $.Definitions}} (ACI Object {{getDevnetDocForClass .RelationshipClass}}) which can be configured using the [aci_{{.RelationshipResourceName}}](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/{{.RelationshipResourceName}}) resource.{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} +{{ range .Children }}{{$childVersion := .Versions}}{{$RelationshipClass := .RelationshipClass}}{{$length := len .RelationshipClass}} + {{- if ge $length 1}} +* `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}) pointing to {{range $index, $value := .RelationshipResourceName}}{{- if or (eq $length 1) (eq $.PkgName (index $RelationshipClass $index))}}{{getResourceNameAsDescription $value $.Definitions}} (ACI Object {{getDevnetDocForClass (index $RelationshipClass $index)}}) which can be configured using the [aci_{{($value)}}](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/{{($value)}}) resource{{end}}{{end}}.{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} {{- else}} * `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}). {{getResourceNameAsDescription .ResourceName $.Definitions}} can also be configured using a separate [aci_{{.ResourceNameDocReference}}](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/{{.ResourceNameDocReference}}) resource.{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} {{- end}} From a0a3a277b268af283d72d54eecc498ef451fc8b2 Mon Sep 17 00:00:00 2001 From: akinross Date: Thu, 30 May 2024 10:44:09 +0200 Subject: [PATCH 06/22] [ignore] Documentation updates for children that do not have required attributes --- docs/resources/endpoint_security_group.md | 2 -- docs/resources/netflow_monitor_policy.md | 2 -- gen/generator.go | 10 ++++++++++ gen/templates/resource.md.tmpl | 4 ++-- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/resources/endpoint_security_group.md b/docs/resources/endpoint_security_group.md index 34af3c726..46b15d69e 100644 --- a/docs/resources/endpoint_security_group.md +++ b/docs/resources/endpoint_security_group.md @@ -205,8 +205,6 @@ All examples for the Endpoint Security Group resource can be found in the [examp * `relation_to_vrf` - (list) A list of Relation To VRF (ACI object [fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) pointing to VRF (ACI Object [fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)) which can be configured using the [aci_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf) resource. - #### Required #### - #### Optional #### diff --git a/docs/resources/netflow_monitor_policy.md b/docs/resources/netflow_monitor_policy.md index 668497e62..bacd4a8ef 100644 --- a/docs/resources/netflow_monitor_policy.md +++ b/docs/resources/netflow_monitor_policy.md @@ -126,8 +126,6 @@ All examples for the Netflow Monitor Policy resource can be found in the [exampl * `relation_to_netflow_record` - (list) A list of Relation To Netflow Record (ACI object [netflowRsMonitorToRecord](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/netflowRsMonitorToRecord/overview)) pointing to Netflow Record Policy (ACI Object [netflowRecordPol](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/netflowRecordPol/overview)) which can be configured using the [aci_netflow_record_policy](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/netflow_record_policy) resource. - #### Required #### - #### Optional #### diff --git a/gen/generator.go b/gen/generator.go index eca6f5f32..331ff9452 100644 --- a/gen/generator.go +++ b/gen/generator.go @@ -118,6 +118,16 @@ var templateFuncs = template.FuncMap{ "isNewNamedClassAttribute": IsNewNamedClassAttribute, "getChildAttributesFromBlocks": GetChildAttributesFromBlocks, "getNewChildAttributes": GetNewChildAttributes, + "containsRequired": ContainsRequired, +} + +func ContainsRequired(properties map[string]Property) bool { + for _, property := range properties { + if property.IsRequired { + return true + } + } + return false } func Replace(oldValue, newValue, inputString string) string { diff --git a/gen/templates/resource.md.tmpl b/gen/templates/resource.md.tmpl index 411240d60..adc5a58e6 100644 --- a/gen/templates/resource.md.tmpl +++ b/gen/templates/resource.md.tmpl @@ -124,7 +124,7 @@ All examples for the {{.ResourceNameAsDescription}} resource can be found in the {{- else}} * `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}). {{getResourceNameAsDescription .ResourceName $.Definitions}} can also be configured using a separate [aci_{{.ResourceNameDocReference}}](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/{{.ResourceNameDocReference}}) resource.{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} {{- end}} - + {{ if containsRequired .Properties}} #### Required #### {{ range .Properties}} {{- if or .IsNaming .IsRequired}} @@ -134,7 +134,7 @@ All examples for the {{.ResourceNameAsDescription}} resource can be found in the * `{{- overwriteProperty .PkgName .SnakeCaseName $.Definitions}}` ({{- .PropertyName}}) - (string) {{.Comment}}{{if ne .NamedPropertyClass ""}}{{$RName := getResourceName .NamedPropertyClass $.Definitions}} This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/{{$RName}}) with `aci_{{$RName}}.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/{{$RName}}) with `data.aci_{{$RName}}.example.name`.{{end}}{{if ne $childVersion .Versions}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} {{- end}} {{- end}} - {{- end}} + {{- end}}{{- end}} {{- if .HasOptionalProperties}} #### Optional #### From 71f687208a1441988f6d82ea6650fd02550481bc Mon Sep 17 00:00:00 2001 From: akinross Date: Thu, 30 May 2024 11:08:50 +0200 Subject: [PATCH 07/22] [ignore] Restore intent property for out_of_band_contract --- docs/data-sources/out_of_band_contract.md | 1 + docs/resources/out_of_band_contract.md | 4 ++++ .../resource-all-attributes.tf | 1 + gen/definitions/properties.yaml | 9 +++++++-- gen/testvars/vzOOBBrCP.yaml | 2 ++ .../data_source_aci_out_of_band_contract.go | 4 ++++ ...ata_source_aci_out_of_band_contract_test.go | 1 + .../resource_aci_out_of_band_contract.go | 18 ++++++++++++++++++ .../resource_aci_out_of_band_contract_test.go | 11 +++++++++++ 9 files changed, 49 insertions(+), 2 deletions(-) diff --git a/docs/data-sources/out_of_band_contract.md b/docs/data-sources/out_of_band_contract.md index c180a0867..5265a5b02 100644 --- a/docs/data-sources/out_of_band_contract.md +++ b/docs/data-sources/out_of_band_contract.md @@ -47,6 +47,7 @@ data "aci_out_of_band_contract" "example" { * `id` - (string) The distinguished name (DN) of the Out Of Band Contract object. * `annotation` (annotation) - (string) The annotation of the Out Of Band Contract object. * `description` (descr) - (string) The description of the Out Of Band Contract object. +* `intent` (intent) - (string) The Install Rules or Estimate Number of Rules. * `name_alias` (nameAlias) - (string) The name alias of the Out Of Band Contract object. * `owner_key` (ownerKey) - (string) The key for enabling clients to own their data for entity correlation. * `owner_tag` (ownerTag) - (string) A tag for enabling clients to add their own data. For example, to indicate who created this object. diff --git a/docs/resources/out_of_band_contract.md b/docs/resources/out_of_band_contract.md index 5a5687984..2f04bbf76 100644 --- a/docs/resources/out_of_band_contract.md +++ b/docs/resources/out_of_band_contract.md @@ -48,6 +48,7 @@ The configuration snippet below shows all possible attributes of the Out Of Band resource "aci_out_of_band_contract" "full_example" { annotation = "annotation" description = "description" + intent = "estimate_add" name = "test_name" name_alias = "name_alias" owner_key = "owner_key" @@ -88,6 +89,9 @@ All examples for the Out Of Band Contract resource can be found in the [examples * `annotation` (annotation) - (string) The annotation of the Out Of Band Contract object. - Default: `orchestrator:terraform` * `description` (descr) - (string) The description of the Out Of Band Contract object. +* `intent` (intent) - (string) The Install Rules or Estimate Number of Rules. + - Default: `install` + - Valid Values: `estimate_add`, `estimate_delete`, `install`. * `name_alias` (nameAlias) - (string) The name alias of the Out Of Band Contract object. * `owner_key` (ownerKey) - (string) The key for enabling clients to own their data for entity correlation. * `owner_tag` (ownerTag) - (string) A tag for enabling clients to add their own data. For example, to indicate who created this object. diff --git a/examples/resources/aci_out_of_band_contract/resource-all-attributes.tf b/examples/resources/aci_out_of_band_contract/resource-all-attributes.tf index f84fa1fbc..293499941 100644 --- a/examples/resources/aci_out_of_band_contract/resource-all-attributes.tf +++ b/examples/resources/aci_out_of_band_contract/resource-all-attributes.tf @@ -2,6 +2,7 @@ resource "aci_out_of_band_contract" "full_example" { annotation = "annotation" description = "description" + intent = "estimate_add" name = "test_name" name_alias = "name_alias" owner_key = "owner_key" diff --git a/gen/definitions/properties.yaml b/gen/definitions/properties.yaml index be0c3b8b7..729c9e3a9 100644 --- a/gen/definitions/properties.yaml +++ b/gen/definitions/properties.yaml @@ -27,7 +27,6 @@ global: Sid: "SR-MPLS Segment ID" ignores: - "userdom" - - "intent" l3extRsRedistributePol: overwrites: @@ -53,6 +52,7 @@ vzOOBBrCP: documentation: prio: "The priority of the %s object." targetDscp: "The target DSCP value of the %s object." + intent: "The Install Rules or Estimate Number of Rules" mgmtSubnet: test_values: @@ -345,6 +345,8 @@ fvRsScope: parent_dependency: "fvAp" fvRsCons: + ignores: + - "intent" parents: - class_name: "fvESg" parent_dependency: "fvAp" @@ -352,6 +354,8 @@ fvRsCons: parent_dependency: "fvAp" fvRsProv: + ignores: + - "intent" parents: - class_name: "fvESg" parent_dependency: "fvAp" @@ -373,6 +377,8 @@ fvRsProtBy: parent_dependency: "fvAp" fvRsIntraEpg: + ignores: + - "intent" parents: - class_name: "fvESg" parent_dependency: "fvAp" @@ -389,7 +395,6 @@ fvRsSecInherited: parent_dependency: "fvAp" target_classes: - "fvESg" - targets: - class_name: "fvESg" parent_dependency: "fvAp" diff --git a/gen/testvars/vzOOBBrCP.yaml b/gen/testvars/vzOOBBrCP.yaml index e250f6683..2c6696909 100644 --- a/gen/testvars/vzOOBBrCP.yaml +++ b/gen/testvars/vzOOBBrCP.yaml @@ -5,6 +5,7 @@ default: annotation: "orchestrator:terraform" description: "" + intent: "install" name_alias: "" owner_key: "" owner_tag: "" @@ -24,6 +25,7 @@ resource_required: all: annotation: "annotation" description: "description" + intent: "estimate_add" name_alias: "name_alias" owner_key: "owner_key" owner_tag: "owner_tag" diff --git a/internal/provider/data_source_aci_out_of_band_contract.go b/internal/provider/data_source_aci_out_of_band_contract.go index 09eb6242f..28c567b69 100644 --- a/internal/provider/data_source_aci_out_of_band_contract.go +++ b/internal/provider/data_source_aci_out_of_band_contract.go @@ -52,6 +52,10 @@ func (d *VzOOBBrCPDataSource) Schema(ctx context.Context, req datasource.SchemaR Computed: true, MarkdownDescription: `The description of the Out Of Band Contract object.`, }, + "intent": schema.StringAttribute{ + Computed: true, + MarkdownDescription: `The Install Rules or Estimate Number of Rules.`, + }, "name": schema.StringAttribute{ Required: true, MarkdownDescription: `The name of the Out Of Band Contract object.`, diff --git a/internal/provider/data_source_aci_out_of_band_contract_test.go b/internal/provider/data_source_aci_out_of_band_contract_test.go index 18ebea700..3c8a3d2a1 100644 --- a/internal/provider/data_source_aci_out_of_band_contract_test.go +++ b/internal/provider/data_source_aci_out_of_band_contract_test.go @@ -22,6 +22,7 @@ func TestAccDataSourceVzOOBBrCP(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.aci_out_of_band_contract.test", "annotation", "annotation"), resource.TestCheckResourceAttr("data.aci_out_of_band_contract.test", "description", "description"), + resource.TestCheckResourceAttr("data.aci_out_of_band_contract.test", "intent", "estimate_add"), resource.TestCheckResourceAttr("data.aci_out_of_band_contract.test", "name_alias", "name_alias"), resource.TestCheckResourceAttr("data.aci_out_of_band_contract.test", "owner_key", "owner_key"), resource.TestCheckResourceAttr("data.aci_out_of_band_contract.test", "owner_tag", "owner_tag"), diff --git a/internal/provider/resource_aci_out_of_band_contract.go b/internal/provider/resource_aci_out_of_band_contract.go index 0656ca1dc..c0bb85548 100644 --- a/internal/provider/resource_aci_out_of_band_contract.go +++ b/internal/provider/resource_aci_out_of_band_contract.go @@ -46,6 +46,7 @@ type VzOOBBrCPResourceModel struct { Id types.String `tfsdk:"id"` Annotation types.String `tfsdk:"annotation"` Descr types.String `tfsdk:"description"` + Intent types.String `tfsdk:"intent"` Name types.String `tfsdk:"name"` NameAlias types.String `tfsdk:"name_alias"` OwnerKey types.String `tfsdk:"owner_key"` @@ -110,6 +111,17 @@ func (r *VzOOBBrCPResource) Schema(ctx context.Context, req resource.SchemaReque }, MarkdownDescription: `The description of the Out Of Band Contract object.`, }, + "intent": schema.StringAttribute{ + Optional: true, + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + Validators: []validator.String{ + stringvalidator.OneOf("estimate_add", "estimate_delete", "install"), + }, + MarkdownDescription: `The Install Rules or Estimate Number of Rules.`, + }, "name": schema.StringAttribute{ Required: true, PlanModifiers: []planmodifier.String{ @@ -419,6 +431,9 @@ func getAndSetVzOOBBrCPAttributes(ctx context.Context, diags *diag.Diagnostics, if attributeName == "descr" { data.Descr = basetypes.NewStringValue(attributeValue.(string)) } + if attributeName == "intent" { + data.Intent = basetypes.NewStringValue(attributeValue.(string)) + } if attributeName == "name" { data.Name = basetypes.NewStringValue(attributeValue.(string)) } @@ -609,6 +624,9 @@ func getVzOOBBrCPCreateJsonPayload(ctx context.Context, diags *diag.Diagnostics, if !data.Descr.IsNull() && !data.Descr.IsUnknown() { payloadMap["attributes"].(map[string]string)["descr"] = data.Descr.ValueString() } + if !data.Intent.IsNull() && !data.Intent.IsUnknown() { + payloadMap["attributes"].(map[string]string)["intent"] = data.Intent.ValueString() + } if !data.Name.IsNull() && !data.Name.IsUnknown() { payloadMap["attributes"].(map[string]string)["name"] = data.Name.ValueString() } diff --git a/internal/provider/resource_aci_out_of_band_contract_test.go b/internal/provider/resource_aci_out_of_band_contract_test.go index 3d33b9b79..baabe7f5c 100644 --- a/internal/provider/resource_aci_out_of_band_contract_test.go +++ b/internal/provider/resource_aci_out_of_band_contract_test.go @@ -23,6 +23,7 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name", "test_name"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), + resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -38,6 +39,7 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name", "test_name"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "annotation"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", "description"), + resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "estimate_add"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", "name_alias"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", "owner_key"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", "owner_tag"), @@ -53,6 +55,7 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name", "test_name"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", "description"), + resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "estimate_add"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", "name_alias"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", "owner_key"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", "owner_tag"), @@ -68,6 +71,7 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name", "test_name"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), + resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -85,6 +89,7 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name", "test_name"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), + resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -99,6 +104,7 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), + resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -123,6 +129,7 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), + resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -147,6 +154,7 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), + resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -167,6 +175,7 @@ func TestAccResourceVzOOBBrCP(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "annotation", "orchestrator:terraform"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "description", ""), + resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "intent", "install"), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "name_alias", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_key", ""), resource.TestCheckResourceAttr("aci_out_of_band_contract.test", "owner_tag", ""), @@ -192,6 +201,7 @@ resource "aci_out_of_band_contract" "test" { name = "test_name" annotation = "annotation" description = "description" + intent = "estimate_add" name_alias = "name_alias" owner_key = "owner_key" owner_tag = "owner_tag" @@ -206,6 +216,7 @@ resource "aci_out_of_band_contract" "test" { name = "test_name" annotation = "orchestrator:terraform" description = "" + intent = "install" name_alias = "" owner_key = "" owner_tag = "" From 47b61c13fc887c55d8600223212398bc68b80c99 Mon Sep 17 00:00:00 2001 From: akinross Date: Thu, 30 May 2024 19:22:16 +0200 Subject: [PATCH 08/22] [ignore] fix class include function and fix excluding unneeded testvars headers --- gen/generator.go | 2 -- gen/templates/testvars.yaml.tmpl | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/gen/generator.go b/gen/generator.go index 331ff9452..f0e200ae9 100644 --- a/gen/generator.go +++ b/gen/generator.go @@ -1148,8 +1148,6 @@ func (m *Model) SetClassInclude() { for key, value := range classDetails.(map[interface{}]interface{}) { if key.(string) == "include" { m.Include = value.(bool) - } else { - m.Include = false } } } diff --git a/gen/templates/testvars.yaml.tmpl b/gen/templates/testvars.yaml.tmpl index 10ae297a3..da62a227e 100644 --- a/gen/templates/testvars.yaml.tmpl +++ b/gen/templates/testvars.yaml.tmpl @@ -30,7 +30,7 @@ default: {{- end}} {{- end}} {{- end}} - +{{ if .HasNaming }} datasource_non_existing: {{- range .Properties}}{{$testValue := createNonExistingValue .SnakeCaseName}}{{$overwritePropertyName := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} {{- if .IsNaming }} @@ -51,6 +51,7 @@ resource_required: {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}}: "{{overwritePropertyValue .PkgName $overwritePropertyName $testValue "resource_required" 0 $.Definitions}}" {{- end}} {{- end}} +{{- end }} all: {{- range .Properties}}{{$overwritePropertyName := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} From 206ced42b73f3da6bf736831daba9f7f2727103a Mon Sep 17 00:00:00 2001 From: akinross Date: Tue, 18 Jun 2024 17:39:07 +0200 Subject: [PATCH 09/22] [ignore] Remove legacy unused exclude --- gen/definitions/classes.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/gen/definitions/classes.yaml b/gen/definitions/classes.yaml index ee43baf2f..6224c2ed6 100644 --- a/gen/definitions/classes.yaml +++ b/gen/definitions/classes.yaml @@ -23,7 +23,6 @@ vzCPIf: rtctrlProfile: resource_name: "route_control_profile" rn_format: "/prof-{name}" - exclude: true vzOOBBrCP: resource_name: "out_of_band_contract" From ff182ae2099e01baf7c82f0acb81fc85c0ca00ed Mon Sep 17 00:00:00 2001 From: akinross Date: Tue, 18 Jun 2024 19:40:30 +0200 Subject: [PATCH 10/22] [ignore] Rename contract_interface ti existing imported_contract resource --- docs/data-sources/annotation.md | 2 +- docs/data-sources/endpoint_security_group.md | 6 +- ...ce.md => relation_to_imported_contract.md} | 28 +- docs/data-sources/tag.md | 2 +- docs/resources/annotation.md | 2 +- docs/resources/endpoint_security_group.md | 14 +- ...ce.md => relation_to_imported_contract.md} | 62 +-- docs/resources/tag.md | 2 +- .../data-source.tf | 10 - .../data-source.tf | 10 + .../provider.tf | 0 .../resource-all-attributes.tf | 8 +- .../resource-all-attributes.tf | 38 -- .../resource.tf | 10 - .../provider.tf | 0 .../resource-all-attributes.tf | 38 ++ .../resource.tf | 10 + gen/definitions/classes.yaml | 10 +- gen/generator.go | 11 + gen/testvars/fvESg.yaml | 6 +- gen/testvars/fvRsConsIf.yaml | 6 +- ...data_source_aci_endpoint_security_group.go | 10 +- ...urce_aci_relation_to_imported_contract.go} | 32 +- ...aci_relation_to_imported_contract_test.go} | 40 +- .../resource_aci_endpoint_security_group.go | 30 +- ...source_aci_endpoint_security_group_test.go | 86 ++-- ...ion_to_consumed_contract_interface_test.go | 452 ------------------ ...urce_aci_relation_to_imported_contract.go} | 54 +-- ..._aci_relation_to_imported_contract_test.go | 452 ++++++++++++++++++ 29 files changed, 721 insertions(+), 710 deletions(-) rename docs/data-sources/{relation_to_consumed_contract_interface.md => relation_to_imported_contract.md} (81%) rename docs/resources/{relation_to_consumed_contract_interface.md => relation_to_imported_contract.md} (71%) delete mode 100644 examples/data-sources/aci_relation_to_consumed_contract_interface/data-source.tf create mode 100644 examples/data-sources/aci_relation_to_imported_contract/data-source.tf rename examples/data-sources/{aci_relation_to_consumed_contract_interface => aci_relation_to_imported_contract}/provider.tf (100%) delete mode 100644 examples/resources/aci_relation_to_consumed_contract_interface/resource-all-attributes.tf delete mode 100644 examples/resources/aci_relation_to_consumed_contract_interface/resource.tf rename examples/resources/{aci_relation_to_consumed_contract_interface => aci_relation_to_imported_contract}/provider.tf (100%) create mode 100644 examples/resources/aci_relation_to_imported_contract/resource-all-attributes.tf create mode 100644 examples/resources/aci_relation_to_imported_contract/resource.tf rename internal/provider/{data_source_aci_relation_to_consumed_contract_interface.go => data_source_aci_relation_to_imported_contract.go} (79%) rename internal/provider/{data_source_aci_relation_to_consumed_contract_interface_test.go => data_source_aci_relation_to_imported_contract_test.go} (56%) delete mode 100644 internal/provider/resource_aci_relation_to_consumed_contract_interface_test.go rename internal/provider/{resource_aci_relation_to_consumed_contract_interface.go => resource_aci_relation_to_imported_contract.go} (91%) create mode 100644 internal/provider/resource_aci_relation_to_imported_contract_test.go diff --git a/docs/data-sources/annotation.md b/docs/data-sources/annotation.md index 42d39fc67..b256676d4 100644 --- a/docs/data-sources/annotation.md +++ b/docs/data-sources/annotation.md @@ -63,7 +63,7 @@ data "aci_annotation" "example_application_epg" { - [aci_vrf_fallback_route_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group) ([fvFBRGroup](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRGroup/overview)) - [aci_vrf_fallback_route_group_member](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group_member) ([fvFBRMember](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRMember/overview)) - [aci_relation_to_consumed_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract) ([fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) - - [aci_relation_to_consumed_contract_interface](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract_interface) ([fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) + - [aci_relation_to_imported_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_imported_contract) ([fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) - [aci_relation_to_intra_epg_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_intra_epg_contract) ([fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) - [aci_relation_to_taboo_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_taboo_contract) ([fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview)) - [aci_relation_to_provided_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_provided_contract) ([fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)) diff --git a/docs/data-sources/endpoint_security_group.md b/docs/data-sources/endpoint_security_group.md index 237dd82e2..9a9ba6af6 100644 --- a/docs/data-sources/endpoint_security_group.md +++ b/docs/data-sources/endpoint_security_group.md @@ -62,10 +62,10 @@ data "aci_endpoint_security_group" "example_application_profile" { * `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. * `contract_name` (tnVzBrCPName) - (string) The consumer contract name. -* `relation_to_consumed_contract_interfaces` - (list) A list of Relation To Consumed Contract Interfaces (ACI object [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) pointing to Contract Interface (ACI Object [vzCPIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzCPIf/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. - * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract Interface object. +* `relation_to_imported_contracts` - (list) A list of Relation To Imported Contracts (ACI object [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) pointing to Imported Contract (ACI Object [vzCPIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzCPIf/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. + * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. * `priority` (prio) - (string) The contract interface priority. - * `contract_interface_name` (tnVzCPIfName) - (string) The contract interface name. + * `imported_contract_name` (tnVzCPIfName) - (string) The contract interface name. * `relation_to_intra_epg_contracts` - (list) A list of Relation To Intra Epg Contracts (ACI object [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 3.0(1k) and later. * `annotation` (annotation) - (string) The annotation of the Relation To Intra Epg Contract object. diff --git a/docs/data-sources/relation_to_consumed_contract_interface.md b/docs/data-sources/relation_to_imported_contract.md similarity index 81% rename from docs/data-sources/relation_to_consumed_contract_interface.md rename to docs/data-sources/relation_to_imported_contract.md index dcc5c405b..05f95b0c7 100644 --- a/docs/data-sources/relation_to_consumed_contract_interface.md +++ b/docs/data-sources/relation_to_imported_contract.md @@ -4,15 +4,15 @@ # More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). subcategory: "Application Management" layout: "aci" -page_title: "ACI: aci_relation_to_consumed_contract_interface" -sidebar_current: "docs-aci-data-source-aci_relation_to_consumed_contract_interface" +page_title: "ACI: aci_relation_to_imported_contract" +sidebar_current: "docs-aci-data-source-aci_relation_to_imported_contract" description: |- - Data source for Relation To Consumed Contract Interface + Data source for Relation To Imported Contract --- -# aci_relation_to_consumed_contract_interface # +# aci_relation_to_imported_contract # -Data source for Relation To Consumed Contract Interface +Data source for Relation To Imported Contract ## API Information ## @@ -39,14 +39,14 @@ Data source for Relation To Consumed Contract Interface ```hcl -data "aci_relation_to_consumed_contract_interface" "example_application_epg" { - parent_dn = aci_application_epg.example.id - contract_interface_name = aci_contract_interface.example.name +data "aci_relation_to_imported_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + imported_contract_name = aci_imported_contract.example.name } -data "aci_relation_to_consumed_contract_interface" "example_endpoint_security_group" { - parent_dn = aci_endpoint_security_group.example.id - contract_interface_name = aci_contract_interface.example.name +data "aci_relation_to_imported_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + imported_contract_name = aci_imported_contract.example.name } ``` @@ -78,12 +78,12 @@ data "aci_relation_to_consumed_contract_interface" "example_endpoint_security_gr - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) -* `contract_interface_name` (tnVzCPIfName) - (string) The contract interface name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract_interface) with `aci_contract_interface.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract_interface) with `data.aci_contract_interface.example.name`. +* `imported_contract_name` (tnVzCPIfName) - (string) The contract interface name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/imported_contract) with `aci_imported_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/imported_contract) with `data.aci_imported_contract.example.name`. ### Read-Only ### -* `id` - (string) The distinguished name (DN) of the Relation To Consumed Contract Interface object. -* `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract Interface object. +* `id` - (string) The distinguished name (DN) of the Relation To Imported Contract object. +* `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. * `priority` (prio) - (string) The contract interface priority. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. diff --git a/docs/data-sources/tag.md b/docs/data-sources/tag.md index 2dc107e64..b1c3020c6 100644 --- a/docs/data-sources/tag.md +++ b/docs/data-sources/tag.md @@ -63,7 +63,7 @@ data "aci_tag" "example_application_epg" { - [aci_vrf_fallback_route_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group) ([fvFBRGroup](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRGroup/overview)) - [aci_vrf_fallback_route_group_member](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group_member) ([fvFBRMember](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRMember/overview)) - [aci_relation_to_consumed_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract) ([fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) - - [aci_relation_to_consumed_contract_interface](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract_interface) ([fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) + - [aci_relation_to_imported_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_imported_contract) ([fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) - [aci_relation_to_intra_epg_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_intra_epg_contract) ([fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) - [aci_relation_to_taboo_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_taboo_contract) ([fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview)) - [aci_relation_to_provided_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_provided_contract) ([fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)) diff --git a/docs/resources/annotation.md b/docs/resources/annotation.md index 00a2541f8..660924f1e 100644 --- a/docs/resources/annotation.md +++ b/docs/resources/annotation.md @@ -72,7 +72,7 @@ All examples for the Annotation resource can be found in the [examples](https:// - [aci_vrf_fallback_route_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group) ([fvFBRGroup](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRGroup/overview)) - [aci_vrf_fallback_route_group_member](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group_member) ([fvFBRMember](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRMember/overview)) - [aci_relation_to_consumed_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract) ([fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) - - [aci_relation_to_consumed_contract_interface](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract_interface) ([fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) + - [aci_relation_to_imported_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_imported_contract) ([fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) - [aci_relation_to_intra_epg_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_intra_epg_contract) ([fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) - [aci_relation_to_taboo_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_taboo_contract) ([fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview)) - [aci_relation_to_provided_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_provided_contract) ([fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)) diff --git a/docs/resources/endpoint_security_group.md b/docs/resources/endpoint_security_group.md index 46b15d69e..a8e3757b5 100644 --- a/docs/resources/endpoint_security_group.md +++ b/docs/resources/endpoint_security_group.md @@ -64,11 +64,11 @@ resource "aci_endpoint_security_group" "full_example_application_profile" { contract_name = aci_contract.example.name } ] - relation_to_consumed_contract_interfaces = [ + relation_to_imported_contracts = [ { - annotation = "annotation_1" - priority = "level1" - contract_interface_name = aci_contract_interface.example.name + annotation = "annotation_1" + priority = "level1" + imported_contract_name = aci_imported_contract.example.name } ] relation_to_intra_epg_contracts = [ @@ -161,15 +161,15 @@ All examples for the Endpoint Security Group resource can be found in the [examp - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. -* `relation_to_consumed_contract_interfaces` - (list) A list of Relation To Consumed Contract Interfaces (ACI object [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) pointing to Contract Interface (ACI Object [vzCPIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzCPIf/overview)) which can be configured using the [aci_contract_interface](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract_interface) resource. This attribute is supported in ACI versions: 1.0(1e) and later. +* `relation_to_imported_contracts` - (list) A list of Relation To Imported Contracts (ACI object [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) pointing to Imported Contract (ACI Object [vzCPIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzCPIf/overview)) which can be configured using the [aci_imported_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/imported_contract) resource. This attribute is supported in ACI versions: 1.0(1e) and later. #### Required #### - * `contract_interface_name` (tnVzCPIfName) - (string) The contract interface name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract_interface) with `aci_contract_interface.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract_interface) with `data.aci_contract_interface.example.name`. + * `imported_contract_name` (tnVzCPIfName) - (string) The contract interface name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/imported_contract) with `aci_imported_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/imported_contract) with `data.aci_imported_contract.example.name`. #### Optional #### - * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract Interface object. + * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. - Default: `orchestrator:terraform` * `priority` (prio) - (string) The contract interface priority. - Default: `unspecified` diff --git a/docs/resources/relation_to_consumed_contract_interface.md b/docs/resources/relation_to_imported_contract.md similarity index 71% rename from docs/resources/relation_to_consumed_contract_interface.md rename to docs/resources/relation_to_imported_contract.md index b90e04221..fbe00b351 100644 --- a/docs/resources/relation_to_consumed_contract_interface.md +++ b/docs/resources/relation_to_imported_contract.md @@ -4,15 +4,15 @@ # More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). subcategory: "Application Management" layout: "aci" -page_title: "ACI: aci_relation_to_consumed_contract_interface" -sidebar_current: "docs-aci-resource-aci_relation_to_consumed_contract_interface" +page_title: "ACI: aci_relation_to_imported_contract" +sidebar_current: "docs-aci-resource-aci_relation_to_imported_contract" description: |- - Manages ACI Relation To Consumed Contract Interface + Manages ACI Relation To Imported Contract --- -# aci_relation_to_consumed_contract_interface # +# aci_relation_to_imported_contract # -Manages ACI Relation To Consumed Contract Interface +Manages ACI Relation To Imported Contract @@ -39,32 +39,32 @@ Manages ACI Relation To Consumed Contract Interface ## Example Usage ## -The configuration snippet below creates a Relation To Consumed Contract Interface with only required attributes. +The configuration snippet below creates a Relation To Imported Contract with only required attributes. ```hcl -resource "aci_relation_to_consumed_contract_interface" "example_application_epg" { - parent_dn = aci_application_epg.example.id - contract_interface_name = aci_contract_interface.example.name +resource "aci_relation_to_imported_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + imported_contract_name = aci_imported_contract.example.name } -resource "aci_relation_to_consumed_contract_interface" "example_endpoint_security_group" { - parent_dn = aci_endpoint_security_group.example.id - contract_interface_name = aci_contract_interface.example.name +resource "aci_relation_to_imported_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + imported_contract_name = aci_imported_contract.example.name } ``` -The configuration snippet below shows all possible attributes of the Relation To Consumed Contract Interface. +The configuration snippet below shows all possible attributes of the Relation To Imported Contract. !> This example might not be valid configuration and is only used to show all possible attributes. ```hcl -resource "aci_relation_to_consumed_contract_interface" "full_example_application_epg" { - parent_dn = aci_application_epg.example.id - annotation = "annotation" - priority = "level1" - contract_interface_name = aci_contract_interface.example.name +resource "aci_relation_to_imported_contract" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + priority = "level1" + imported_contract_name = aci_imported_contract.example.name annotations = [ { key = "key_0" @@ -79,11 +79,11 @@ resource "aci_relation_to_consumed_contract_interface" "full_example_application ] } -resource "aci_relation_to_consumed_contract_interface" "full_example_endpoint_security_group" { - parent_dn = aci_endpoint_security_group.example.id - annotation = "annotation" - priority = "level1" - contract_interface_name = aci_contract_interface.example.name +resource "aci_relation_to_imported_contract" "full_example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + annotation = "annotation" + priority = "level1" + imported_contract_name = aci_imported_contract.example.name annotations = [ { key = "key_0" @@ -100,7 +100,7 @@ resource "aci_relation_to_consumed_contract_interface" "full_example_endpoint_se ``` -All examples for the Relation To Consumed Contract Interface resource can be found in the [examples](https://github.com/CiscoDevNet/terraform-provider-aci/tree/master/examples/resources/aci_relation_to_consumed_contract_interface) folder. +All examples for the Relation To Imported Contract resource can be found in the [examples](https://github.com/CiscoDevNet/terraform-provider-aci/tree/master/examples/resources/aci_relation_to_imported_contract) folder. ## Schema ## @@ -129,15 +129,15 @@ All examples for the Relation To Consumed Contract Interface resource can be fou - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) -* `contract_interface_name` (tnVzCPIfName) - (string) The contract interface name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract_interface) with `aci_contract_interface.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract_interface) with `data.aci_contract_interface.example.name`. +* `imported_contract_name` (tnVzCPIfName) - (string) The contract interface name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/imported_contract) with `aci_imported_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/imported_contract) with `data.aci_imported_contract.example.name`. ### Read-Only ### -* `id` - (string) The distinguished name (DN) of the Relation To Consumed Contract Interface object. +* `id` - (string) The distinguished name (DN) of the Relation To Imported Contract object. ### Optional ### -* `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract Interface object. +* `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. - Default: `orchestrator:terraform` * `priority` (prio) - (string) The contract interface priority. - Default: `unspecified` @@ -159,18 +159,18 @@ All examples for the Relation To Consumed Contract Interface resource can be fou ## Importing -An existing Relation To Consumed Contract Interface can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: +An existing Relation To Imported Contract can be [imported](https://www.terraform.io/docs/import/index.html) into this resource with its distinguished name (DN), via the following command: ``` -terraform import aci_relation_to_consumed_contract_interface.example_application_epg uni/tn-{name}/ap-{name}/epg-{name}/rsconsIf-{tnVzCPIfName} +terraform import aci_relation_to_imported_contract.example_application_epg uni/tn-{name}/ap-{name}/epg-{name}/rsconsIf-{tnVzCPIfName} ``` -Starting in Terraform version 1.5, an existing Relation To Consumed Contract Interface can be imported +Starting in Terraform version 1.5, an existing Relation To Imported Contract can be imported using [import blocks](https://developer.hashicorp.com/terraform/language/import) via the following configuration: ``` import { id = "uni/tn-{name}/ap-{name}/epg-{name}/rsconsIf-{tnVzCPIfName}" - to = aci_relation_to_consumed_contract_interface.example_application_epg + to = aci_relation_to_imported_contract.example_application_epg } ``` diff --git a/docs/resources/tag.md b/docs/resources/tag.md index 9dddf0909..10d696e62 100644 --- a/docs/resources/tag.md +++ b/docs/resources/tag.md @@ -72,7 +72,7 @@ All examples for the Tag resource can be found in the [examples](https://github. - [aci_vrf_fallback_route_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group) ([fvFBRGroup](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRGroup/overview)) - [aci_vrf_fallback_route_group_member](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf_fallback_route_group_member) ([fvFBRMember](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvFBRMember/overview)) - [aci_relation_to_consumed_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract) ([fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) - - [aci_relation_to_consumed_contract_interface](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_consumed_contract_interface) ([fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) + - [aci_relation_to_imported_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_imported_contract) ([fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) - [aci_relation_to_intra_epg_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_intra_epg_contract) ([fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) - [aci_relation_to_taboo_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_taboo_contract) ([fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview)) - [aci_relation_to_provided_contract](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_provided_contract) ([fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)) diff --git a/examples/data-sources/aci_relation_to_consumed_contract_interface/data-source.tf b/examples/data-sources/aci_relation_to_consumed_contract_interface/data-source.tf deleted file mode 100644 index e585ff575..000000000 --- a/examples/data-sources/aci_relation_to_consumed_contract_interface/data-source.tf +++ /dev/null @@ -1,10 +0,0 @@ - -data "aci_relation_to_consumed_contract_interface" "example_application_epg" { - parent_dn = aci_application_epg.example.id - contract_interface_name = aci_contract_interface.example.name -} - -data "aci_relation_to_consumed_contract_interface" "example_endpoint_security_group" { - parent_dn = aci_endpoint_security_group.example.id - contract_interface_name = aci_contract_interface.example.name -} diff --git a/examples/data-sources/aci_relation_to_imported_contract/data-source.tf b/examples/data-sources/aci_relation_to_imported_contract/data-source.tf new file mode 100644 index 000000000..79a46318b --- /dev/null +++ b/examples/data-sources/aci_relation_to_imported_contract/data-source.tf @@ -0,0 +1,10 @@ + +data "aci_relation_to_imported_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + imported_contract_name = aci_imported_contract.example.name +} + +data "aci_relation_to_imported_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + imported_contract_name = aci_imported_contract.example.name +} diff --git a/examples/data-sources/aci_relation_to_consumed_contract_interface/provider.tf b/examples/data-sources/aci_relation_to_imported_contract/provider.tf similarity index 100% rename from examples/data-sources/aci_relation_to_consumed_contract_interface/provider.tf rename to examples/data-sources/aci_relation_to_imported_contract/provider.tf diff --git a/examples/resources/aci_endpoint_security_group/resource-all-attributes.tf b/examples/resources/aci_endpoint_security_group/resource-all-attributes.tf index 99eb159d6..e050bd624 100644 --- a/examples/resources/aci_endpoint_security_group/resource-all-attributes.tf +++ b/examples/resources/aci_endpoint_security_group/resource-all-attributes.tf @@ -17,11 +17,11 @@ resource "aci_endpoint_security_group" "full_example_application_profile" { contract_name = aci_contract.example.name } ] - relation_to_consumed_contract_interfaces = [ + relation_to_imported_contracts = [ { - annotation = "annotation_1" - priority = "level1" - contract_interface_name = aci_contract_interface.example.name + annotation = "annotation_1" + priority = "level1" + imported_contract_name = aci_imported_contract.example.name } ] relation_to_intra_epg_contracts = [ diff --git a/examples/resources/aci_relation_to_consumed_contract_interface/resource-all-attributes.tf b/examples/resources/aci_relation_to_consumed_contract_interface/resource-all-attributes.tf deleted file mode 100644 index 0846c8666..000000000 --- a/examples/resources/aci_relation_to_consumed_contract_interface/resource-all-attributes.tf +++ /dev/null @@ -1,38 +0,0 @@ - -resource "aci_relation_to_consumed_contract_interface" "full_example_application_epg" { - parent_dn = aci_application_epg.example.id - annotation = "annotation" - priority = "level1" - contract_interface_name = aci_contract_interface.example.name - annotations = [ - { - key = "key_0" - value = "value_1" - } - ] - tags = [ - { - key = "key_0" - value = "value_1" - } - ] -} - -resource "aci_relation_to_consumed_contract_interface" "full_example_endpoint_security_group" { - parent_dn = aci_endpoint_security_group.example.id - annotation = "annotation" - priority = "level1" - contract_interface_name = aci_contract_interface.example.name - annotations = [ - { - key = "key_0" - value = "value_1" - } - ] - tags = [ - { - key = "key_0" - value = "value_1" - } - ] -} diff --git a/examples/resources/aci_relation_to_consumed_contract_interface/resource.tf b/examples/resources/aci_relation_to_consumed_contract_interface/resource.tf deleted file mode 100644 index 3cf684b98..000000000 --- a/examples/resources/aci_relation_to_consumed_contract_interface/resource.tf +++ /dev/null @@ -1,10 +0,0 @@ - -resource "aci_relation_to_consumed_contract_interface" "example_application_epg" { - parent_dn = aci_application_epg.example.id - contract_interface_name = aci_contract_interface.example.name -} - -resource "aci_relation_to_consumed_contract_interface" "example_endpoint_security_group" { - parent_dn = aci_endpoint_security_group.example.id - contract_interface_name = aci_contract_interface.example.name -} diff --git a/examples/resources/aci_relation_to_consumed_contract_interface/provider.tf b/examples/resources/aci_relation_to_imported_contract/provider.tf similarity index 100% rename from examples/resources/aci_relation_to_consumed_contract_interface/provider.tf rename to examples/resources/aci_relation_to_imported_contract/provider.tf diff --git a/examples/resources/aci_relation_to_imported_contract/resource-all-attributes.tf b/examples/resources/aci_relation_to_imported_contract/resource-all-attributes.tf new file mode 100644 index 000000000..e18cafd6c --- /dev/null +++ b/examples/resources/aci_relation_to_imported_contract/resource-all-attributes.tf @@ -0,0 +1,38 @@ + +resource "aci_relation_to_imported_contract" "full_example_application_epg" { + parent_dn = aci_application_epg.example.id + annotation = "annotation" + priority = "level1" + imported_contract_name = aci_imported_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} + +resource "aci_relation_to_imported_contract" "full_example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + annotation = "annotation" + priority = "level1" + imported_contract_name = aci_imported_contract.example.name + annotations = [ + { + key = "key_0" + value = "value_1" + } + ] + tags = [ + { + key = "key_0" + value = "value_1" + } + ] +} diff --git a/examples/resources/aci_relation_to_imported_contract/resource.tf b/examples/resources/aci_relation_to_imported_contract/resource.tf new file mode 100644 index 000000000..c8ff249c4 --- /dev/null +++ b/examples/resources/aci_relation_to_imported_contract/resource.tf @@ -0,0 +1,10 @@ + +resource "aci_relation_to_imported_contract" "example_application_epg" { + parent_dn = aci_application_epg.example.id + imported_contract_name = aci_imported_contract.example.name +} + +resource "aci_relation_to_imported_contract" "example_endpoint_security_group" { + parent_dn = aci_endpoint_security_group.example.id + imported_contract_name = aci_imported_contract.example.name +} diff --git a/gen/definitions/classes.yaml b/gen/definitions/classes.yaml index 6224c2ed6..d95db9b9c 100644 --- a/gen/definitions/classes.yaml +++ b/gen/definitions/classes.yaml @@ -18,7 +18,7 @@ fvCtx: resource_name: "vrf" vzCPIf: - resource_name: "contract_interface" + resource_name: "imported_contract" rtctrlProfile: resource_name: "route_control_profile" @@ -252,9 +252,9 @@ fvESg: prio: relation_to_consumed_contracts.priority target_dn: relation_to_consumed_contracts.contract_name fvRsConsIf: - relation_fv_rs_cons_if: relation_to_consumed_contract_interfaces - prio: relation_to_consumed_contract_interfaces.priority - target_dn: relation_to_consumed_contract_interfaces.contract_interface_name + relation_fv_rs_cons_if: relation_to_imported_contracts + prio: relation_to_imported_contracts.priority + target_dn: relation_to_imported_contracts.imported_contract_name fvRsProv: relation_fv_rs_prov: relation_to_provided_contracts prio: relation_to_provided_contracts.priority @@ -301,7 +301,7 @@ fvRsProv: sub_category: "Application Management" fvRsConsIf: - resource_name: "relation_to_consumed_contract_interface" + resource_name: "relation_to_imported_contract" example_classes: - "fvAEPg" - "fvESg" diff --git a/gen/generator.go b/gen/generator.go index f0e200ae9..a75bafaed 100644 --- a/gen/generator.go +++ b/gen/generator.go @@ -193,10 +193,18 @@ func GetPropertyNameForLegacyAttribute(name string, legacyAttributes map[string] func GetLegacyChildAttribute(className, overwriteProperty string, property Property, legacyAttributes map[string]LegacyAttribute, legacyBlocks []LegacyBlock) string { + if className == "fvRsConsIf" { + log.Println(overwriteProperty) + log.Println(property) + } + for _, legacyBlock := range legacyBlocks { if legacyBlock.ClassName == className { for _, legacyAttribute := range legacyBlock.Attributes { if strings.Contains(legacyAttribute.ReplacedBy.AttributeName, overwriteProperty) { + if className == "fvRsConsIf" { + log.Println(legacyAttribute.Name) + } return legacyAttribute.Name } } @@ -206,6 +214,9 @@ func GetLegacyChildAttribute(className, overwriteProperty string, property Prope for _, legacyAttribute := range legacyAttributes { if strings.Contains(legacyAttribute.ReplacedBy.AttributeName, overwriteProperty) { + if className == "fvRsConsIf" { + log.Println(className) + } return Capitalize(className) } } diff --git a/gen/testvars/fvESg.yaml b/gen/testvars/fvESg.yaml index dfd03ed7e..baedb2001 100644 --- a/gen/testvars/fvESg.yaml +++ b/gen/testvars/fvESg.yaml @@ -41,14 +41,14 @@ children: priority: "level2" contract_name: "contract_name_1" - relation_to_consumed_contract_interfaces: + relation_to_imported_contracts: - annotation: "annotation_1" priority: "level1" - contract_interface_name: "contract_interface_name_0" + imported_contract_name: "imported_contract_name_0" - annotation: "annotation_2" priority: "level2" - contract_interface_name: "contract_interface_name_1" + imported_contract_name: "imported_contract_name_1" relation_to_intra_epg_contracts: - annotation: "annotation_1" diff --git a/gen/testvars/fvRsConsIf.yaml b/gen/testvars/fvRsConsIf.yaml index 5ac54b4f8..23e8c8352 100644 --- a/gen/testvars/fvRsConsIf.yaml +++ b/gen/testvars/fvRsConsIf.yaml @@ -7,13 +7,13 @@ default: priority: "unspecified" datasource_non_existing: - contract_interface_name: "non_existing_tn_vz_cp_if_name" + imported_contract_name: "non_existing_tn_vz_cp_if_name" datasource_required: - contract_interface_name: "test_tn_vz_cp_if_name" + imported_contract_name: "test_tn_vz_cp_if_name" resource_required: - contract_interface_name: "test_tn_vz_cp_if_name" + imported_contract_name: "test_tn_vz_cp_if_name" all: annotation: "annotation" diff --git a/internal/provider/data_source_aci_endpoint_security_group.go b/internal/provider/data_source_aci_endpoint_security_group.go index 80e13068b..05de60f41 100644 --- a/internal/provider/data_source_aci_endpoint_security_group.go +++ b/internal/provider/data_source_aci_endpoint_security_group.go @@ -137,20 +137,20 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, }, }, - "relation_to_consumed_contract_interfaces": schema.SetNestedAttribute{ + "relation_to_imported_contracts": schema.SetNestedAttribute{ MarkdownDescription: `A contract for which the EPG will be a consumer.`, Computed: true, NestedObject: schema.NestedAttributeObject{ Attributes: map[string]schema.Attribute{ "annotation": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The annotation of the Relation To Consumed Contract Interface object.`, + MarkdownDescription: `The annotation of the Relation To Imported Contract object.`, }, "priority": schema.StringAttribute{ Computed: true, MarkdownDescription: `The contract interface priority.`, }, - "contract_interface_name": schema.StringAttribute{ + "imported_contract_name": schema.StringAttribute{ Computed: true, MarkdownDescription: `The contract interface name.`, }, @@ -286,11 +286,11 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque Attributes: map[string]schema.Attribute{ "target_dn": schema.StringAttribute{ Computed: true, - DeprecationMessage: "Attribute 'target_dn' will be deprecated soon, please refer to 'relation_to_consumed_contract_interfaces.contract_interface_name' instead", + DeprecationMessage: "Attribute 'target_dn' will be deprecated soon, please refer to 'relation_to_imported_contracts.imported_contract_name' instead", }, "prio": schema.StringAttribute{ Computed: true, - DeprecationMessage: "Attribute 'prio' will be deprecated soon, please refer to 'relation_to_consumed_contract_interfaces.priority' instead", + DeprecationMessage: "Attribute 'prio' will be deprecated soon, please refer to 'relation_to_imported_contracts.priority' instead", }, }, }, diff --git a/internal/provider/data_source_aci_relation_to_consumed_contract_interface.go b/internal/provider/data_source_aci_relation_to_imported_contract.go similarity index 79% rename from internal/provider/data_source_aci_relation_to_consumed_contract_interface.go rename to internal/provider/data_source_aci_relation_to_imported_contract.go index 6d5cfc182..18959a9d5 100644 --- a/internal/provider/data_source_aci_relation_to_consumed_contract_interface.go +++ b/internal/provider/data_source_aci_relation_to_imported_contract.go @@ -28,21 +28,21 @@ type FvRsConsIfDataSource struct { } func (d *FvRsConsIfDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { - tflog.Debug(ctx, "Start metadata of datasource: aci_relation_to_consumed_contract_interface") - resp.TypeName = req.ProviderTypeName + "_relation_to_consumed_contract_interface" - tflog.Debug(ctx, "End metadata of datasource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "Start metadata of datasource: aci_relation_to_imported_contract") + resp.TypeName = req.ProviderTypeName + "_relation_to_imported_contract" + tflog.Debug(ctx, "End metadata of datasource: aci_relation_to_imported_contract") } func (d *FvRsConsIfDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) { - tflog.Debug(ctx, "Start schema of datasource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "Start schema of datasource: aci_relation_to_imported_contract") resp.Schema = schema.Schema{ // This description is used by the documentation generator and the language server. - MarkdownDescription: "The relation_to_consumed_contract_interface datasource for the 'fvRsConsIf' class", + MarkdownDescription: "The relation_to_imported_contract datasource for the 'fvRsConsIf' class", Attributes: map[string]schema.Attribute{ "id": schema.StringAttribute{ Computed: true, - MarkdownDescription: "The distinguished name (DN) of the Relation To Consumed Contract Interface object.", + MarkdownDescription: "The distinguished name (DN) of the Relation To Imported Contract object.", }, "parent_dn": schema.StringAttribute{ Required: true, @@ -50,13 +50,13 @@ func (d *FvRsConsIfDataSource) Schema(ctx context.Context, req datasource.Schema }, "annotation": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The annotation of the Relation To Consumed Contract Interface object.`, + MarkdownDescription: `The annotation of the Relation To Imported Contract object.`, }, "priority": schema.StringAttribute{ Computed: true, MarkdownDescription: `The contract interface priority.`, }, - "contract_interface_name": schema.StringAttribute{ + "imported_contract_name": schema.StringAttribute{ Required: true, MarkdownDescription: `The contract interface name.`, }, @@ -94,11 +94,11 @@ func (d *FvRsConsIfDataSource) Schema(ctx context.Context, req datasource.Schema }, }, } - tflog.Debug(ctx, "End schema of datasource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "End schema of datasource: aci_relation_to_imported_contract") } func (d *FvRsConsIfDataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) { - tflog.Debug(ctx, "Start configure of datasource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "Start configure of datasource: aci_relation_to_imported_contract") // Prevent panic if the provider has not been configured. if req.ProviderData == nil { return @@ -116,11 +116,11 @@ func (d *FvRsConsIfDataSource) Configure(ctx context.Context, req datasource.Con } d.client = client - tflog.Debug(ctx, "End configure of datasource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "End configure of datasource: aci_relation_to_imported_contract") } func (d *FvRsConsIfDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { - tflog.Debug(ctx, "Start read of datasource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "Start read of datasource: aci_relation_to_imported_contract") var data *FvRsConsIfResourceModel // Read Terraform configuration data into the model @@ -135,19 +135,19 @@ func (d *FvRsConsIfDataSource) Read(ctx context.Context, req datasource.ReadRequ // Create a copy of the Id for when not found during getAndSetFvRsConsIfAttributes cachedId := data.Id.ValueString() - tflog.Debug(ctx, fmt.Sprintf("Read of datasource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + tflog.Debug(ctx, fmt.Sprintf("Read of datasource aci_relation_to_imported_contract with id '%s'", data.Id.ValueString())) getAndSetFvRsConsIfAttributes(ctx, &resp.Diagnostics, d.client, data) if data.Id.IsNull() { resp.Diagnostics.AddError( - "Failed to read aci_relation_to_consumed_contract_interface data source", - fmt.Sprintf("The aci_relation_to_consumed_contract_interface data source with id '%s' has not been found", cachedId), + "Failed to read aci_relation_to_imported_contract data source", + fmt.Sprintf("The aci_relation_to_imported_contract data source with id '%s' has not been found", cachedId), ) return } // Save data into Terraform state resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) - tflog.Debug(ctx, fmt.Sprintf("End read of datasource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + tflog.Debug(ctx, fmt.Sprintf("End read of datasource aci_relation_to_imported_contract with id '%s'", data.Id.ValueString())) } diff --git a/internal/provider/data_source_aci_relation_to_consumed_contract_interface_test.go b/internal/provider/data_source_aci_relation_to_imported_contract_test.go similarity index 56% rename from internal/provider/data_source_aci_relation_to_consumed_contract_interface_test.go rename to internal/provider/data_source_aci_relation_to_imported_contract_test.go index cea0be588..ea6c898c8 100644 --- a/internal/provider/data_source_aci_relation_to_consumed_contract_interface_test.go +++ b/internal/provider/data_source_aci_relation_to_imported_contract_test.go @@ -21,14 +21,14 @@ func TestAccDataSourceFvRsConsIfWithFvAEPg(t *testing.T) { Config: testConfigFvRsConsIfDataSourceDependencyWithFvAEPg, ExpectNonEmptyPlan: false, Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), - resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("data.aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("data.aci_relation_to_imported_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("data.aci_relation_to_imported_contract.test", "priority", "unspecified"), ), }, { Config: testConfigFvRsConsIfNotExistingFvAEPg, - ExpectError: regexp.MustCompile("Failed to read aci_relation_to_consumed_contract_interface data source"), + ExpectError: regexp.MustCompile("Failed to read aci_relation_to_imported_contract data source"), }, }, }) @@ -43,46 +43,46 @@ func TestAccDataSourceFvRsConsIfWithFvESg(t *testing.T) { Config: testConfigFvRsConsIfDataSourceDependencyWithFvESg, ExpectNonEmptyPlan: false, Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), - resource.TestCheckResourceAttr("data.aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("data.aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("data.aci_relation_to_imported_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("data.aci_relation_to_imported_contract.test", "priority", "unspecified"), ), }, { Config: testConfigFvRsConsIfNotExistingFvESg, - ExpectError: regexp.MustCompile("Failed to read aci_relation_to_consumed_contract_interface data source"), + ExpectError: regexp.MustCompile("Failed to read aci_relation_to_imported_contract data source"), }, }, }) } const testConfigFvRsConsIfDataSourceDependencyWithFvAEPg = testConfigFvRsConsIfMinDependencyWithFvAEPg + ` -data "aci_relation_to_consumed_contract_interface" "test" { +data "aci_relation_to_imported_contract" "test" { parent_dn = aci_application_epg.test.id - contract_interface_name = "test_tn_vz_cp_if_name" - depends_on = [aci_relation_to_consumed_contract_interface.test] + imported_contract_name = "test_tn_vz_cp_if_name" + depends_on = [aci_relation_to_imported_contract.test] } ` const testConfigFvRsConsIfNotExistingFvAEPg = testConfigFvRsConsIfMinDependencyWithFvAEPg + ` -data "aci_relation_to_consumed_contract_interface" "test_non_existing" { +data "aci_relation_to_imported_contract" "test_non_existing" { parent_dn = aci_application_epg.test.id - contract_interface_name = "non_existing_tn_vz_cp_if_name" - depends_on = [aci_relation_to_consumed_contract_interface.test] + imported_contract_name = "non_existing_tn_vz_cp_if_name" + depends_on = [aci_relation_to_imported_contract.test] } ` const testConfigFvRsConsIfDataSourceDependencyWithFvESg = testConfigFvRsConsIfMinDependencyWithFvESg + ` -data "aci_relation_to_consumed_contract_interface" "test" { +data "aci_relation_to_imported_contract" "test" { parent_dn = aci_endpoint_security_group.test.id - contract_interface_name = "test_tn_vz_cp_if_name" - depends_on = [aci_relation_to_consumed_contract_interface.test] + imported_contract_name = "test_tn_vz_cp_if_name" + depends_on = [aci_relation_to_imported_contract.test] } ` const testConfigFvRsConsIfNotExistingFvESg = testConfigFvRsConsIfMinDependencyWithFvESg + ` -data "aci_relation_to_consumed_contract_interface" "test_non_existing" { +data "aci_relation_to_imported_contract" "test_non_existing" { parent_dn = aci_endpoint_security_group.test.id - contract_interface_name = "non_existing_tn_vz_cp_if_name" - depends_on = [aci_relation_to_consumed_contract_interface.test] + imported_contract_name = "non_existing_tn_vz_cp_if_name" + depends_on = [aci_relation_to_imported_contract.test] } ` diff --git a/internal/provider/resource_aci_endpoint_security_group.go b/internal/provider/resource_aci_endpoint_security_group.go index 3ff3599ee..cfa52defb 100644 --- a/internal/provider/resource_aci_endpoint_security_group.go +++ b/internal/provider/resource_aci_endpoint_security_group.go @@ -57,7 +57,7 @@ type FvESgResourceModel struct { PrefGrMemb types.String `tfsdk:"preferred_group_member"` Shutdown types.String `tfsdk:"admin_state"` FvRsCons types.Set `tfsdk:"relation_to_consumed_contracts"` - FvRsConsIf types.Set `tfsdk:"relation_to_consumed_contract_interfaces"` + FvRsConsIf types.Set `tfsdk:"relation_to_imported_contracts"` FvRsIntraEpg types.Set `tfsdk:"relation_to_intra_epg_contracts"` FvRsProv types.Set `tfsdk:"relation_to_provided_contracts"` FvRsScope types.Set `tfsdk:"relation_to_vrf"` @@ -87,7 +87,7 @@ type FvRsConsFvESgResourceModel struct { type FvRsConsIfFvESgResourceModel struct { Annotation types.String `tfsdk:"annotation"` Prio types.String `tfsdk:"priority"` - TnVzCPIfName types.String `tfsdk:"contract_interface_name"` + TnVzCPIfName types.String `tfsdk:"imported_contract_name"` } // FvRsIntraEpgFvESgResourceModel describes the resource data model for the children without relation ships. @@ -387,9 +387,9 @@ func (r *FvESgResource) UpgradeState(ctx context.Context) map[int64]resource.Sta } FvRsConsIfType := types.ObjectType{ AttrTypes: map[string]attr.Type{ - "annotation": basetypes.StringType{}, - "priority": basetypes.StringType{}, - "contract_interface_name": basetypes.StringType{}, + "annotation": basetypes.StringType{}, + "priority": basetypes.StringType{}, + "imported_contract_name": basetypes.StringType{}, }, } FvRsConsIfSet, _ := types.SetValueFrom(ctx, FvRsConsIfType, FvRsConsIfList) @@ -851,9 +851,9 @@ func (r *FvESgResource) ModifyPlan(ctx context.Context, req resource.ModifyPlanR FvRsConsIfType := types.ObjectType{ AttrTypes: map[string]attr.Type{ - "annotation": basetypes.StringType{}, - "priority": basetypes.StringType{}, - "contract_interface_name": basetypes.StringType{}, + "annotation": basetypes.StringType{}, + "priority": basetypes.StringType{}, + "imported_contract_name": basetypes.StringType{}, }, } FvRsConsIfSet, _ := types.SetValueFrom(ctx, FvRsConsIfType, FvRsConsIfList) @@ -1141,7 +1141,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, }, }, }, - "relation_to_consumed_contract_interfaces": schema.SetNestedAttribute{ + "relation_to_imported_contracts": schema.SetNestedAttribute{ MarkdownDescription: `A contract for which the EPG will be a consumer.`, Optional: true, Computed: true, @@ -1156,7 +1156,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, PlanModifiers: []planmodifier.String{ stringplanmodifier.UseStateForUnknown(), }, - MarkdownDescription: `The annotation of the Relation To Consumed Contract Interface object.`, + MarkdownDescription: `The annotation of the Relation To Imported Contract object.`, }, "priority": schema.StringAttribute{ Optional: true, @@ -1169,7 +1169,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, }, MarkdownDescription: `The contract interface priority.`, }, - "contract_interface_name": schema.StringAttribute{ + "imported_contract_name": schema.StringAttribute{ Required: true, PlanModifiers: []planmodifier.String{ stringplanmodifier.UseStateForUnknown(), @@ -1403,20 +1403,20 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, "target_dn": schema.StringAttribute{ Optional: true, Computed: true, - DeprecationMessage: "Attribute 'target_dn' will be deprecated soon, please use 'relation_to_consumed_contract_interfaces.contract_interface_name' instead", + DeprecationMessage: "Attribute 'target_dn' will be deprecated soon, please use 'relation_to_imported_contracts.imported_contract_name' instead", Validators: []validator.String{ stringvalidator.ConflictsWith(path.Expressions{ - path.MatchRoot("relation_to_consumed_contract_interfaces"), + path.MatchRoot("relation_to_imported_contracts"), }...), }, }, "prio": schema.StringAttribute{ Optional: true, Computed: true, - DeprecationMessage: "Attribute 'prio' will be deprecated soon, please use 'relation_to_consumed_contract_interfaces.priority' instead", + DeprecationMessage: "Attribute 'prio' will be deprecated soon, please use 'relation_to_imported_contracts.priority' instead", Validators: []validator.String{ stringvalidator.ConflictsWith(path.Expressions{ - path.MatchRoot("relation_to_consumed_contract_interfaces"), + path.MatchRoot("relation_to_imported_contracts"), }...), }, }, diff --git a/internal/provider/resource_aci_endpoint_security_group_test.go b/internal/provider/resource_aci_endpoint_security_group_test.go index 9babdfb73..15bcfe030 100644 --- a/internal/provider/resource_aci_endpoint_security_group_test.go +++ b/internal/provider/resource_aci_endpoint_security_group_test.go @@ -107,12 +107,6 @@ func TestAccResourceFvESgWithFvAp(t *testing.T) { resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.0.value", "value_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.1.key", "key_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.1.value", "value_2"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.annotation", "annotation_1"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.contract_interface_name", "contract_interface_name_0"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.priority", "level1"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.annotation", "annotation_2"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.contract_interface_name", "contract_interface_name_1"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.priority", "level2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.annotation", "annotation_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.contract_name", "contract_name_0"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.priority", "level1"), @@ -123,6 +117,12 @@ func TestAccResourceFvESgWithFvAp(t *testing.T) { resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.0.target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_0"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.1.annotation", "annotation_2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.1.target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.0.imported_contract_name", "imported_contract_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.0.priority", "level1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.1.imported_contract_name", "imported_contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.1.priority", "level2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.annotation", "annotation_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.contract_name", "contract_name_0"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.1.annotation", "annotation_2"), @@ -162,12 +162,6 @@ func TestAccResourceFvESgWithFvAp(t *testing.T) { resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.0.value", "value_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.1.key", "key_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.1.value", "value_2"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.annotation", "annotation_1"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.contract_interface_name", "contract_interface_name_0"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.priority", "level1"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.annotation", "annotation_2"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.contract_interface_name", "contract_interface_name_1"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.priority", "level2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.annotation", "annotation_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.contract_name", "contract_name_0"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.priority", "level1"), @@ -178,6 +172,12 @@ func TestAccResourceFvESgWithFvAp(t *testing.T) { resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.0.target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_0"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.1.annotation", "annotation_2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.1.target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.0.imported_contract_name", "imported_contract_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.0.priority", "level1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.1.imported_contract_name", "imported_contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.1.priority", "level2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.annotation", "annotation_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.contract_name", "contract_name_0"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.1.annotation", "annotation_2"), @@ -208,13 +208,6 @@ func TestAccResourceFvESgWithFvAp(t *testing.T) { resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.1.key", "key_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.1.value", "value_2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.#", "2"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.annotation", "annotation_1"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.contract_interface_name", "contract_interface_name_0"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.priority", "level1"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.annotation", "annotation_2"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.contract_interface_name", "contract_interface_name_1"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.1.priority", "level2"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.#", "2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.annotation", "annotation_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.contract_name", "contract_name_0"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.priority", "level1"), @@ -227,6 +220,13 @@ func TestAccResourceFvESgWithFvAp(t *testing.T) { resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.1.annotation", "annotation_2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.1.target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.#", "2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.0.annotation", "annotation_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.0.imported_contract_name", "imported_contract_name_0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.0.priority", "level1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.1.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.1.imported_contract_name", "imported_contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.1.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.#", "2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.annotation", "annotation_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.contract_name", "contract_name_0"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.1.annotation", "annotation_2"), @@ -259,10 +259,6 @@ func TestAccResourceFvESgWithFvAp(t *testing.T) { resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.0.key", "key_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.0.value", "value_2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.#", "1"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.annotation", "annotation_2"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.contract_interface_name", "contract_interface_name_1"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.0.priority", "level2"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.#", "1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.annotation", "annotation_2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.contract_name", "contract_name_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.0.priority", "level2"), @@ -270,6 +266,10 @@ func TestAccResourceFvESgWithFvAp(t *testing.T) { resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.0.annotation", "annotation_2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.0.target_dn", "uni/tn-test_tenant/ap-test_ap/esg-esg_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.#", "1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.0.annotation", "annotation_2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.0.imported_contract_name", "imported_contract_name_1"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.0.priority", "level2"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.#", "1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.annotation", "annotation_2"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.0.contract_name", "contract_name_1"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.#", "1"), @@ -292,9 +292,9 @@ func TestAccResourceFvESgWithFvAp(t *testing.T) { ExpectNonEmptyPlan: false, Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "annotations.#", "0"), - resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contract_interfaces.#", "0"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_consumed_contracts.#", "0"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_contract_masters.#", "0"), + resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_imported_contracts.#", "0"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_intra_epg_contracts.#", "0"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_provided_contracts.#", "0"), resource.TestCheckResourceAttr("aci_endpoint_security_group.test", "relation_to_vrf.0.annotation", "annotation_1"), @@ -368,38 +368,38 @@ resource "aci_endpoint_security_group" "test" { value = "value_2" }, ] - relation_to_consumed_contract_interfaces = [ + relation_to_consumed_contracts = [ { annotation = "annotation_1" - contract_interface_name = "contract_interface_name_0" + contract_name = "contract_name_0" priority = "level1" }, { annotation = "annotation_2" - contract_interface_name = "contract_interface_name_1" + contract_name = "contract_name_1" priority = "level2" }, ] - relation_to_consumed_contracts = [ + relation_to_contract_masters = [ { annotation = "annotation_1" - contract_name = "contract_name_0" - priority = "level1" + target_dn = aci_endpoint_security_group.test_0.id }, { annotation = "annotation_2" - contract_name = "contract_name_1" - priority = "level2" + target_dn = aci_endpoint_security_group.test_1.id }, ] - relation_to_contract_masters = [ + relation_to_imported_contracts = [ { annotation = "annotation_1" - target_dn = aci_endpoint_security_group.test_0.id + imported_contract_name = "imported_contract_name_0" + priority = "level1" }, { annotation = "annotation_2" - target_dn = aci_endpoint_security_group.test_1.id + imported_contract_name = "imported_contract_name_1" + priority = "level2" }, ] relation_to_intra_epg_contracts = [ @@ -462,13 +462,6 @@ resource "aci_endpoint_security_group" "test" { value = "value_2" }, ] - relation_to_consumed_contract_interfaces = [ - { - annotation = "annotation_2" - contract_interface_name = "contract_interface_name_1" - priority = "level2" - }, - ] relation_to_consumed_contracts = [ { annotation = "annotation_2" @@ -482,6 +475,13 @@ resource "aci_endpoint_security_group" "test" { target_dn = aci_endpoint_security_group.test_1.id }, ] + relation_to_imported_contracts = [ + { + annotation = "annotation_2" + imported_contract_name = "imported_contract_name_1" + priority = "level2" + }, + ] relation_to_intra_epg_contracts = [ { annotation = "annotation_2" @@ -510,9 +510,9 @@ resource "aci_endpoint_security_group" "test" { parent_dn = aci_application_profile.test.id name = "test_name" annotations = [] - relation_to_consumed_contract_interfaces = [] relation_to_consumed_contracts = [] relation_to_contract_masters = [] + relation_to_imported_contracts = [] relation_to_intra_epg_contracts = [] relation_to_provided_contracts = [] tags = [] diff --git a/internal/provider/resource_aci_relation_to_consumed_contract_interface_test.go b/internal/provider/resource_aci_relation_to_consumed_contract_interface_test.go deleted file mode 100644 index 06370b33f..000000000 --- a/internal/provider/resource_aci_relation_to_consumed_contract_interface_test.go +++ /dev/null @@ -1,452 +0,0 @@ -// Code generated by "gen/generator.go"; DO NOT EDIT. -// In order to regenerate this file execute `go generate` from the repository root. -// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). - -package provider - -import ( - "testing" - - "github.com/hashicorp/terraform-plugin-testing/helper/resource" -) - -func TestAccResourceFvRsConsIfWithFvAEPg(t *testing.T) { - - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, - Steps: []resource.TestStep{ - // Create with minimum config and verify default APIC values - { - Config: testConfigFvRsConsIfMinDependencyWithFvAEPg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), - ), - }, - // Update with all config and verify default APIC values - { - Config: testConfigFvRsConsIfAllDependencyWithFvAEPg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "annotation"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "level1"), - ), - }, - // Update with minimum config and verify config is unchanged - { - Config: testConfigFvRsConsIfMinDependencyWithFvAEPg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - ), - }, - // Update with empty strings config or default value - { - Config: testConfigFvRsConsIfResetDependencyWithFvAEPg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), - ), - }, - // Import testing - { - ResourceName: "aci_relation_to_consumed_contract_interface.test", - ImportState: true, - ImportStateVerify: true, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), - ), - }, - // Update with children - { - Config: testConfigFvRsConsIfChildrenDependencyWithFvAEPg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.value", "value_2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.value", "value_2"), - ), - }, - // Import testing with children - { - ResourceName: "aci_relation_to_consumed_contract_interface.test", - ImportState: true, - ImportStateVerify: true, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.value", "value_2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.value", "value_2"), - ), - }, - // Update with children removed from config - { - Config: testConfigFvRsConsIfChildrenRemoveFromConfigDependencyWithFvAEPg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.value", "value_2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.#", "2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.value", "value_2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.#", "2"), - ), - }, - // Update with children first child removed - { - Config: testConfigFvRsConsIfChildrenRemoveOneDependencyWithFvAEPg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.#", "1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.#", "1"), - ), - }, - // Update with all children removed - { - Config: testConfigFvRsConsIfChildrenRemoveAllDependencyWithFvAEPg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.#", "0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.#", "0"), - ), - }, - }, - }) -} -func TestAccResourceFvRsConsIfWithFvESg(t *testing.T) { - - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, - Steps: []resource.TestStep{ - // Create with minimum config and verify default APIC values - { - Config: testConfigFvRsConsIfMinDependencyWithFvESg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), - ), - }, - // Update with all config and verify default APIC values - { - Config: testConfigFvRsConsIfAllDependencyWithFvESg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "annotation"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "level1"), - ), - }, - // Update with minimum config and verify config is unchanged - { - Config: testConfigFvRsConsIfMinDependencyWithFvESg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - ), - }, - // Update with empty strings config or default value - { - Config: testConfigFvRsConsIfResetDependencyWithFvESg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), - ), - }, - // Import testing - { - ResourceName: "aci_relation_to_consumed_contract_interface.test", - ImportState: true, - ImportStateVerify: true, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), - ), - }, - // Update with children - { - Config: testConfigFvRsConsIfChildrenDependencyWithFvESg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.value", "value_2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.value", "value_2"), - ), - }, - // Import testing with children - { - ResourceName: "aci_relation_to_consumed_contract_interface.test", - ImportState: true, - ImportStateVerify: true, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "contract_interface_name", "test_tn_vz_cp_if_name"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotation", "orchestrator:terraform"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "priority", "unspecified"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.value", "value_2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.value", "value_2"), - ), - }, - // Update with children removed from config - { - Config: testConfigFvRsConsIfChildrenRemoveFromConfigDependencyWithFvESg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.1.value", "value_2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.#", "2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.1.value", "value_2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.#", "2"), - ), - }, - // Update with children first child removed - { - Config: testConfigFvRsConsIfChildrenRemoveOneDependencyWithFvESg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.0.value", "value_2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.#", "1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.key", "key_1"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.0.value", "value_2"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.#", "1"), - ), - }, - // Update with all children removed - { - Config: testConfigFvRsConsIfChildrenRemoveAllDependencyWithFvESg, - ExpectNonEmptyPlan: false, - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "annotations.#", "0"), - resource.TestCheckResourceAttr("aci_relation_to_consumed_contract_interface.test", "tags.#", "0"), - ), - }, - }, - }) -} - -const testConfigFvRsConsIfMinDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_application_epg.test.id - contract_interface_name = "test_tn_vz_cp_if_name" -} -` - -const testConfigFvRsConsIfAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_application_epg.test.id - contract_interface_name = "test_tn_vz_cp_if_name" - annotation = "annotation" - priority = "level1" -} -` - -const testConfigFvRsConsIfResetDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_application_epg.test.id - contract_interface_name = "test_tn_vz_cp_if_name" - annotation = "orchestrator:terraform" - priority = "unspecified" -} -` -const testConfigFvRsConsIfChildrenDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_application_epg.test.id - contract_interface_name = "test_tn_vz_cp_if_name" - annotations = [ - { - key = "key_0" - value = "value_1" - }, - { - key = "key_1" - value = "value_2" - }, - ] - tags = [ - { - key = "key_0" - value = "value_1" - }, - { - key = "key_1" - value = "value_2" - }, - ] -} -` - -const testConfigFvRsConsIfChildrenRemoveFromConfigDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_application_epg.test.id - contract_interface_name = "test_tn_vz_cp_if_name" -} -` - -const testConfigFvRsConsIfChildrenRemoveOneDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_application_epg.test.id - contract_interface_name = "test_tn_vz_cp_if_name" - annotations = [ - { - key = "key_1" - value = "value_2" - }, - ] - tags = [ - { - key = "key_1" - value = "value_2" - }, - ] -} -` - -const testConfigFvRsConsIfChildrenRemoveAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_application_epg.test.id - contract_interface_name = "test_tn_vz_cp_if_name" - annotations = [] - tags = [] -} -` - -const testConfigFvRsConsIfMinDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_endpoint_security_group.test.id - contract_interface_name = "test_tn_vz_cp_if_name" -} -` - -const testConfigFvRsConsIfAllDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_endpoint_security_group.test.id - contract_interface_name = "test_tn_vz_cp_if_name" - annotation = "annotation" - priority = "level1" -} -` - -const testConfigFvRsConsIfResetDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_endpoint_security_group.test.id - contract_interface_name = "test_tn_vz_cp_if_name" - annotation = "orchestrator:terraform" - priority = "unspecified" -} -` -const testConfigFvRsConsIfChildrenDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_endpoint_security_group.test.id - contract_interface_name = "test_tn_vz_cp_if_name" - annotations = [ - { - key = "key_0" - value = "value_1" - }, - { - key = "key_1" - value = "value_2" - }, - ] - tags = [ - { - key = "key_0" - value = "value_1" - }, - { - key = "key_1" - value = "value_2" - }, - ] -} -` - -const testConfigFvRsConsIfChildrenRemoveFromConfigDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_endpoint_security_group.test.id - contract_interface_name = "test_tn_vz_cp_if_name" -} -` - -const testConfigFvRsConsIfChildrenRemoveOneDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_endpoint_security_group.test.id - contract_interface_name = "test_tn_vz_cp_if_name" - annotations = [ - { - key = "key_1" - value = "value_2" - }, - ] - tags = [ - { - key = "key_1" - value = "value_2" - }, - ] -} -` - -const testConfigFvRsConsIfChildrenRemoveAllDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` -resource "aci_relation_to_consumed_contract_interface" "test" { - parent_dn = aci_endpoint_security_group.test.id - contract_interface_name = "test_tn_vz_cp_if_name" - annotations = [] - tags = [] -} -` diff --git a/internal/provider/resource_aci_relation_to_consumed_contract_interface.go b/internal/provider/resource_aci_relation_to_imported_contract.go similarity index 91% rename from internal/provider/resource_aci_relation_to_consumed_contract_interface.go rename to internal/provider/resource_aci_relation_to_imported_contract.go index 59a4c0019..d4586b722 100644 --- a/internal/provider/resource_aci_relation_to_consumed_contract_interface.go +++ b/internal/provider/resource_aci_relation_to_imported_contract.go @@ -47,7 +47,7 @@ type FvRsConsIfResourceModel struct { ParentDn types.String `tfsdk:"parent_dn"` Annotation types.String `tfsdk:"annotation"` Prio types.String `tfsdk:"priority"` - TnVzCPIfName types.String `tfsdk:"contract_interface_name"` + TnVzCPIfName types.String `tfsdk:"imported_contract_name"` TagAnnotation types.Set `tfsdk:"annotations"` TagTag types.Set `tfsdk:"tags"` } @@ -69,21 +69,21 @@ type FvRsConsIfIdentifier struct { } func (r *FvRsConsIfResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { - tflog.Debug(ctx, "Start metadata of resource: aci_relation_to_consumed_contract_interface") - resp.TypeName = req.ProviderTypeName + "_relation_to_consumed_contract_interface" - tflog.Debug(ctx, "End metadata of resource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "Start metadata of resource: aci_relation_to_imported_contract") + resp.TypeName = req.ProviderTypeName + "_relation_to_imported_contract" + tflog.Debug(ctx, "End metadata of resource: aci_relation_to_imported_contract") } func (r *FvRsConsIfResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { - tflog.Debug(ctx, "Start schema of resource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "Start schema of resource: aci_relation_to_imported_contract") resp.Schema = schema.Schema{ // This description is used by the documentation generator and the language server. - MarkdownDescription: "The relation_to_consumed_contract_interface resource for the 'fvRsConsIf' class", + MarkdownDescription: "The relation_to_imported_contract resource for the 'fvRsConsIf' class", Attributes: map[string]schema.Attribute{ "id": schema.StringAttribute{ Computed: true, - MarkdownDescription: "The distinguished name (DN) of the Relation To Consumed Contract Interface object.", + MarkdownDescription: "The distinguished name (DN) of the Relation To Imported Contract object.", PlanModifiers: []planmodifier.String{ stringplanmodifier.UseStateForUnknown(), }, @@ -103,7 +103,7 @@ func (r *FvRsConsIfResource) Schema(ctx context.Context, req resource.SchemaRequ stringplanmodifier.UseStateForUnknown(), }, Default: stringdefault.StaticString(globalAnnotation), - MarkdownDescription: `The annotation of the Relation To Consumed Contract Interface object.`, + MarkdownDescription: `The annotation of the Relation To Imported Contract object.`, }, "priority": schema.StringAttribute{ Optional: true, @@ -116,7 +116,7 @@ func (r *FvRsConsIfResource) Schema(ctx context.Context, req resource.SchemaRequ }, MarkdownDescription: `The contract interface priority.`, }, - "contract_interface_name": schema.StringAttribute{ + "imported_contract_name": schema.StringAttribute{ Required: true, PlanModifiers: []planmodifier.String{ stringplanmodifier.UseStateForUnknown(), @@ -178,11 +178,11 @@ func (r *FvRsConsIfResource) Schema(ctx context.Context, req resource.SchemaRequ }, }, } - tflog.Debug(ctx, "End schema of resource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "End schema of resource: aci_relation_to_imported_contract") } func (r *FvRsConsIfResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { - tflog.Debug(ctx, "Start configure of resource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "Start configure of resource: aci_relation_to_imported_contract") // Prevent panic if the provider has not been configured. if req.ProviderData == nil { return @@ -200,11 +200,11 @@ func (r *FvRsConsIfResource) Configure(ctx context.Context, req resource.Configu } r.client = client - tflog.Debug(ctx, "End configure of resource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "End configure of resource: aci_relation_to_imported_contract") } func (r *FvRsConsIfResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { - tflog.Debug(ctx, "Start create of resource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "Start create of resource: aci_relation_to_imported_contract") // On create retrieve information on current state prior to making any changes in order to determine child delete operations var stateData *FvRsConsIfResourceModel resp.Diagnostics.Append(req.Plan.Get(ctx, &stateData)...) @@ -222,7 +222,7 @@ func (r *FvRsConsIfResource) Create(ctx context.Context, req resource.CreateRequ setFvRsConsIfId(ctx, data) - tflog.Debug(ctx, fmt.Sprintf("Create of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + tflog.Debug(ctx, fmt.Sprintf("Create of resource aci_relation_to_imported_contract with id '%s'", data.Id.ValueString())) var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsConsIfResourceModel data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) @@ -245,11 +245,11 @@ func (r *FvRsConsIfResource) Create(ctx context.Context, req resource.CreateRequ // Save data into Terraform state resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) - tflog.Debug(ctx, fmt.Sprintf("End create of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + tflog.Debug(ctx, fmt.Sprintf("End create of resource aci_relation_to_imported_contract with id '%s'", data.Id.ValueString())) } func (r *FvRsConsIfResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { - tflog.Debug(ctx, "Start read of resource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "Start read of resource: aci_relation_to_imported_contract") var data *FvRsConsIfResourceModel // Read Terraform prior state data into the model @@ -259,7 +259,7 @@ func (r *FvRsConsIfResource) Read(ctx context.Context, req resource.ReadRequest, return } - tflog.Debug(ctx, fmt.Sprintf("Read of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + tflog.Debug(ctx, fmt.Sprintf("Read of resource aci_relation_to_imported_contract with id '%s'", data.Id.ValueString())) getAndSetFvRsConsIfAttributes(ctx, &resp.Diagnostics, r.client, data) @@ -271,11 +271,11 @@ func (r *FvRsConsIfResource) Read(ctx context.Context, req resource.ReadRequest, resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) } - tflog.Debug(ctx, fmt.Sprintf("End read of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + tflog.Debug(ctx, fmt.Sprintf("End read of resource aci_relation_to_imported_contract with id '%s'", data.Id.ValueString())) } func (r *FvRsConsIfResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { - tflog.Debug(ctx, "Start update of resource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "Start update of resource: aci_relation_to_imported_contract") var data *FvRsConsIfResourceModel var stateData *FvRsConsIfResourceModel @@ -287,7 +287,7 @@ func (r *FvRsConsIfResource) Update(ctx context.Context, req resource.UpdateRequ return } - tflog.Debug(ctx, fmt.Sprintf("Update of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + tflog.Debug(ctx, fmt.Sprintf("Update of resource aci_relation_to_imported_contract with id '%s'", data.Id.ValueString())) var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvRsConsIfResourceModel data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false) @@ -311,11 +311,11 @@ func (r *FvRsConsIfResource) Update(ctx context.Context, req resource.UpdateRequ // Save updated data into Terraform state resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) - tflog.Debug(ctx, fmt.Sprintf("End update of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + tflog.Debug(ctx, fmt.Sprintf("End update of resource aci_relation_to_imported_contract with id '%s'", data.Id.ValueString())) } func (r *FvRsConsIfResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { - tflog.Debug(ctx, "Start delete of resource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "Start delete of resource: aci_relation_to_imported_contract") var data *FvRsConsIfResourceModel // Read Terraform prior state data into the model @@ -325,7 +325,7 @@ func (r *FvRsConsIfResource) Delete(ctx context.Context, req resource.DeleteRequ return } - tflog.Debug(ctx, fmt.Sprintf("Delete of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + tflog.Debug(ctx, fmt.Sprintf("Delete of resource aci_relation_to_imported_contract with id '%s'", data.Id.ValueString())) jsonPayload := GetDeleteJsonPayload(ctx, &resp.Diagnostics, "fvRsConsIf", data.Id.ValueString()) if resp.Diagnostics.HasError() { return @@ -334,18 +334,18 @@ func (r *FvRsConsIfResource) Delete(ctx context.Context, req resource.DeleteRequ if resp.Diagnostics.HasError() { return } - tflog.Debug(ctx, fmt.Sprintf("End delete of resource aci_relation_to_consumed_contract_interface with id '%s'", data.Id.ValueString())) + tflog.Debug(ctx, fmt.Sprintf("End delete of resource aci_relation_to_imported_contract with id '%s'", data.Id.ValueString())) } func (r *FvRsConsIfResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { - tflog.Debug(ctx, "Start import state of resource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "Start import state of resource: aci_relation_to_imported_contract") resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) var stateData *FvRsConsIfResourceModel resp.Diagnostics.Append(resp.State.Get(ctx, &stateData)...) - tflog.Debug(ctx, fmt.Sprintf("Import state of resource aci_relation_to_consumed_contract_interface with id '%s'", stateData.Id.ValueString())) + tflog.Debug(ctx, fmt.Sprintf("Import state of resource aci_relation_to_imported_contract with id '%s'", stateData.Id.ValueString())) - tflog.Debug(ctx, "End import of state resource: aci_relation_to_consumed_contract_interface") + tflog.Debug(ctx, "End import of state resource: aci_relation_to_imported_contract") } func getAndSetFvRsConsIfAttributes(ctx context.Context, diags *diag.Diagnostics, client *client.Client, data *FvRsConsIfResourceModel) { diff --git a/internal/provider/resource_aci_relation_to_imported_contract_test.go b/internal/provider/resource_aci_relation_to_imported_contract_test.go new file mode 100644 index 000000000..2958d7b10 --- /dev/null +++ b/internal/provider/resource_aci_relation_to_imported_contract_test.go @@ -0,0 +1,452 @@ +// Code generated by "gen/generator.go"; DO NOT EDIT. +// In order to regenerate this file execute `go generate` from the repository root. +// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md). + +package provider + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-testing/helper/resource" +) + +func TestAccResourceFvRsConsIfWithFvAEPg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvRsConsIfMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "priority", "unspecified"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvRsConsIfAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotation", "annotation"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "priority", "level1"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvRsConsIfMinDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvRsConsIfResetDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "priority", "unspecified"), + ), + }, + // Import testing + { + ResourceName: "aci_relation_to_imported_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "priority", "unspecified"), + ), + }, + // Update with children + { + Config: testConfigFvRsConsIfChildrenDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_relation_to_imported_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvRsConsIfChildrenRemoveFromConfigDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvRsConsIfChildrenRemoveOneDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvRsConsIfChildrenRemoveAllDependencyWithFvAEPg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.#", "0"), + ), + }, + }, + }) +} +func TestAccResourceFvRsConsIfWithFvESg(t *testing.T) { + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + Steps: []resource.TestStep{ + // Create with minimum config and verify default APIC values + { + Config: testConfigFvRsConsIfMinDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "priority", "unspecified"), + ), + }, + // Update with all config and verify default APIC values + { + Config: testConfigFvRsConsIfAllDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotation", "annotation"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "priority", "level1"), + ), + }, + // Update with minimum config and verify config is unchanged + { + Config: testConfigFvRsConsIfMinDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + ), + }, + // Update with empty strings config or default value + { + Config: testConfigFvRsConsIfResetDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "priority", "unspecified"), + ), + }, + // Import testing + { + ResourceName: "aci_relation_to_imported_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "priority", "unspecified"), + ), + }, + // Update with children + { + Config: testConfigFvRsConsIfChildrenDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.1.value", "value_2"), + ), + }, + // Import testing with children + { + ResourceName: "aci_relation_to_imported_contract.test", + ImportState: true, + ImportStateVerify: true, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "imported_contract_name", "test_tn_vz_cp_if_name"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotation", "orchestrator:terraform"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "priority", "unspecified"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.1.value", "value_2"), + ), + }, + // Update with children removed from config + { + Config: testConfigFvRsConsIfChildrenRemoveFromConfigDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.#", "2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.key", "key_0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.value", "value_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.1.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.1.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.#", "2"), + ), + }, + // Update with children first child removed + { + Config: testConfigFvRsConsIfChildrenRemoveOneDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.#", "1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.key", "key_1"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.0.value", "value_2"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.#", "1"), + ), + }, + // Update with all children removed + { + Config: testConfigFvRsConsIfChildrenRemoveAllDependencyWithFvESg, + ExpectNonEmptyPlan: false, + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "annotations.#", "0"), + resource.TestCheckResourceAttr("aci_relation_to_imported_contract.test", "tags.#", "0"), + ), + }, + }, + }) +} + +const testConfigFvRsConsIfMinDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_application_epg.test.id + imported_contract_name = "test_tn_vz_cp_if_name" +} +` + +const testConfigFvRsConsIfAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_application_epg.test.id + imported_contract_name = "test_tn_vz_cp_if_name" + annotation = "annotation" + priority = "level1" +} +` + +const testConfigFvRsConsIfResetDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_application_epg.test.id + imported_contract_name = "test_tn_vz_cp_if_name" + annotation = "orchestrator:terraform" + priority = "unspecified" +} +` +const testConfigFvRsConsIfChildrenDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_application_epg.test.id + imported_contract_name = "test_tn_vz_cp_if_name" + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsConsIfChildrenRemoveFromConfigDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_application_epg.test.id + imported_contract_name = "test_tn_vz_cp_if_name" +} +` + +const testConfigFvRsConsIfChildrenRemoveOneDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_application_epg.test.id + imported_contract_name = "test_tn_vz_cp_if_name" + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsConsIfChildrenRemoveAllDependencyWithFvAEPg = testConfigFvAEPgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_application_epg.test.id + imported_contract_name = "test_tn_vz_cp_if_name" + annotations = [] + tags = [] +} +` + +const testConfigFvRsConsIfMinDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + imported_contract_name = "test_tn_vz_cp_if_name" +} +` + +const testConfigFvRsConsIfAllDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + imported_contract_name = "test_tn_vz_cp_if_name" + annotation = "annotation" + priority = "level1" +} +` + +const testConfigFvRsConsIfResetDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + imported_contract_name = "test_tn_vz_cp_if_name" + annotation = "orchestrator:terraform" + priority = "unspecified" +} +` +const testConfigFvRsConsIfChildrenDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + imported_contract_name = "test_tn_vz_cp_if_name" + annotations = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_0" + value = "value_1" + }, + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsConsIfChildrenRemoveFromConfigDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + imported_contract_name = "test_tn_vz_cp_if_name" +} +` + +const testConfigFvRsConsIfChildrenRemoveOneDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + imported_contract_name = "test_tn_vz_cp_if_name" + annotations = [ + { + key = "key_1" + value = "value_2" + }, + ] + tags = [ + { + key = "key_1" + value = "value_2" + }, + ] +} +` + +const testConfigFvRsConsIfChildrenRemoveAllDependencyWithFvESg = testConfigFvESgMinDependencyWithFvAp + ` +resource "aci_relation_to_imported_contract" "test" { + parent_dn = aci_endpoint_security_group.test.id + imported_contract_name = "test_tn_vz_cp_if_name" + annotations = [] + tags = [] +} +` From 926af494935b73ecd22769d4a0687e62a7769f2c Mon Sep 17 00:00:00 2001 From: akinross Date: Tue, 18 Jun 2024 20:33:05 +0200 Subject: [PATCH 11/22] [ignore] Remove unneeded log statements --- gen/generator.go | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/gen/generator.go b/gen/generator.go index a75bafaed..f0e200ae9 100644 --- a/gen/generator.go +++ b/gen/generator.go @@ -193,18 +193,10 @@ func GetPropertyNameForLegacyAttribute(name string, legacyAttributes map[string] func GetLegacyChildAttribute(className, overwriteProperty string, property Property, legacyAttributes map[string]LegacyAttribute, legacyBlocks []LegacyBlock) string { - if className == "fvRsConsIf" { - log.Println(overwriteProperty) - log.Println(property) - } - for _, legacyBlock := range legacyBlocks { if legacyBlock.ClassName == className { for _, legacyAttribute := range legacyBlock.Attributes { if strings.Contains(legacyAttribute.ReplacedBy.AttributeName, overwriteProperty) { - if className == "fvRsConsIf" { - log.Println(legacyAttribute.Name) - } return legacyAttribute.Name } } @@ -214,9 +206,6 @@ func GetLegacyChildAttribute(className, overwriteProperty string, property Prope for _, legacyAttribute := range legacyAttributes { if strings.Contains(legacyAttribute.ReplacedBy.AttributeName, overwriteProperty) { - if className == "fvRsConsIf" { - log.Println(className) - } return Capitalize(className) } } From 61f66465eaf496cada7a9e9aa9ae33987622b561 Mon Sep 17 00:00:00 2001 From: akinross Date: Sat, 22 Jun 2024 10:29:26 +0200 Subject: [PATCH 12/22] [ignore] Documentation update for esg preferred group member and intra esg isolation --- docs/data-sources/endpoint_security_group.md | 4 ++-- docs/resources/endpoint_security_group.md | 4 ++-- gen/definitions/properties.yaml | 3 +++ internal/provider/data_source_aci_endpoint_security_group.go | 4 ++-- internal/provider/resource_aci_endpoint_security_group.go | 4 ++-- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/data-sources/endpoint_security_group.md b/docs/data-sources/endpoint_security_group.md index 9a9ba6af6..a1f13affa 100644 --- a/docs/data-sources/endpoint_security_group.md +++ b/docs/data-sources/endpoint_security_group.md @@ -53,8 +53,8 @@ data "aci_endpoint_security_group" "example_application_profile" { * `exception_tag` (exceptionTag) - (string) Contract Exception Tag. * `match_criteria` (matchT) - (string) The provider label match criteria. * `name_alias` (nameAlias) - (string) The name alias of the Endpoint Security Group object. -* `intra_esg_isolation` (pcEnfPref) - (string) Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this EPG. -* `preferred_group_member` (prefGrMemb) - (string) Represents parameter used to determine if EPg is part of a group that does not a contract for communication. +* `intra_esg_isolation` (pcEnfPref) - (string) Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this ESG. +* `preferred_group_member` (prefGrMemb) - (string) Represents parameter used to determine if the ESG is part of a group that is not a contract for communication. * `admin_state` (shutdown) - (string) Withdraw ESg Configuration from all Nodes in the Fabric. * `relation_to_consumed_contracts` - (list) A list of Relation To Consumed Contracts (ACI object [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. diff --git a/docs/resources/endpoint_security_group.md b/docs/resources/endpoint_security_group.md index a8e3757b5..52536853e 100644 --- a/docs/resources/endpoint_security_group.md +++ b/docs/resources/endpoint_security_group.md @@ -137,10 +137,10 @@ All examples for the Endpoint Security Group resource can be found in the [examp - Default: `AtleastOne` - Valid Values: `All`, `AtleastOne`, `AtmostOne`, `None`. * `name_alias` (nameAlias) - (string) The name alias of the Endpoint Security Group object. -* `intra_esg_isolation` (pcEnfPref) - (string) Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this EPG. +* `intra_esg_isolation` (pcEnfPref) - (string) Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this ESG. - Default: `unenforced` - Valid Values: `enforced`, `unenforced`. -* `preferred_group_member` (prefGrMemb) - (string) Represents parameter used to determine if EPg is part of a group that does not a contract for communication. +* `preferred_group_member` (prefGrMemb) - (string) Represents parameter used to determine if the ESG is part of a group that is not a contract for communication. - Default: `exclude` - Valid Values: `exclude`, `include`. * `admin_state` (shutdown) - (string) Withdraw ESg Configuration from all Nodes in the Fabric. diff --git a/gen/definitions/properties.yaml b/gen/definitions/properties.yaml index 729c9e3a9..edfb8bd8d 100644 --- a/gen/definitions/properties.yaml +++ b/gen/definitions/properties.yaml @@ -330,6 +330,9 @@ fvESg: pref_gr_memb: "preferred_group_member" pc_enf_pref: "intra_esg_isolation" shutdown: "admin_state" + documentation: + prefGrMemb: "Represents parameter used to determine if the ESG is part of a group that is not a contract for communication." + pcEnfPref: "Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this ESG." parents: - class_name: "fvAp" parent_dependency: "fvTenant" diff --git a/internal/provider/data_source_aci_endpoint_security_group.go b/internal/provider/data_source_aci_endpoint_security_group.go index 05de60f41..0b779f908 100644 --- a/internal/provider/data_source_aci_endpoint_security_group.go +++ b/internal/provider/data_source_aci_endpoint_security_group.go @@ -107,11 +107,11 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "intra_esg_isolation": schema.StringAttribute{ Computed: true, - MarkdownDescription: `Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this EPG.`, + MarkdownDescription: `Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this ESG.`, }, "preferred_group_member": schema.StringAttribute{ Computed: true, - MarkdownDescription: `Represents parameter used to determine if EPg is part of a group that does not a contract for communication.`, + MarkdownDescription: `Represents parameter used to determine if the ESG is part of a group that is not a contract for communication.`, }, "admin_state": schema.StringAttribute{ Computed: true, diff --git a/internal/provider/resource_aci_endpoint_security_group.go b/internal/provider/resource_aci_endpoint_security_group.go index cfa52defb..bc6037628 100644 --- a/internal/provider/resource_aci_endpoint_security_group.go +++ b/internal/provider/resource_aci_endpoint_security_group.go @@ -1079,7 +1079,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("enforced", "unenforced"), }, - MarkdownDescription: `Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this EPG.`, + MarkdownDescription: `Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this ESG.`, }, "preferred_group_member": schema.StringAttribute{ Optional: true, @@ -1090,7 +1090,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("exclude", "include"), }, - MarkdownDescription: `Represents parameter used to determine if EPg is part of a group that does not a contract for communication.`, + MarkdownDescription: `Represents parameter used to determine if the ESG is part of a group that is not a contract for communication.`, }, "admin_state": schema.StringAttribute{ Optional: true, From dda296868374f8dcfd1fcb1ef7f9f1af73e45351 Mon Sep 17 00:00:00 2001 From: akinross Date: Wed, 26 Jun 2024 08:32:51 +0200 Subject: [PATCH 13/22] [ignore] Fix typo in documentation for distinguished in datasources --- docs/data-sources/relation_to_consumed_contract.md | 2 +- docs/data-sources/relation_to_contract_master.md | 2 +- docs/data-sources/relation_to_imported_contract.md | 2 +- docs/data-sources/relation_to_intra_epg_contract.md | 2 +- docs/data-sources/relation_to_provided_contract.md | 2 +- docs/data-sources/relation_to_taboo_contract.md | 2 +- docs/resources/relation_to_consumed_contract.md | 2 +- docs/resources/relation_to_contract_master.md | 2 +- docs/resources/relation_to_imported_contract.md | 2 +- docs/resources/relation_to_intra_epg_contract.md | 2 +- docs/resources/relation_to_provided_contract.md | 2 +- docs/resources/relation_to_taboo_contract.md | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/data-sources/relation_to_consumed_contract.md b/docs/data-sources/relation_to_consumed_contract.md index fa00968c9..04f52c510 100644 --- a/docs/data-sources/relation_to_consumed_contract.md +++ b/docs/data-sources/relation_to_consumed_contract.md @@ -60,7 +60,7 @@ data "aci_relation_to_consumed_contract" "example_endpoint_security_group" { - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) diff --git a/docs/data-sources/relation_to_contract_master.md b/docs/data-sources/relation_to_contract_master.md index 24dcc5efc..9005e66f6 100644 --- a/docs/data-sources/relation_to_contract_master.md +++ b/docs/data-sources/relation_to_contract_master.md @@ -56,7 +56,7 @@ data "aci_relation_to_contract_master" "example_endpoint_security_group" { - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) diff --git a/docs/data-sources/relation_to_imported_contract.md b/docs/data-sources/relation_to_imported_contract.md index 05f95b0c7..4a12b7cb7 100644 --- a/docs/data-sources/relation_to_imported_contract.md +++ b/docs/data-sources/relation_to_imported_contract.md @@ -60,7 +60,7 @@ data "aci_relation_to_imported_contract" "example_endpoint_security_group" { - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) diff --git a/docs/data-sources/relation_to_intra_epg_contract.md b/docs/data-sources/relation_to_intra_epg_contract.md index 45f706e26..821cd52fd 100644 --- a/docs/data-sources/relation_to_intra_epg_contract.md +++ b/docs/data-sources/relation_to_intra_epg_contract.md @@ -58,7 +58,7 @@ data "aci_relation_to_intra_epg_contract" "example_endpoint_security_group" { - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) diff --git a/docs/data-sources/relation_to_provided_contract.md b/docs/data-sources/relation_to_provided_contract.md index a8d622256..0d438f7b1 100644 --- a/docs/data-sources/relation_to_provided_contract.md +++ b/docs/data-sources/relation_to_provided_contract.md @@ -60,7 +60,7 @@ data "aci_relation_to_provided_contract" "example_endpoint_security_group" { - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) diff --git a/docs/data-sources/relation_to_taboo_contract.md b/docs/data-sources/relation_to_taboo_contract.md index b6591fff1..6cd11a440 100644 --- a/docs/data-sources/relation_to_taboo_contract.md +++ b/docs/data-sources/relation_to_taboo_contract.md @@ -53,7 +53,7 @@ data "aci_relation_to_taboo_contract" "example_application_epg" { - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) diff --git a/docs/resources/relation_to_consumed_contract.md b/docs/resources/relation_to_consumed_contract.md index 3bd7a86f8..16994e11f 100644 --- a/docs/resources/relation_to_consumed_contract.md +++ b/docs/resources/relation_to_consumed_contract.md @@ -111,7 +111,7 @@ All examples for the Relation To Consumed Contract resource can be found in the - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) diff --git a/docs/resources/relation_to_contract_master.md b/docs/resources/relation_to_contract_master.md index 8c4f3cc88..fc36b6a29 100644 --- a/docs/resources/relation_to_contract_master.md +++ b/docs/resources/relation_to_contract_master.md @@ -105,7 +105,7 @@ All examples for the Relation To Contract Master resource can be found in the [e - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) diff --git a/docs/resources/relation_to_imported_contract.md b/docs/resources/relation_to_imported_contract.md index fbe00b351..c448b03dc 100644 --- a/docs/resources/relation_to_imported_contract.md +++ b/docs/resources/relation_to_imported_contract.md @@ -111,7 +111,7 @@ All examples for the Relation To Imported Contract resource can be found in the - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) diff --git a/docs/resources/relation_to_intra_epg_contract.md b/docs/resources/relation_to_intra_epg_contract.md index 964d6345b..c513238e1 100644 --- a/docs/resources/relation_to_intra_epg_contract.md +++ b/docs/resources/relation_to_intra_epg_contract.md @@ -107,7 +107,7 @@ All examples for the Relation To Intra Epg Contract resource can be found in the - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) diff --git a/docs/resources/relation_to_provided_contract.md b/docs/resources/relation_to_provided_contract.md index de8896c41..077568c5f 100644 --- a/docs/resources/relation_to_provided_contract.md +++ b/docs/resources/relation_to_provided_contract.md @@ -113,7 +113,7 @@ All examples for the Relation To Provided Contract resource can be found in the - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) diff --git a/docs/resources/relation_to_taboo_contract.md b/docs/resources/relation_to_taboo_contract.md index b3166a053..09dd5b205 100644 --- a/docs/resources/relation_to_taboo_contract.md +++ b/docs/resources/relation_to_taboo_contract.md @@ -84,7 +84,7 @@ All examples for the Relation To Taboo Contract resource can be found in the [ex - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - The distinquised name (DN) of classes below can be used but currently there is no available resource for it: + - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) From 7d7be7a16345a25bf766106aac3b4fc3479643ef Mon Sep 17 00:00:00 2001 From: akinross Date: Tue, 2 Jul 2024 09:55:07 +0200 Subject: [PATCH 14/22] [ignore] Changing variable naming in go generate and fix resource names in class definition file --- docs/data-sources/annotation.md | 8 ++++---- .../relation_to_consumed_contract.md | 12 ++++++------ .../relation_to_contract_master.md | 12 ++++++------ .../relation_to_imported_contract.md | 12 ++++++------ .../relation_to_intra_epg_contract.md | 12 ++++++------ .../relation_to_provided_contract.md | 12 ++++++------ .../data-sources/relation_to_taboo_contract.md | 12 ++++++------ docs/data-sources/tag.md | 8 ++++---- docs/resources/annotation.md | 8 ++++---- .../resources/relation_to_consumed_contract.md | 12 ++++++------ docs/resources/relation_to_contract_master.md | 12 ++++++------ .../resources/relation_to_imported_contract.md | 12 ++++++------ .../relation_to_intra_epg_contract.md | 12 ++++++------ .../resources/relation_to_provided_contract.md | 12 ++++++------ docs/resources/relation_to_taboo_contract.md | 12 ++++++------ docs/resources/tag.md | 8 ++++---- gen/definitions/classes.yaml | 16 ++++++++++++++-- gen/generator.go | 18 +++++++++--------- gen/templates/datasource.md.tmpl | 4 ++-- gen/templates/resource.md.tmpl | 4 ++-- 20 files changed, 115 insertions(+), 103 deletions(-) diff --git a/docs/data-sources/annotation.md b/docs/data-sources/annotation.md index b256676d4..e14942a75 100644 --- a/docs/data-sources/annotation.md +++ b/docs/data-sources/annotation.md @@ -54,6 +54,9 @@ data "aci_annotation" "example_application_epg" { * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - Too many parent DNs to display, see model documentation for all possible parents of [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview). + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_application_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_profile) ([fvAp](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAp/overview)) - [aci_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf) ([fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)) @@ -70,10 +73,7 @@ data "aci_annotation" "example_application_epg" { - [aci_relation_to_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_vrf) ([fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) - [aci_relation_to_contract_master](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_contract_master) ([fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) - [aci_tenant](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tenant) ([fvTenant](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTenant/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_l3out_consumer_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_consumer_label) ([l3extConsLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extConsLbl/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - [aci_logical_node_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_profile) ([l3extLNodeP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLNodeP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) * `key` (key) - (string) The key used to uniquely identify this configuration object. ### Read-Only ### diff --git a/docs/data-sources/relation_to_consumed_contract.md b/docs/data-sources/relation_to_consumed_contract.md index 04f52c510..de28ffdec 100644 --- a/docs/data-sources/relation_to_consumed_contract.md +++ b/docs/data-sources/relation_to_consumed_contract.md @@ -56,15 +56,16 @@ data "aci_relation_to_consumed_contract" "example_endpoint_security_group" { ### Required ### * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_node_mgmt_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/node_mgmt_epg) ([mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview)) - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) - - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) @@ -72,7 +73,6 @@ data "aci_relation_to_consumed_contract" "example_endpoint_security_group" { - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) diff --git a/docs/data-sources/relation_to_contract_master.md b/docs/data-sources/relation_to_contract_master.md index 9005e66f6..ce006ec12 100644 --- a/docs/data-sources/relation_to_contract_master.md +++ b/docs/data-sources/relation_to_contract_master.md @@ -52,15 +52,16 @@ data "aci_relation_to_contract_master" "example_endpoint_security_group" { ### Required ### * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_node_mgmt_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/node_mgmt_epg) ([mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview)) - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) - - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) @@ -68,7 +69,6 @@ data "aci_relation_to_contract_master" "example_endpoint_security_group" { - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) diff --git a/docs/data-sources/relation_to_imported_contract.md b/docs/data-sources/relation_to_imported_contract.md index 4a12b7cb7..6036858cb 100644 --- a/docs/data-sources/relation_to_imported_contract.md +++ b/docs/data-sources/relation_to_imported_contract.md @@ -56,15 +56,16 @@ data "aci_relation_to_imported_contract" "example_endpoint_security_group" { ### Required ### * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_node_mgmt_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/node_mgmt_epg) ([mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview)) - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) - - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) @@ -72,7 +73,6 @@ data "aci_relation_to_imported_contract" "example_endpoint_security_group" { - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) diff --git a/docs/data-sources/relation_to_intra_epg_contract.md b/docs/data-sources/relation_to_intra_epg_contract.md index 821cd52fd..6d6ce618a 100644 --- a/docs/data-sources/relation_to_intra_epg_contract.md +++ b/docs/data-sources/relation_to_intra_epg_contract.md @@ -54,15 +54,16 @@ data "aci_relation_to_intra_epg_contract" "example_endpoint_security_group" { ### Required ### * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_node_mgmt_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/node_mgmt_epg) ([mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview)) - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) - - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) @@ -70,7 +71,6 @@ data "aci_relation_to_intra_epg_contract" "example_endpoint_security_group" { - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) diff --git a/docs/data-sources/relation_to_provided_contract.md b/docs/data-sources/relation_to_provided_contract.md index 0d438f7b1..e65638895 100644 --- a/docs/data-sources/relation_to_provided_contract.md +++ b/docs/data-sources/relation_to_provided_contract.md @@ -56,15 +56,16 @@ data "aci_relation_to_provided_contract" "example_endpoint_security_group" { ### Required ### * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_node_mgmt_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/node_mgmt_epg) ([mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview)) - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) - - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) @@ -72,7 +73,6 @@ data "aci_relation_to_provided_contract" "example_endpoint_security_group" { - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) diff --git a/docs/data-sources/relation_to_taboo_contract.md b/docs/data-sources/relation_to_taboo_contract.md index 6cd11a440..356976eaf 100644 --- a/docs/data-sources/relation_to_taboo_contract.md +++ b/docs/data-sources/relation_to_taboo_contract.md @@ -49,15 +49,16 @@ data "aci_relation_to_taboo_contract" "example_application_epg" { ### Required ### * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_node_mgmt_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/node_mgmt_epg) ([mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview)) - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) - - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) @@ -65,7 +66,6 @@ data "aci_relation_to_taboo_contract" "example_application_epg" { - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) diff --git a/docs/data-sources/tag.md b/docs/data-sources/tag.md index b1c3020c6..bdf58c353 100644 --- a/docs/data-sources/tag.md +++ b/docs/data-sources/tag.md @@ -54,6 +54,9 @@ data "aci_tag" "example_application_epg" { * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - Too many parent DNs to display, see model documentation for all possible parents of [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview). + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_application_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_profile) ([fvAp](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAp/overview)) - [aci_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf) ([fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)) @@ -70,10 +73,7 @@ data "aci_tag" "example_application_epg" { - [aci_relation_to_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_vrf) ([fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) - [aci_relation_to_contract_master](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_contract_master) ([fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) - [aci_tenant](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tenant) ([fvTenant](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTenant/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_l3out_consumer_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_consumer_label) ([l3extConsLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extConsLbl/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - [aci_logical_node_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_profile) ([l3extLNodeP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLNodeP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) * `key` (key) - (string) The key used to uniquely identify this configuration object. ### Read-Only ### diff --git a/docs/resources/annotation.md b/docs/resources/annotation.md index 660924f1e..80e5f1e97 100644 --- a/docs/resources/annotation.md +++ b/docs/resources/annotation.md @@ -63,6 +63,9 @@ All examples for the Annotation resource can be found in the [examples](https:// * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - Too many parent DNs to display, see model documentation for all possible parents of [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview). + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_application_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_profile) ([fvAp](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAp/overview)) - [aci_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf) ([fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)) @@ -79,10 +82,7 @@ All examples for the Annotation resource can be found in the [examples](https:// - [aci_relation_to_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_vrf) ([fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) - [aci_relation_to_contract_master](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_contract_master) ([fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) - [aci_tenant](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tenant) ([fvTenant](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTenant/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_l3out_consumer_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_consumer_label) ([l3extConsLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extConsLbl/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - [aci_logical_node_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_profile) ([l3extLNodeP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLNodeP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) * `key` (key) - (string) The key used to uniquely identify this configuration object. * `value` (value) - (string) The value of the property. diff --git a/docs/resources/relation_to_consumed_contract.md b/docs/resources/relation_to_consumed_contract.md index 16994e11f..cf6d605a2 100644 --- a/docs/resources/relation_to_consumed_contract.md +++ b/docs/resources/relation_to_consumed_contract.md @@ -107,15 +107,16 @@ All examples for the Relation To Consumed Contract resource can be found in the ### Required ### * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_node_mgmt_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/node_mgmt_epg) ([mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview)) - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) - - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) @@ -123,7 +124,6 @@ All examples for the Relation To Consumed Contract resource can be found in the - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) diff --git a/docs/resources/relation_to_contract_master.md b/docs/resources/relation_to_contract_master.md index fc36b6a29..bbd916654 100644 --- a/docs/resources/relation_to_contract_master.md +++ b/docs/resources/relation_to_contract_master.md @@ -101,15 +101,16 @@ All examples for the Relation To Contract Master resource can be found in the [e ### Required ### * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_node_mgmt_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/node_mgmt_epg) ([mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview)) - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) - - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) @@ -117,7 +118,6 @@ All examples for the Relation To Contract Master resource can be found in the [e - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) diff --git a/docs/resources/relation_to_imported_contract.md b/docs/resources/relation_to_imported_contract.md index c448b03dc..3a2de5da4 100644 --- a/docs/resources/relation_to_imported_contract.md +++ b/docs/resources/relation_to_imported_contract.md @@ -107,15 +107,16 @@ All examples for the Relation To Imported Contract resource can be found in the ### Required ### * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_node_mgmt_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/node_mgmt_epg) ([mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview)) - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) - - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) @@ -123,7 +124,6 @@ All examples for the Relation To Imported Contract resource can be found in the - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) diff --git a/docs/resources/relation_to_intra_epg_contract.md b/docs/resources/relation_to_intra_epg_contract.md index c513238e1..3351e5b37 100644 --- a/docs/resources/relation_to_intra_epg_contract.md +++ b/docs/resources/relation_to_intra_epg_contract.md @@ -103,15 +103,16 @@ All examples for the Relation To Intra Epg Contract resource can be found in the ### Required ### * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_node_mgmt_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/node_mgmt_epg) ([mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview)) - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) - - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) @@ -119,7 +120,6 @@ All examples for the Relation To Intra Epg Contract resource can be found in the - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) diff --git a/docs/resources/relation_to_provided_contract.md b/docs/resources/relation_to_provided_contract.md index 077568c5f..256ded058 100644 --- a/docs/resources/relation_to_provided_contract.md +++ b/docs/resources/relation_to_provided_contract.md @@ -109,15 +109,16 @@ All examples for the Relation To Provided Contract resource can be found in the ### Required ### * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_node_mgmt_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/node_mgmt_epg) ([mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview)) - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) - - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) @@ -125,7 +126,6 @@ All examples for the Relation To Provided Contract resource can be found in the - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) diff --git a/docs/resources/relation_to_taboo_contract.md b/docs/resources/relation_to_taboo_contract.md index 09dd5b205..7277e3d28 100644 --- a/docs/resources/relation_to_taboo_contract.md +++ b/docs/resources/relation_to_taboo_contract.md @@ -80,15 +80,16 @@ All examples for the Relation To Taboo Contract resource can be found in the [ex ### Required ### * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) ([fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) + - [aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) + - [aci_node_mgmt_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/node_mgmt_epg) ([mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview)) - The distinguished name (DN) of classes below can be used but currently there is no available resource for it: - - [cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview) - - [cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview) - [cloudISvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudISvcEPg/overview) - - [cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview) - [dhcpCRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpCRelPg/overview) - [dhcpPRelPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/dhcpPRelPg/overview) - [fvIntEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvIntEPg/overview) @@ -96,7 +97,6 @@ All examples for the Relation To Taboo Contract resource can be found in the [ex - [infraCEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraCEPg/overview) - [infraPEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/infraPEPg/overview) - [l3extInstPDef](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstPDef/overview) - - [mgmtInB](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtInB/overview) - [vnsEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsEPpInfo/overview) - [vnsREPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsREPpInfo/overview) - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) diff --git a/docs/resources/tag.md b/docs/resources/tag.md index 10d696e62..3873a280e 100644 --- a/docs/resources/tag.md +++ b/docs/resources/tag.md @@ -63,6 +63,9 @@ All examples for the Tag resource can be found in the [examples](https://github. * `parent_dn` - (string) The distinguished name (DN) of the parent object, possible resources: - Too many parent DNs to display, see model documentation for all possible parents of [tagTag](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagTag/overview). + - [aci_cloud_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_epg) ([cloudEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudEPg/overview)) + - [aci_cloud_external_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_external_epg) ([cloudExtEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudExtEPg/overview)) + - [aci_cloud_service_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/cloud_service_epg) ([cloudSvcEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/cloudSvcEPg/overview)) - [aci_application_epg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_epg) ([fvAEPg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAEPg/overview)) - [aci_application_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/application_profile) ([fvAp](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvAp/overview)) - [aci_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf) ([fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)) @@ -79,10 +82,7 @@ All examples for the Tag resource can be found in the [examples](https://github. - [aci_relation_to_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_vrf) ([fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) - [aci_relation_to_contract_master](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/relation_to_contract_master) ([fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) - [aci_tenant](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/tenant) ([fvTenant](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvTenant/overview)) - - [aci_aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) - - [aci_l3out_consumer_label](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l3out_consumer_label) ([l3extConsLbl](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extConsLbl/overview)) - - [aci_aci_external_network_instance_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/aci_external_network_instance_profile) ([l3extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extInstP/overview)) - - [aci_logical_node_profile](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/logical_node_profile) ([l3extLNodeP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l3extLNodeP/overview)) + - [aci_l2out_extepg](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/l2out_extepg) ([l2extInstP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/l2extInstP/overview)) * `key` (key) - (string) The key used to uniquely identify this configuration object. * `value` (value) - (string) The value of the property. diff --git a/gen/definitions/classes.yaml b/gen/definitions/classes.yaml index d95db9b9c..ed23dfa37 100644 --- a/gen/definitions/classes.yaml +++ b/gen/definitions/classes.yaml @@ -20,6 +20,18 @@ fvCtx: vzCPIf: resource_name: "imported_contract" +cloudEPg: + resource_name: "cloud_epg" + +cloudExtEPg: + resource_name: "cloud_external_epg" + +cloudSvcEPg: + resource_name: "cloud_service_epg" + +mgmtInB: + resource_name: "node_mgmt_epg" + rtctrlProfile: resource_name: "route_control_profile" rn_format: "/prof-{name}" @@ -71,10 +83,10 @@ mgmtRsOoBCons: sub_category: "Node Management" l2extInstP: - resource_name: "aci_l2out_extepg" + resource_name: "l2out_extepg" l3extInstP: - resource_name: "aci_external_network_instance_profile" + resource_name: "external_network_instance_profile" l3extOut: resource_name: "l3_outside" diff --git a/gen/generator.go b/gen/generator.go index f0e200ae9..86d5c37ac 100644 --- a/gen/generator.go +++ b/gen/generator.go @@ -716,8 +716,8 @@ func main() { // When done before additional files would need to be opened and read which would slow down the generation process model.ResourceName = GetResourceName(model.PkgName, definitions) - for _, relationshipClass := range model.RelationshipClass { - model.RelationshipResourceName = append(model.RelationshipResourceName, GetResourceName(relationshipClass, definitions)) + for _, relationshipClass := range model.RelationshipClasses { + model.RelationshipResourceNames = append(model.RelationshipResourceNames, GetResourceName(relationshipClass, definitions)) } childMap := make(map[string]Model, 0) for childName, childModel := range model.Children { @@ -729,8 +729,8 @@ func main() { } else { childModel.ResourceName = childModel.ChildResourceName } - for _, relationshipClass := range childModel.RelationshipClass { - childModel.RelationshipResourceName = append(childModel.RelationshipResourceName, GetResourceName(relationshipClass, definitions)) + for _, relationshipClass := range childModel.RelationshipClasses { + childModel.RelationshipResourceNames = append(childModel.RelationshipResourceNames, GetResourceName(relationshipClass, definitions)) } childMap[childName] = childModel } @@ -809,8 +809,8 @@ type Model struct { ExampleResource string ExampleResourceFull string SubCategory string - RelationshipClass []string - RelationshipResourceName []string + RelationshipClasses []string + RelationshipResourceNames []string Versions string ChildClasses []string ContainedBy []string @@ -1068,9 +1068,9 @@ func (m *Model) SetClassName(classDetails interface{}) { func (m *Model) SetClassRnFormat(classDetails interface{}) { m.GetOverwriteRnFormat(classDetails.(map[string]interface{})["rnFormat"].(string)) - if strings.HasPrefix(m.RnFormat, "rs") && len(m.RelationshipClass) == 0 { + if strings.HasPrefix(m.RnFormat, "rs") && len(m.RelationshipClasses) == 0 { toMo := classDetails.(map[string]interface{})["relationInfo"].(map[string]interface{})["toMo"].(string) - m.RelationshipClass = []string{strings.Replace(toMo, ":", "", 1)} + m.RelationshipClasses = []string{strings.Replace(toMo, ":", "", 1)} } } @@ -1085,7 +1085,7 @@ func (m *Model) SetRelationshipClasses(definitions Definitions) { } for _, className := range overwriteExampleClasses { - m.RelationshipClass = append(m.RelationshipClass, className.(string)) + m.RelationshipClasses = append(m.RelationshipClasses, className.(string)) } } diff --git a/gen/templates/datasource.md.tmpl b/gen/templates/datasource.md.tmpl index 796ddac2d..c9cc8c350 100644 --- a/gen/templates/datasource.md.tmpl +++ b/gen/templates/datasource.md.tmpl @@ -78,9 +78,9 @@ Data source for {{.ResourceNameAsDescription}} {{- end}} {{- end}} {{- end}} -{{ range .Children }}{{$childVersion := .Versions}}{{$RelationshipClass := .RelationshipClass}}{{$length := len .RelationshipClass}} +{{ range .Children }}{{$childVersion := .Versions}}{{$RelationshipClasses := .RelationshipClasses}}{{$length := len .RelationshipClasses}} {{- if ge $length 1}} -* `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}) pointing to {{range $index, $value := .RelationshipResourceName}}{{- if or (eq $length 1) (eq $.PkgName (index $RelationshipClass $index))}}{{getResourceNameAsDescription $value $.Definitions}} (ACI Object {{getDevnetDocForClass (index $RelationshipClass $index)}}){{end}}{{end}}.{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} +* `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}) pointing to {{range $index, $value := .RelationshipResourceNames}}{{- if or (eq $length 1) (eq $.PkgName (index $RelationshipClasses $index))}}{{getResourceNameAsDescription $value $.Definitions}} (ACI Object {{getDevnetDocForClass (index $RelationshipClasses $index)}}){{end}}{{end}}.{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} {{- else}} * `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}).{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} {{- end}} diff --git a/gen/templates/resource.md.tmpl b/gen/templates/resource.md.tmpl index adc5a58e6..b8a892791 100644 --- a/gen/templates/resource.md.tmpl +++ b/gen/templates/resource.md.tmpl @@ -118,9 +118,9 @@ All examples for the {{.ResourceNameAsDescription}} resource can be found in the {{- end}} {{- end}} {{- end}} -{{ range .Children }}{{$childVersion := .Versions}}{{$RelationshipClass := .RelationshipClass}}{{$length := len .RelationshipClass}} +{{ range .Children }}{{$childVersion := .Versions}}{{$RelationshipClasses := .RelationshipClasses}}{{$length := len .RelationshipClasses}} {{- if ge $length 1}} -* `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}) pointing to {{range $index, $value := .RelationshipResourceName}}{{- if or (eq $length 1) (eq $.PkgName (index $RelationshipClass $index))}}{{getResourceNameAsDescription $value $.Definitions}} (ACI Object {{getDevnetDocForClass (index $RelationshipClass $index)}}) which can be configured using the [aci_{{($value)}}](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/{{($value)}}) resource{{end}}{{end}}.{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} +* `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}) pointing to {{range $index, $value := .RelationshipResourceNames}}{{- if or (eq $length 1) (eq $.PkgName (index $RelationshipClasses $index))}}{{getResourceNameAsDescription $value $.Definitions}} (ACI Object {{getDevnetDocForClass (index $RelationshipClasses $index)}}) which can be configured using the [aci_{{($value)}}](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/{{($value)}}) resource{{end}}{{end}}.{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} {{- else}} * `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}). {{getResourceNameAsDescription .ResourceName $.Definitions}} can also be configured using a separate [aci_{{.ResourceNameDocReference}}](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/{{.ResourceNameDocReference}}) resource.{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} {{- end}} From 230b9deee824ff2a48a17dac6d53c71c60f381cb Mon Sep 17 00:00:00 2001 From: akinross Date: Tue, 2 Jul 2024 10:50:57 +0200 Subject: [PATCH 15/22] [ignore] Fix examples for target_dns in data-sources --- docs/data-sources/relation_to_contract_master.md | 4 ++-- .../aci_relation_to_contract_master/data-source.tf | 4 ++-- gen/templates/datasource_example.tf.tmpl | 11 ++++++++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/docs/data-sources/relation_to_contract_master.md b/docs/data-sources/relation_to_contract_master.md index ce006ec12..92fc00879 100644 --- a/docs/data-sources/relation_to_contract_master.md +++ b/docs/data-sources/relation_to_contract_master.md @@ -37,12 +37,12 @@ Data source for Relation To Contract Master data "aci_relation_to_contract_master" "example_application_epg" { parent_dn = aci_application_epg.example.id - target_dn = aci_endpoint_security_group.example.id + target_dn = aci_application_epg.example_2.id } data "aci_relation_to_contract_master" "example_endpoint_security_group" { parent_dn = aci_endpoint_security_group.example.id - target_dn = aci_endpoint_security_group.example.id + target_dn = aci_endpoint_security_group.example_2.id } ``` diff --git a/examples/data-sources/aci_relation_to_contract_master/data-source.tf b/examples/data-sources/aci_relation_to_contract_master/data-source.tf index 54d0e40c6..1db04ee37 100644 --- a/examples/data-sources/aci_relation_to_contract_master/data-source.tf +++ b/examples/data-sources/aci_relation_to_contract_master/data-source.tf @@ -1,10 +1,10 @@ data "aci_relation_to_contract_master" "example_application_epg" { parent_dn = aci_application_epg.example.id - target_dn = aci_endpoint_security_group.example.id + target_dn = aci_application_epg.example_2.id } data "aci_relation_to_contract_master" "example_endpoint_security_group" { parent_dn = aci_endpoint_security_group.example.id - target_dn = aci_endpoint_security_group.example.id + target_dn = aci_endpoint_security_group.example_2.id } diff --git a/gen/templates/datasource_example.tf.tmpl b/gen/templates/datasource_example.tf.tmpl index 2cc2990df..c5c868d12 100644 --- a/gen/templates/datasource_example.tf.tmpl +++ b/gen/templates/datasource_example.tf.tmpl @@ -1,12 +1,17 @@ -{{- if .DocumentationExamples}}{{- range $key := .DocumentationExamples}} +{{- if .DocumentationExamples}}{{$parentIndex := 0}}{{- range $key := .DocumentationExamples}} data "aci_{{$.ResourceName}}" "example_{{getResourceName $key $.Definitions}}" { {{- if $.HasParent}} parent_dn = {{createParentDnValue $key "example" $.Definitions}} {{- end}} {{- range $.Properties}}{{- if .IsNaming}}{{- if ne .NamedPropertyClass ""}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = aci_{{getResourceName .NamedPropertyClass $.Definitions}}.example.name - {{- else if eq .SnakeCaseName "t_dn" }} - {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = {{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions | replace ".test_0.id" ".example.id"}} + {{- else if eq .SnakeCaseName "t_dn" }}{{$attributeKey := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- range $index, $testParent := $.TestVars.parents }} + {{- if eq $index $parentIndex }} + {{$attributeKey}} = {{getTestTargetDn $.TestVars.targets $.TestVars.resourceName "" true $testParent.target_classes $index | replace "test" "example" | replace "_0" "" | replace "_1" "_2" }} + {{- $parentIndex = add $parentIndex 1 }}{{- break}} + {{- end}} + {{- end}} {{- else}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = "{{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions}}"{{- end}}{{- end}} {{- end}} From 32589bb86faf47d7db0379cdf186ba51b2be23da Mon Sep 17 00:00:00 2001 From: akinross Date: Tue, 2 Jul 2024 11:38:26 +0200 Subject: [PATCH 16/22] [ignore] Fix examples for target_dns in resources --- docs/resources/endpoint_security_group.md | 2 +- docs/resources/relation_to_contract_master.md | 8 ++++---- .../resource-all-attributes.tf | 2 +- .../resource-all-attributes.tf | 4 ++-- .../aci_relation_to_contract_master/resource.tf | 4 ++-- gen/templates/resource_example.tf.tmpl | 11 ++++++++--- .../resource_example_all_attributes.tf.tmpl | 16 +++++++++++++--- 7 files changed, 31 insertions(+), 16 deletions(-) diff --git a/docs/resources/endpoint_security_group.md b/docs/resources/endpoint_security_group.md index 52536853e..08fb58d06 100644 --- a/docs/resources/endpoint_security_group.md +++ b/docs/resources/endpoint_security_group.md @@ -94,7 +94,7 @@ resource "aci_endpoint_security_group" "full_example_application_profile" { relation_to_contract_masters = [ { annotation = "annotation_1" - target_dn = "target_dn_0" + target_dn = aci_endpoint_security_group.example_2.id } ] annotations = [ diff --git a/docs/resources/relation_to_contract_master.md b/docs/resources/relation_to_contract_master.md index bbd916654..5a14eb6e4 100644 --- a/docs/resources/relation_to_contract_master.md +++ b/docs/resources/relation_to_contract_master.md @@ -41,12 +41,12 @@ The configuration snippet below creates a Relation To Contract Master with only resource "aci_relation_to_contract_master" "example_application_epg" { parent_dn = aci_application_epg.example.id - target_dn = aci_endpoint_security_group.example.id + target_dn = aci_application_epg.example_2.id } resource "aci_relation_to_contract_master" "example_endpoint_security_group" { parent_dn = aci_endpoint_security_group.example.id - target_dn = aci_endpoint_security_group.example.id + target_dn = aci_endpoint_security_group.example_2.id } ``` @@ -59,7 +59,7 @@ The configuration snippet below shows all possible attributes of the Relation To resource "aci_relation_to_contract_master" "full_example_application_epg" { parent_dn = aci_application_epg.example.id annotation = "annotation" - target_dn = aci_endpoint_security_group.example.id + target_dn = aci_application_epg.example_2.id annotations = [ { key = "key_0" @@ -77,7 +77,7 @@ resource "aci_relation_to_contract_master" "full_example_application_epg" { resource "aci_relation_to_contract_master" "full_example_endpoint_security_group" { parent_dn = aci_endpoint_security_group.example.id annotation = "annotation" - target_dn = aci_endpoint_security_group.example.id + target_dn = aci_endpoint_security_group.example_2.id annotations = [ { key = "key_0" diff --git a/examples/resources/aci_endpoint_security_group/resource-all-attributes.tf b/examples/resources/aci_endpoint_security_group/resource-all-attributes.tf index e050bd624..b8449af06 100644 --- a/examples/resources/aci_endpoint_security_group/resource-all-attributes.tf +++ b/examples/resources/aci_endpoint_security_group/resource-all-attributes.tf @@ -47,7 +47,7 @@ resource "aci_endpoint_security_group" "full_example_application_profile" { relation_to_contract_masters = [ { annotation = "annotation_1" - target_dn = "target_dn_0" + target_dn = aci_endpoint_security_group.example_2.id } ] annotations = [ diff --git a/examples/resources/aci_relation_to_contract_master/resource-all-attributes.tf b/examples/resources/aci_relation_to_contract_master/resource-all-attributes.tf index f1b2bd5bf..f95698f1e 100644 --- a/examples/resources/aci_relation_to_contract_master/resource-all-attributes.tf +++ b/examples/resources/aci_relation_to_contract_master/resource-all-attributes.tf @@ -2,7 +2,7 @@ resource "aci_relation_to_contract_master" "full_example_application_epg" { parent_dn = aci_application_epg.example.id annotation = "annotation" - target_dn = aci_endpoint_security_group.example.id + target_dn = aci_application_epg.example_2.id annotations = [ { key = "key_0" @@ -20,7 +20,7 @@ resource "aci_relation_to_contract_master" "full_example_application_epg" { resource "aci_relation_to_contract_master" "full_example_endpoint_security_group" { parent_dn = aci_endpoint_security_group.example.id annotation = "annotation" - target_dn = aci_endpoint_security_group.example.id + target_dn = aci_endpoint_security_group.example_2.id annotations = [ { key = "key_0" diff --git a/examples/resources/aci_relation_to_contract_master/resource.tf b/examples/resources/aci_relation_to_contract_master/resource.tf index 2f50f1d54..c2a68431d 100644 --- a/examples/resources/aci_relation_to_contract_master/resource.tf +++ b/examples/resources/aci_relation_to_contract_master/resource.tf @@ -1,10 +1,10 @@ resource "aci_relation_to_contract_master" "example_application_epg" { parent_dn = aci_application_epg.example.id - target_dn = aci_endpoint_security_group.example.id + target_dn = aci_application_epg.example_2.id } resource "aci_relation_to_contract_master" "example_endpoint_security_group" { parent_dn = aci_endpoint_security_group.example.id - target_dn = aci_endpoint_security_group.example.id + target_dn = aci_endpoint_security_group.example_2.id } diff --git a/gen/templates/resource_example.tf.tmpl b/gen/templates/resource_example.tf.tmpl index 7ad76667a..bbb4bd2b7 100644 --- a/gen/templates/resource_example.tf.tmpl +++ b/gen/templates/resource_example.tf.tmpl @@ -1,12 +1,17 @@ -{{- if .DocumentationExamples}}{{- range $key := .DocumentationExamples}} +{{- if .DocumentationExamples}}{{$parentIndex := 0}}{{- range $key := .DocumentationExamples}} resource "aci_{{$.ResourceName}}" "example_{{getResourceName $key $.Definitions}}" { {{- if $.HasParent}} parent_dn = {{createParentDnValue $key "example" $.Definitions}} {{- end}} {{- range $.Properties}}{{- if .IsRequired}}{{- if ne .NamedPropertyClass ""}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = aci_{{getResourceName .NamedPropertyClass $.Definitions}}.example.name - {{- else if eq .SnakeCaseName "t_dn" }} - {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = {{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions | replace ".test_0.id" ".example.id"}} + {{- else if eq .SnakeCaseName "t_dn" }}{{$attributeKey := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- range $index, $testParent := $.TestVars.parents }} + {{- if eq $index $parentIndex }} + {{$attributeKey}} = {{getTestTargetDn $.TestVars.targets $.TestVars.resourceName "" true $testParent.target_classes $index | replace "test" "example" | replace "_0" "" | replace "_1" "_2" }} + {{- $parentIndex = add $parentIndex 1 }}{{- break}} + {{- end}} + {{- end}} {{- else}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = "{{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions}}"{{- end}}{{- end}} {{- end}} diff --git a/gen/templates/resource_example_all_attributes.tf.tmpl b/gen/templates/resource_example_all_attributes.tf.tmpl index 47a48a655..efee67a7a 100644 --- a/gen/templates/resource_example_all_attributes.tf.tmpl +++ b/gen/templates/resource_example_all_attributes.tf.tmpl @@ -1,12 +1,17 @@ -{{- if .DocumentationExamples}}{{- range $key := .DocumentationExamples}} +{{- if .DocumentationExamples}}{{$parentIndex := 0}}{{- range $key := .DocumentationExamples}} resource "aci_{{$.ResourceName}}" "full_example_{{getResourceName $key $.Definitions}}" { {{- if $.HasParent}} parent_dn = {{createParentDnValue $key "example" $.Definitions}} {{- end}} {{- range $.Properties}}{{- if ne .NamedPropertyClass ""}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = aci_{{getResourceName .NamedPropertyClass $.Definitions}}.example.name - {{- else if eq .SnakeCaseName "t_dn" }} - {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = {{lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions | replace ".test_0.id" ".example.id"}} + {{- else if eq .SnakeCaseName "t_dn" }}{{$attributeKey := overwriteProperty .PkgName .SnakeCaseName $.Definitions}} + {{- range $index, $testParent := $.TestVars.parents }} + {{- if eq $index $parentIndex }} + {{$attributeKey}} = {{getTestTargetDn $.TestVars.targets $.TestVars.resourceName "" true $testParent.target_classes $index | replace "test" "example" | replace "_0" "" | replace "_1" "_2" }} + {{- $parentIndex = add $parentIndex 1 }}{{- break}} + {{- end}} + {{- end}} {{- else if eq .ValueType "bitmask"}}{{ $bitmaskTestValue := lookupTestValue .PkgName .SnakeCaseName $.TestVars $.Definitions}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = [{{range $index, $value := $bitmaskTestValue}}{{if lt $index (substract (len $bitmaskTestValue) 1)}}"{{$value}}",{{else}}"{{$value}}"{{end}}{{end}}] {{- else}} @@ -16,6 +21,11 @@ resource "aci_{{$.ResourceName}}" "full_example_{{getResourceName $key $.Definit {{$ChildResourceName}} = [ { {{- range .Properties}}{{- if ne .NamedPropertyClass ""}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = aci_{{getResourceName .NamedPropertyClass $.Definitions}}.example.name + {{- else if eq .SnakeCaseName "t_dn" }} + {{- range $index, $testParent := $.TestVars.parents }} + target_dn = {{getTestTargetDn $.TestVars.child_targets $ChildResourceName "target_dn_0" true nil 0 | replace "test_0" "example_2" }} + {{- break}} + {{- end}} {{- else}} {{overwriteProperty .PkgName .SnakeCaseName $.Definitions}} = "{{lookupChildTestValue .PkgName $ChildResourceName .SnakeCaseName $.TestVars 0 $.Definitions}}"{{- end}}{{ end}} } From 72eaf20a1974fdfe1109802a2a2407b039059dbc Mon Sep 17 00:00:00 2001 From: akinross Date: Tue, 2 Jul 2024 11:57:58 +0200 Subject: [PATCH 17/22] [ignore] Add maximum items for children taht only allow 1 entry --- docs/resources/endpoint_security_group.md | 1 + docs/resources/netflow_monitor_policy.md | 1 + gen/templates/resource.md.tmpl | 6 ++++++ 3 files changed, 8 insertions(+) diff --git a/docs/resources/endpoint_security_group.md b/docs/resources/endpoint_security_group.md index 08fb58d06..df89fef3a 100644 --- a/docs/resources/endpoint_security_group.md +++ b/docs/resources/endpoint_security_group.md @@ -204,6 +204,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. * `relation_to_vrf` - (list) A list of Relation To VRF (ACI object [fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) pointing to VRF (ACI Object [fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)) which can be configured using the [aci_vrf](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/vrf) resource. + - Max Items: 1 #### Optional #### diff --git a/docs/resources/netflow_monitor_policy.md b/docs/resources/netflow_monitor_policy.md index bacd4a8ef..af3ab208a 100644 --- a/docs/resources/netflow_monitor_policy.md +++ b/docs/resources/netflow_monitor_policy.md @@ -125,6 +125,7 @@ All examples for the Netflow Monitor Policy resource can be found in the [exampl - Default: `orchestrator:terraform` * `relation_to_netflow_record` - (list) A list of Relation To Netflow Record (ACI object [netflowRsMonitorToRecord](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/netflowRsMonitorToRecord/overview)) pointing to Netflow Record Policy (ACI Object [netflowRecordPol](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/netflowRecordPol/overview)) which can be configured using the [aci_netflow_record_policy](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/netflow_record_policy) resource. + - Max Items: 1 #### Optional #### diff --git a/gen/templates/resource.md.tmpl b/gen/templates/resource.md.tmpl index b8a892791..1b10e454c 100644 --- a/gen/templates/resource.md.tmpl +++ b/gen/templates/resource.md.tmpl @@ -121,8 +121,14 @@ All examples for the {{.ResourceNameAsDescription}} resource can be found in the {{ range .Children }}{{$childVersion := .Versions}}{{$RelationshipClasses := .RelationshipClasses}}{{$length := len .RelationshipClasses}} {{- if ge $length 1}} * `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}) pointing to {{range $index, $value := .RelationshipResourceNames}}{{- if or (eq $length 1) (eq $.PkgName (index $RelationshipClasses $index))}}{{getResourceNameAsDescription $value $.Definitions}} (ACI Object {{getDevnetDocForClass (index $RelationshipClasses $index)}}) which can be configured using the [aci_{{($value)}}](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/{{($value)}}) resource{{end}}{{end}}.{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} + {{- if not .IdentifiedBy}} + - Max Items: 1 + {{- end}} {{- else}} * `{{- .ResourceName}}` - (list) A list of {{getResourceNameAsDescription .ResourceName $.Definitions}} (ACI object {{getDevnetDocForClass .PkgName}}). {{getResourceNameAsDescription .ResourceName $.Definitions}} can also be configured using a separate [aci_{{.ResourceNameDocReference}}](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/{{.ResourceNameDocReference}}) resource.{{if and (ne $.Versions .Versions) (ne .Versions "")}} This attribute is supported in ACI versions: {{ .Versions}}{{- end}} + {{- if not .IdentifiedBy}} + - Max Items: 1 + {{- end}} {{- end}} {{ if containsRequired .Properties}} #### Required #### From 7a32fa85702e0e6d6e9ea0426b7280a672b5f3e3 Mon Sep 17 00:00:00 2001 From: akinross Date: Tue, 2 Jul 2024 12:08:09 +0200 Subject: [PATCH 18/22] [ignore] Fix documentation sentences --- docs/data-sources/endpoint_security_group.md | 10 +++++----- .../external_management_network_instance_profile.md | 4 ++-- docs/data-sources/out_of_band_contract.md | 2 +- docs/data-sources/relation_to_consumed_contract.md | 2 +- .../relation_to_consumed_out_of_band_contract.md | 2 +- docs/data-sources/relation_to_imported_contract.md | 2 +- docs/data-sources/relation_to_provided_contract.md | 2 +- docs/resources/endpoint_security_group.md | 10 +++++----- .../external_management_network_instance_profile.md | 4 ++-- docs/resources/out_of_band_contract.md | 2 +- docs/resources/relation_to_consumed_contract.md | 2 +- .../relation_to_consumed_out_of_band_contract.md | 2 +- docs/resources/relation_to_imported_contract.md | 2 +- docs/resources/relation_to_provided_contract.md | 2 +- gen/definitions/properties.yaml | 6 +++--- .../data_source_aci_endpoint_security_group.go | 10 +++++----- ...aci_external_management_network_instance_profile.go | 4 ++-- .../provider/data_source_aci_out_of_band_contract.go | 2 +- .../data_source_aci_relation_to_consumed_contract.go | 2 +- ...ce_aci_relation_to_consumed_out_of_band_contract.go | 2 +- .../data_source_aci_relation_to_imported_contract.go | 2 +- .../data_source_aci_relation_to_provided_contract.go | 2 +- .../provider/resource_aci_endpoint_security_group.go | 10 +++++----- ...aci_external_management_network_instance_profile.go | 4 ++-- internal/provider/resource_aci_out_of_band_contract.go | 2 +- .../resource_aci_relation_to_consumed_contract.go | 2 +- ...ce_aci_relation_to_consumed_out_of_band_contract.go | 2 +- .../resource_aci_relation_to_imported_contract.go | 2 +- .../resource_aci_relation_to_provided_contract.go | 2 +- 29 files changed, 51 insertions(+), 51 deletions(-) diff --git a/docs/data-sources/endpoint_security_group.md b/docs/data-sources/endpoint_security_group.md index a1f13affa..48affd552 100644 --- a/docs/data-sources/endpoint_security_group.md +++ b/docs/data-sources/endpoint_security_group.md @@ -53,18 +53,18 @@ data "aci_endpoint_security_group" "example_application_profile" { * `exception_tag` (exceptionTag) - (string) Contract Exception Tag. * `match_criteria` (matchT) - (string) The provider label match criteria. * `name_alias` (nameAlias) - (string) The name alias of the Endpoint Security Group object. -* `intra_esg_isolation` (pcEnfPref) - (string) Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this ESG. -* `preferred_group_member` (prefGrMemb) - (string) Represents parameter used to determine if the ESG is part of a group that is not a contract for communication. +* `intra_esg_isolation` (pcEnfPref) - (string) Parameter used to determine whether communication between endpoints within the ESG is blocked. +* `preferred_group_member` (prefGrMemb) - (string) Parameter used to determine whether the ESG is part of the preferred group. Members of this group are allowed to communicate without contracts. * `admin_state` (shutdown) - (string) Withdraw ESg Configuration from all Nodes in the Fabric. * `relation_to_consumed_contracts` - (list) A list of Relation To Consumed Contracts (ACI object [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. - * `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. + * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Contract object. * `contract_name` (tnVzBrCPName) - (string) The consumer contract name. * `relation_to_imported_contracts` - (list) A list of Relation To Imported Contracts (ACI object [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) pointing to Imported Contract (ACI Object [vzCPIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzCPIf/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. - * `priority` (prio) - (string) The contract interface priority. + * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Imported Contract object. * `imported_contract_name` (tnVzCPIfName) - (string) The contract interface name. * `relation_to_intra_epg_contracts` - (list) A list of Relation To Intra Epg Contracts (ACI object [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 3.0(1k) and later. @@ -74,7 +74,7 @@ data "aci_endpoint_security_group" "example_application_profile" { * `relation_to_provided_contracts` - (list) A list of Relation To Provided Contracts (ACI object [fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. * `annotation` (annotation) - (string) The annotation of the Relation To Provided Contract object. * `match_criteria` (matchT) - (string) The matched EPG type. - * `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. + * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Provided Contract object. * `contract_name` (tnVzBrCPName) - (string) The provider contract name. * `relation_to_vrf` - (list) A list of Relation To VRF (ACI object [fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) pointing to VRF (ACI Object [fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)). diff --git a/docs/data-sources/external_management_network_instance_profile.md b/docs/data-sources/external_management_network_instance_profile.md index 0b13ab7d4..db1d84300 100644 --- a/docs/data-sources/external_management_network_instance_profile.md +++ b/docs/data-sources/external_management_network_instance_profile.md @@ -48,11 +48,11 @@ data "aci_external_management_network_instance_profile" "example" { * `annotation` (annotation) - (string) The annotation of the External Management Network Instance Profile object. * `description` (descr) - (string) The description of the External Management Network Instance Profile object. * `name_alias` (nameAlias) - (string) The name alias of the External Management Network Instance Profile object. -* `priority` (prio) - (string) The QoS priority class identifier. +* `priority` (prio) - (string) The QoS priority class identifierq of the External Management Network Instance Profile object. * `relation_to_consumed_out_of_band_contracts` - (list) A list of Relation To Consumed Out Of Band Contracts (ACI object [mgmtRsOoBCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtRsOoBCons/overview)) pointing to Out Of Band Contract (ACI Object [vzOOBBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzOOBBrCP/overview)). * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Out Of Band Contract object. - * `priority` (prio) - (string) The Quality of service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. + * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object. * `out_of_band_contract_name` (tnVzOOBBrCPName) - (string) The name of the Out Of Band Contract object. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. diff --git a/docs/data-sources/out_of_band_contract.md b/docs/data-sources/out_of_band_contract.md index 5265a5b02..3437673f2 100644 --- a/docs/data-sources/out_of_band_contract.md +++ b/docs/data-sources/out_of_band_contract.md @@ -51,7 +51,7 @@ data "aci_out_of_band_contract" "example" { * `name_alias` (nameAlias) - (string) The name alias of the Out Of Band Contract object. * `owner_key` (ownerKey) - (string) The key for enabling clients to own their data for entity correlation. * `owner_tag` (ownerTag) - (string) A tag for enabling clients to add their own data. For example, to indicate who created this object. -* `priority` (prio) - (string) The priority of the Out Of Band Contract object. +* `priority` (prio) - (string) The QoS priority class identifierq of the Out Of Band Contract object. * `scope` (scope) - (string) Represents the scope of this contract. If the scope is set as application-profile, the epg can only communicate with epgs in the same application-profile. * `target_dscp` (targetDscp) - (string) The target DSCP value of the Out Of Band Contract object. diff --git a/docs/data-sources/relation_to_consumed_contract.md b/docs/data-sources/relation_to_consumed_contract.md index de28ffdec..7e4fc9aa6 100644 --- a/docs/data-sources/relation_to_consumed_contract.md +++ b/docs/data-sources/relation_to_consumed_contract.md @@ -84,7 +84,7 @@ data "aci_relation_to_consumed_contract" "example_endpoint_security_group" { * `id` - (string) The distinguished name (DN) of the Relation To Consumed Contract object. * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. -* `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. +* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Contract object. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. * `key` (key) - (string) The key used to uniquely identify this configuration object. diff --git a/docs/data-sources/relation_to_consumed_out_of_band_contract.md b/docs/data-sources/relation_to_consumed_out_of_band_contract.md index 9e08ccb8e..5986276f0 100644 --- a/docs/data-sources/relation_to_consumed_out_of_band_contract.md +++ b/docs/data-sources/relation_to_consumed_out_of_band_contract.md @@ -49,7 +49,7 @@ data "aci_relation_to_consumed_out_of_band_contract" "example_external_managemen * `id` - (string) The distinguished name (DN) of the Relation To Consumed Out Of Band Contract object. * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Out Of Band Contract object. -* `priority` (prio) - (string) The Quality of service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. +* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. * `key` (key) - (string) The key used to uniquely identify this configuration object. diff --git a/docs/data-sources/relation_to_imported_contract.md b/docs/data-sources/relation_to_imported_contract.md index 6036858cb..3d3fe0672 100644 --- a/docs/data-sources/relation_to_imported_contract.md +++ b/docs/data-sources/relation_to_imported_contract.md @@ -84,7 +84,7 @@ data "aci_relation_to_imported_contract" "example_endpoint_security_group" { * `id` - (string) The distinguished name (DN) of the Relation To Imported Contract object. * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. -* `priority` (prio) - (string) The contract interface priority. +* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Imported Contract object. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. * `key` (key) - (string) The key used to uniquely identify this configuration object. diff --git a/docs/data-sources/relation_to_provided_contract.md b/docs/data-sources/relation_to_provided_contract.md index e65638895..d10acd91c 100644 --- a/docs/data-sources/relation_to_provided_contract.md +++ b/docs/data-sources/relation_to_provided_contract.md @@ -85,7 +85,7 @@ data "aci_relation_to_provided_contract" "example_endpoint_security_group" { * `id` - (string) The distinguished name (DN) of the Relation To Provided Contract object. * `annotation` (annotation) - (string) The annotation of the Relation To Provided Contract object. * `match_criteria` (matchT) - (string) The matched EPG type. -* `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. +* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Provided Contract object. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. * `key` (key) - (string) The key used to uniquely identify this configuration object. diff --git a/docs/resources/endpoint_security_group.md b/docs/resources/endpoint_security_group.md index df89fef3a..6437b750d 100644 --- a/docs/resources/endpoint_security_group.md +++ b/docs/resources/endpoint_security_group.md @@ -137,10 +137,10 @@ All examples for the Endpoint Security Group resource can be found in the [examp - Default: `AtleastOne` - Valid Values: `All`, `AtleastOne`, `AtmostOne`, `None`. * `name_alias` (nameAlias) - (string) The name alias of the Endpoint Security Group object. -* `intra_esg_isolation` (pcEnfPref) - (string) Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this ESG. +* `intra_esg_isolation` (pcEnfPref) - (string) Parameter used to determine whether communication between endpoints within the ESG is blocked. - Default: `unenforced` - Valid Values: `enforced`, `unenforced`. -* `preferred_group_member` (prefGrMemb) - (string) Represents parameter used to determine if the ESG is part of a group that is not a contract for communication. +* `preferred_group_member` (prefGrMemb) - (string) Parameter used to determine whether the ESG is part of the preferred group. Members of this group are allowed to communicate without contracts. - Default: `exclude` - Valid Values: `exclude`, `include`. * `admin_state` (shutdown) - (string) Withdraw ESg Configuration from all Nodes in the Fabric. @@ -157,7 +157,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. - Default: `orchestrator:terraform` - * `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. + * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. @@ -171,7 +171,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. - Default: `orchestrator:terraform` - * `priority` (prio) - (string) The contract interface priority. + * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Imported Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. @@ -199,7 +199,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp * `match_criteria` (matchT) - (string) The matched EPG type. - Default: `AtleastOne` - Valid Values: `All`, `AtleastOne`, `AtmostOne`, `None`. - * `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. + * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Provided Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/external_management_network_instance_profile.md b/docs/resources/external_management_network_instance_profile.md index 17c562f06..b82f111d1 100644 --- a/docs/resources/external_management_network_instance_profile.md +++ b/docs/resources/external_management_network_instance_profile.md @@ -92,7 +92,7 @@ All examples for the External Management Network Instance Profile resource can b - Default: `orchestrator:terraform` * `description` (descr) - (string) The description of the External Management Network Instance Profile object. * `name_alias` (nameAlias) - (string) The name alias of the External Management Network Instance Profile object. -* `priority` (prio) - (string) The QoS priority class identifier. +* `priority` (prio) - (string) The QoS priority class identifierq of the External Management Network Instance Profile object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. @@ -106,7 +106,7 @@ All examples for the External Management Network Instance Profile resource can b * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Out Of Band Contract object. - Default: `orchestrator:terraform` - * `priority` (prio) - (string) The Quality of service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. + * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/out_of_band_contract.md b/docs/resources/out_of_band_contract.md index 2f04bbf76..84745a246 100644 --- a/docs/resources/out_of_band_contract.md +++ b/docs/resources/out_of_band_contract.md @@ -95,7 +95,7 @@ All examples for the Out Of Band Contract resource can be found in the [examples * `name_alias` (nameAlias) - (string) The name alias of the Out Of Band Contract object. * `owner_key` (ownerKey) - (string) The key for enabling clients to own their data for entity correlation. * `owner_tag` (ownerTag) - (string) A tag for enabling clients to add their own data. For example, to indicate who created this object. -* `priority` (prio) - (string) The priority of the Out Of Band Contract object. +* `priority` (prio) - (string) The QoS priority class identifierq of the Out Of Band Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. * `scope` (scope) - (string) Represents the scope of this contract. If the scope is set as application-profile, the epg can only communicate with epgs in the same application-profile. diff --git a/docs/resources/relation_to_consumed_contract.md b/docs/resources/relation_to_consumed_contract.md index cf6d605a2..46bee9676 100644 --- a/docs/resources/relation_to_consumed_contract.md +++ b/docs/resources/relation_to_consumed_contract.md @@ -139,7 +139,7 @@ All examples for the Relation To Consumed Contract resource can be found in the * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. - Default: `orchestrator:terraform` -* `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. +* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/relation_to_consumed_out_of_band_contract.md b/docs/resources/relation_to_consumed_out_of_band_contract.md index f9244a156..54bd74caa 100644 --- a/docs/resources/relation_to_consumed_out_of_band_contract.md +++ b/docs/resources/relation_to_consumed_out_of_band_contract.md @@ -85,7 +85,7 @@ All examples for the Relation To Consumed Out Of Band Contract resource can be f * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Out Of Band Contract object. - Default: `orchestrator:terraform` -* `priority` (prio) - (string) The Quality of service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. +* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/relation_to_imported_contract.md b/docs/resources/relation_to_imported_contract.md index 3a2de5da4..e95a0b2c9 100644 --- a/docs/resources/relation_to_imported_contract.md +++ b/docs/resources/relation_to_imported_contract.md @@ -139,7 +139,7 @@ All examples for the Relation To Imported Contract resource can be found in the * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. - Default: `orchestrator:terraform` -* `priority` (prio) - (string) The contract interface priority. +* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Imported Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/relation_to_provided_contract.md b/docs/resources/relation_to_provided_contract.md index 256ded058..c76b234e3 100644 --- a/docs/resources/relation_to_provided_contract.md +++ b/docs/resources/relation_to_provided_contract.md @@ -144,7 +144,7 @@ All examples for the Relation To Provided Contract resource can be found in the * `match_criteria` (matchT) - (string) The matched EPG type. - Default: `AtleastOne` - Valid Values: `All`, `AtleastOne`, `AtmostOne`, `None`. -* `priority` (prio) - (string) The system class determines the quality of service and priority for the consumer traffic. +* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Provided Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/gen/definitions/properties.yaml b/gen/definitions/properties.yaml index edfb8bd8d..398aadb25 100644 --- a/gen/definitions/properties.yaml +++ b/gen/definitions/properties.yaml @@ -12,6 +12,7 @@ global: id: "The identifier of the %s object." tnVzOOBBrCPName: "The name of the Out Of Band Contract object." tnRtctrlProfileName: "The name of the Route Control Profile object." + prio: "The QoS priority class identifierq of the %s object." overwrites: count: "apic_count" # count is a terraform reserved schema entry provider: "prov" # provider is a terraform reserved schema entry @@ -50,7 +51,6 @@ l3extRsRedistributePol: vzOOBBrCP: documentation: - prio: "The priority of the %s object." targetDscp: "The target DSCP value of the %s object." intent: "The Install Rules or Estimate Number of Rules" @@ -331,8 +331,8 @@ fvESg: pc_enf_pref: "intra_esg_isolation" shutdown: "admin_state" documentation: - prefGrMemb: "Represents parameter used to determine if the ESG is part of a group that is not a contract for communication." - pcEnfPref: "Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this ESG." + prefGrMemb: "Parameter used to determine whether the ESG is part of the preferred group. Members of this group are allowed to communicate without contracts." + pcEnfPref: "Parameter used to determine whether communication between endpoints within the ESG is blocked." parents: - class_name: "fvAp" parent_dependency: "fvTenant" diff --git a/internal/provider/data_source_aci_endpoint_security_group.go b/internal/provider/data_source_aci_endpoint_security_group.go index 0b779f908..07f6f9c1d 100644 --- a/internal/provider/data_source_aci_endpoint_security_group.go +++ b/internal/provider/data_source_aci_endpoint_security_group.go @@ -107,11 +107,11 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "intra_esg_isolation": schema.StringAttribute{ Computed: true, - MarkdownDescription: `Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this ESG.`, + MarkdownDescription: `Parameter used to determine whether communication between endpoints within the ESG is blocked.`, }, "preferred_group_member": schema.StringAttribute{ Computed: true, - MarkdownDescription: `Represents parameter used to determine if the ESG is part of a group that is not a contract for communication.`, + MarkdownDescription: `Parameter used to determine whether the ESG is part of the preferred group. Members of this group are allowed to communicate without contracts.`, }, "admin_state": schema.StringAttribute{ Computed: true, @@ -128,7 +128,7 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Contract object.`, }, "contract_name": schema.StringAttribute{ Computed: true, @@ -148,7 +148,7 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The contract interface priority.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Imported Contract object.`, }, "imported_contract_name": schema.StringAttribute{ Computed: true, @@ -192,7 +192,7 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Provided Contract object.`, }, "contract_name": schema.StringAttribute{ Computed: true, diff --git a/internal/provider/data_source_aci_external_management_network_instance_profile.go b/internal/provider/data_source_aci_external_management_network_instance_profile.go index 4c1859580..27bf44e89 100644 --- a/internal/provider/data_source_aci_external_management_network_instance_profile.go +++ b/internal/provider/data_source_aci_external_management_network_instance_profile.go @@ -62,7 +62,7 @@ func (d *MgmtInstPDataSource) Schema(ctx context.Context, req datasource.SchemaR }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifier.`, + MarkdownDescription: `The QoS priority class identifierq of the External Management Network Instance Profile object.`, }, "relation_to_consumed_out_of_band_contracts": schema.SetNestedAttribute{ MarkdownDescription: `An external management entity instance profile to an out-of-band binary contract profile. The instance profiles of external management entities can communicate with nodes that are part of out-of-band management endpoint group. To enable this communication, a contract is required between the instance profile and the out-of-band management endpoint group.`, @@ -75,7 +75,7 @@ func (d *MgmtInstPDataSource) Schema(ctx context.Context, req datasource.SchemaR }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The Quality of service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object.`, }, "out_of_band_contract_name": schema.StringAttribute{ Computed: true, diff --git a/internal/provider/data_source_aci_out_of_band_contract.go b/internal/provider/data_source_aci_out_of_band_contract.go index 28c567b69..8fb9de1a1 100644 --- a/internal/provider/data_source_aci_out_of_band_contract.go +++ b/internal/provider/data_source_aci_out_of_band_contract.go @@ -74,7 +74,7 @@ func (d *VzOOBBrCPDataSource) Schema(ctx context.Context, req datasource.SchemaR }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The priority of the Out Of Band Contract object.`, + MarkdownDescription: `The QoS priority class identifierq of the Out Of Band Contract object.`, }, "scope": schema.StringAttribute{ Computed: true, diff --git a/internal/provider/data_source_aci_relation_to_consumed_contract.go b/internal/provider/data_source_aci_relation_to_consumed_contract.go index 28ed14382..f5aa857c8 100644 --- a/internal/provider/data_source_aci_relation_to_consumed_contract.go +++ b/internal/provider/data_source_aci_relation_to_consumed_contract.go @@ -54,7 +54,7 @@ func (d *FvRsConsDataSource) Schema(ctx context.Context, req datasource.SchemaRe }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Contract object.`, }, "contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/data_source_aci_relation_to_consumed_out_of_band_contract.go b/internal/provider/data_source_aci_relation_to_consumed_out_of_band_contract.go index 3a1f25c2e..b09f4a798 100644 --- a/internal/provider/data_source_aci_relation_to_consumed_out_of_band_contract.go +++ b/internal/provider/data_source_aci_relation_to_consumed_out_of_band_contract.go @@ -54,7 +54,7 @@ func (d *MgmtRsOoBConsDataSource) Schema(ctx context.Context, req datasource.Sch }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The Quality of service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object.`, }, "out_of_band_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/data_source_aci_relation_to_imported_contract.go b/internal/provider/data_source_aci_relation_to_imported_contract.go index 18959a9d5..333521a62 100644 --- a/internal/provider/data_source_aci_relation_to_imported_contract.go +++ b/internal/provider/data_source_aci_relation_to_imported_contract.go @@ -54,7 +54,7 @@ func (d *FvRsConsIfDataSource) Schema(ctx context.Context, req datasource.Schema }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The contract interface priority.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Imported Contract object.`, }, "imported_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/data_source_aci_relation_to_provided_contract.go b/internal/provider/data_source_aci_relation_to_provided_contract.go index 4e133f4f1..e2b7cbcb4 100644 --- a/internal/provider/data_source_aci_relation_to_provided_contract.go +++ b/internal/provider/data_source_aci_relation_to_provided_contract.go @@ -58,7 +58,7 @@ func (d *FvRsProvDataSource) Schema(ctx context.Context, req datasource.SchemaRe }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Provided Contract object.`, }, "contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_endpoint_security_group.go b/internal/provider/resource_aci_endpoint_security_group.go index bc6037628..398ffa789 100644 --- a/internal/provider/resource_aci_endpoint_security_group.go +++ b/internal/provider/resource_aci_endpoint_security_group.go @@ -1079,7 +1079,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("enforced", "unenforced"), }, - MarkdownDescription: `Represents parameter used by the node (i.e. Leaf) to enforce filter rules in this ESG.`, + MarkdownDescription: `Parameter used to determine whether communication between endpoints within the ESG is blocked.`, }, "preferred_group_member": schema.StringAttribute{ Optional: true, @@ -1090,7 +1090,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("exclude", "include"), }, - MarkdownDescription: `Represents parameter used to determine if the ESG is part of a group that is not a contract for communication.`, + MarkdownDescription: `Parameter used to determine whether the ESG is part of the preferred group. Members of this group are allowed to communicate without contracts.`, }, "admin_state": schema.StringAttribute{ Optional: true, @@ -1129,7 +1129,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Contract object.`, }, "contract_name": schema.StringAttribute{ Required: true, @@ -1167,7 +1167,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The contract interface priority.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Imported Contract object.`, }, "imported_contract_name": schema.StringAttribute{ Required: true, @@ -1247,7 +1247,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Provided Contract object.`, }, "contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_external_management_network_instance_profile.go b/internal/provider/resource_aci_external_management_network_instance_profile.go index 5b4b737e2..84af21785 100644 --- a/internal/provider/resource_aci_external_management_network_instance_profile.go +++ b/internal/provider/resource_aci_external_management_network_instance_profile.go @@ -139,7 +139,7 @@ func (r *MgmtInstPResource) Schema(ctx context.Context, req resource.SchemaReque Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifier.`, + MarkdownDescription: `The QoS priority class identifierq of the External Management Network Instance Profile object.`, }, "relation_to_consumed_out_of_band_contracts": schema.SetNestedAttribute{ MarkdownDescription: `An external management entity instance profile to an out-of-band binary contract profile. The instance profiles of external management entities can communicate with nodes that are part of out-of-band management endpoint group. To enable this communication, a contract is required between the instance profile and the out-of-band management endpoint group.`, @@ -167,7 +167,7 @@ func (r *MgmtInstPResource) Schema(ctx context.Context, req resource.SchemaReque Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The Quality of service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object.`, }, "out_of_band_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_out_of_band_contract.go b/internal/provider/resource_aci_out_of_band_contract.go index c0bb85548..526112964 100644 --- a/internal/provider/resource_aci_out_of_band_contract.go +++ b/internal/provider/resource_aci_out_of_band_contract.go @@ -163,7 +163,7 @@ func (r *VzOOBBrCPResource) Schema(ctx context.Context, req resource.SchemaReque Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The priority of the Out Of Band Contract object.`, + MarkdownDescription: `The QoS priority class identifierq of the Out Of Band Contract object.`, }, "scope": schema.StringAttribute{ Optional: true, diff --git a/internal/provider/resource_aci_relation_to_consumed_contract.go b/internal/provider/resource_aci_relation_to_consumed_contract.go index a6e09ce08..f68b138f9 100644 --- a/internal/provider/resource_aci_relation_to_consumed_contract.go +++ b/internal/provider/resource_aci_relation_to_consumed_contract.go @@ -114,7 +114,7 @@ func (r *FvRsConsResource) Schema(ctx context.Context, req resource.SchemaReques Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Contract object.`, }, "contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_relation_to_consumed_out_of_band_contract.go b/internal/provider/resource_aci_relation_to_consumed_out_of_band_contract.go index 8458e5ebb..f522bee89 100644 --- a/internal/provider/resource_aci_relation_to_consumed_out_of_band_contract.go +++ b/internal/provider/resource_aci_relation_to_consumed_out_of_band_contract.go @@ -114,7 +114,7 @@ func (r *MgmtRsOoBConsResource) Schema(ctx context.Context, req resource.SchemaR Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The Quality of service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object.`, }, "out_of_band_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_relation_to_imported_contract.go b/internal/provider/resource_aci_relation_to_imported_contract.go index d4586b722..4bfba552e 100644 --- a/internal/provider/resource_aci_relation_to_imported_contract.go +++ b/internal/provider/resource_aci_relation_to_imported_contract.go @@ -114,7 +114,7 @@ func (r *FvRsConsIfResource) Schema(ctx context.Context, req resource.SchemaRequ Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The contract interface priority.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Imported Contract object.`, }, "imported_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_relation_to_provided_contract.go b/internal/provider/resource_aci_relation_to_provided_contract.go index 92b57ed7c..0de05e0bc 100644 --- a/internal/provider/resource_aci_relation_to_provided_contract.go +++ b/internal/provider/resource_aci_relation_to_provided_contract.go @@ -126,7 +126,7 @@ func (r *FvRsProvResource) Schema(ctx context.Context, req resource.SchemaReques Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The system class determines the quality of service and priority for the consumer traffic.`, + MarkdownDescription: `The QoS priority class identifierq of the Relation To Provided Contract object.`, }, "contract_name": schema.StringAttribute{ Required: true, From 029e52414ef5fd777ffe43236017b889f07efc39 Mon Sep 17 00:00:00 2001 From: akinross Date: Tue, 2 Jul 2024 14:03:11 +0200 Subject: [PATCH 19/22] [ignore] Add dnformats for l2out and l3out to contract_masters --- docs/data-sources/relation_to_contract_master.md | 4 ++++ docs/resources/relation_to_contract_master.md | 4 ++++ gen/definitions/classes.yaml | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/docs/data-sources/relation_to_contract_master.md b/docs/data-sources/relation_to_contract_master.md index 92fc00879..d2332a942 100644 --- a/docs/data-sources/relation_to_contract_master.md +++ b/docs/data-sources/relation_to_contract_master.md @@ -24,12 +24,16 @@ Data source for Relation To Contract Master - Too many DN formats to display, see model documentation for all possible parents of [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rssecInherited-[{tDn}]` - `uni/tn-{name}/ap-{name}/esg-{name}/rssecInherited-[{tDn}]` + - `uni/tn-{name}/l2out-{name}/instP-{name}/rssecInherited-[{tDn}]` + - `uni/tn-{name}/out-{name}/instP-{name}/rssecInherited-[{tDn}]` ## GUI Information ## * Locations: - `Tenants -> Application Profiles -> Application EPGs` - `Tenants -> Application Profiles -> Endpoint Security Groups` + - `Tenants -> Networkings -> L3Outs -> External EPGs` + - `Tenants -> Networkings -> L2Outs -> External EPGs` ## Example Usage ## diff --git a/docs/resources/relation_to_contract_master.md b/docs/resources/relation_to_contract_master.md index 5a14eb6e4..6a43e72c6 100644 --- a/docs/resources/relation_to_contract_master.md +++ b/docs/resources/relation_to_contract_master.md @@ -26,12 +26,16 @@ Manages ACI Relation To Contract Master - Too many DN formats to display, see model documentation for all possible parents of [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview). - `uni/tn-{name}/ap-{name}/epg-{name}/rssecInherited-[{tDn}]` - `uni/tn-{name}/ap-{name}/esg-{name}/rssecInherited-[{tDn}]` + - `uni/tn-{name}/l2out-{name}/instP-{name}/rssecInherited-[{tDn}]` + - `uni/tn-{name}/out-{name}/instP-{name}/rssecInherited-[{tDn}]` ## GUI Information ## * Locations: - `Tenants -> Application Profiles -> Application EPGs` - `Tenants -> Application Profiles -> Endpoint Security Groups` + - `Tenants -> Networkings -> L3Outs -> External EPGs` + - `Tenants -> Networkings -> L2Outs -> External EPGs` ## Example Usage ## diff --git a/gen/definitions/classes.yaml b/gen/definitions/classes.yaml index ed23dfa37..31c8e8ec6 100644 --- a/gen/definitions/classes.yaml +++ b/gen/definitions/classes.yaml @@ -372,10 +372,14 @@ fvRsSecInherited: dn_formats: - "uni/tn-{name}/ap-{name}/epg-{name}/rssecInherited-[{tDn}]" - "uni/tn-{name}/ap-{name}/esg-{name}/rssecInherited-[{tDn}]" + - "uni/tn-{name}/out-{name}/instP-{name}/rssecInherited-[{tDn}]" + - "uni/tn-{name}/l2out-{name}/instP-{name}/rssecInherited-[{tDn}]" - "Too many DN formats to display, see model documentation for all possible parents of [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)." ui_locations: - "Tenants -> Application Profiles -> Application EPGs" - "Tenants -> Application Profiles -> Endpoint Security Groups" + - "Tenants -> Networkings -> L3Outs -> External EPGs" + - "Tenants -> Networkings -> L2Outs -> External EPGs" sub_category: "Application Management" vzBrCP: From 9dc0862ef59cafe0ab84dca489e99ef7ad6f292a Mon Sep 17 00:00:00 2001 From: akinross Date: Tue, 2 Jul 2024 14:58:12 +0200 Subject: [PATCH 20/22] [ignore] Change networkings to networking in documentation --- .../relation_to_consumed_contract.md | 4 ++-- .../relation_to_contract_master.md | 4 ++-- .../relation_to_imported_contract.md | 4 ++-- .../relation_to_intra_epg_contract.md | 2 +- .../relation_to_provided_contract.md | 4 ++-- .../relation_to_taboo_contract.md | 4 ++-- .../relation_to_consumed_contract.md | 4 ++-- docs/resources/relation_to_contract_master.md | 4 ++-- .../relation_to_imported_contract.md | 4 ++-- .../relation_to_intra_epg_contract.md | 2 +- .../relation_to_provided_contract.md | 4 ++-- docs/resources/relation_to_taboo_contract.md | 4 ++-- gen/definitions/classes.yaml | 22 +++++++++---------- 13 files changed, 33 insertions(+), 33 deletions(-) diff --git a/docs/data-sources/relation_to_consumed_contract.md b/docs/data-sources/relation_to_consumed_contract.md index 7e4fc9aa6..07b6cc2d1 100644 --- a/docs/data-sources/relation_to_consumed_contract.md +++ b/docs/data-sources/relation_to_consumed_contract.md @@ -32,8 +32,8 @@ Data source for Relation To Consumed Contract * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` - - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## diff --git a/docs/data-sources/relation_to_contract_master.md b/docs/data-sources/relation_to_contract_master.md index d2332a942..6f1a0c6b2 100644 --- a/docs/data-sources/relation_to_contract_master.md +++ b/docs/data-sources/relation_to_contract_master.md @@ -32,8 +32,8 @@ Data source for Relation To Contract Master * Locations: - `Tenants -> Application Profiles -> Application EPGs` - `Tenants -> Application Profiles -> Endpoint Security Groups` - - `Tenants -> Networkings -> L3Outs -> External EPGs` - - `Tenants -> Networkings -> L2Outs -> External EPGs` + - `Tenants -> Networking -> L3Outs -> External EPGs` + - `Tenants -> Networking -> L2Outs -> External EPGs` ## Example Usage ## diff --git a/docs/data-sources/relation_to_imported_contract.md b/docs/data-sources/relation_to_imported_contract.md index 3d3fe0672..a9cad7d38 100644 --- a/docs/data-sources/relation_to_imported_contract.md +++ b/docs/data-sources/relation_to_imported_contract.md @@ -32,8 +32,8 @@ Data source for Relation To Imported Contract * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` - - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## diff --git a/docs/data-sources/relation_to_intra_epg_contract.md b/docs/data-sources/relation_to_intra_epg_contract.md index 6d6ce618a..5522da637 100644 --- a/docs/data-sources/relation_to_intra_epg_contract.md +++ b/docs/data-sources/relation_to_intra_epg_contract.md @@ -31,7 +31,7 @@ Data source for Relation To Intra Epg Contract * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L3Outs -> External EPGs -> Contracts` ## Example Usage ## diff --git a/docs/data-sources/relation_to_provided_contract.md b/docs/data-sources/relation_to_provided_contract.md index d10acd91c..8c2556348 100644 --- a/docs/data-sources/relation_to_provided_contract.md +++ b/docs/data-sources/relation_to_provided_contract.md @@ -32,8 +32,8 @@ Data source for Relation To Provided Contract * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` - - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## diff --git a/docs/data-sources/relation_to_taboo_contract.md b/docs/data-sources/relation_to_taboo_contract.md index 356976eaf..51f998859 100644 --- a/docs/data-sources/relation_to_taboo_contract.md +++ b/docs/data-sources/relation_to_taboo_contract.md @@ -30,8 +30,8 @@ Data source for Relation To Taboo Contract * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` - - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## diff --git a/docs/resources/relation_to_consumed_contract.md b/docs/resources/relation_to_consumed_contract.md index 46bee9676..60591d3a4 100644 --- a/docs/resources/relation_to_consumed_contract.md +++ b/docs/resources/relation_to_consumed_contract.md @@ -34,8 +34,8 @@ Manages ACI Relation To Consumed Contract * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` - - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## diff --git a/docs/resources/relation_to_contract_master.md b/docs/resources/relation_to_contract_master.md index 6a43e72c6..43e6a1f3a 100644 --- a/docs/resources/relation_to_contract_master.md +++ b/docs/resources/relation_to_contract_master.md @@ -34,8 +34,8 @@ Manages ACI Relation To Contract Master * Locations: - `Tenants -> Application Profiles -> Application EPGs` - `Tenants -> Application Profiles -> Endpoint Security Groups` - - `Tenants -> Networkings -> L3Outs -> External EPGs` - - `Tenants -> Networkings -> L2Outs -> External EPGs` + - `Tenants -> Networking -> L3Outs -> External EPGs` + - `Tenants -> Networking -> L2Outs -> External EPGs` ## Example Usage ## diff --git a/docs/resources/relation_to_imported_contract.md b/docs/resources/relation_to_imported_contract.md index e95a0b2c9..c205184f1 100644 --- a/docs/resources/relation_to_imported_contract.md +++ b/docs/resources/relation_to_imported_contract.md @@ -34,8 +34,8 @@ Manages ACI Relation To Imported Contract * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` - - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## diff --git a/docs/resources/relation_to_intra_epg_contract.md b/docs/resources/relation_to_intra_epg_contract.md index 3351e5b37..d6af653e3 100644 --- a/docs/resources/relation_to_intra_epg_contract.md +++ b/docs/resources/relation_to_intra_epg_contract.md @@ -33,7 +33,7 @@ Manages ACI Relation To Intra Epg Contract * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L3Outs -> External EPGs -> Contracts` ## Example Usage ## diff --git a/docs/resources/relation_to_provided_contract.md b/docs/resources/relation_to_provided_contract.md index c76b234e3..e5401bf1c 100644 --- a/docs/resources/relation_to_provided_contract.md +++ b/docs/resources/relation_to_provided_contract.md @@ -34,8 +34,8 @@ Manages ACI Relation To Provided Contract * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - `Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts` - - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` - - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## diff --git a/docs/resources/relation_to_taboo_contract.md b/docs/resources/relation_to_taboo_contract.md index 7277e3d28..0d840e253 100644 --- a/docs/resources/relation_to_taboo_contract.md +++ b/docs/resources/relation_to_taboo_contract.md @@ -32,8 +32,8 @@ Manages ACI Relation To Taboo Contract * Locations: - `Tenants -> Application Profiles -> Application EPGs -> Contracts` - - `Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts` - - `Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L3Outs -> External EPGs -> Contracts` + - `Tenants -> Networking -> L2Outs -> External EPGs -> Contracts` ## Example Usage ## diff --git a/gen/definitions/classes.yaml b/gen/definitions/classes.yaml index 31c8e8ec6..d8aefb678 100644 --- a/gen/definitions/classes.yaml +++ b/gen/definitions/classes.yaml @@ -290,8 +290,8 @@ fvRsCons: ui_locations: - "Tenants -> Application Profiles -> Application EPGs -> Contracts" - "Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts" - - "Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts" - - "Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts" + - "Tenants -> Networking -> L3Outs -> External EPGs -> Contracts" + - "Tenants -> Networking -> L2Outs -> External EPGs -> Contracts" sub_category: "Application Management" fvRsProv: @@ -308,8 +308,8 @@ fvRsProv: ui_locations: - "Tenants -> Application Profiles -> Application EPGs -> Contracts" - "Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts" - - "Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts" - - "Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts" + - "Tenants -> Networking -> L3Outs -> External EPGs -> Contracts" + - "Tenants -> Networking -> L2Outs -> External EPGs -> Contracts" sub_category: "Application Management" fvRsConsIf: @@ -326,8 +326,8 @@ fvRsConsIf: ui_locations: - "Tenants -> Application Profiles -> Application EPGs -> Contracts" - "Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts" - - "Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts" - - "Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts" + - "Tenants -> Networking -> L3Outs -> External EPGs -> Contracts" + - "Tenants -> Networking -> L2Outs -> External EPGs -> Contracts" sub_category: "Application Management" fvRsProtBy: @@ -341,8 +341,8 @@ fvRsProtBy: - "Too many DN formats to display, see model documentation for all possible parents of [fvRsProtBy](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProtBy/overview)." ui_locations: - "Tenants -> Application Profiles -> Application EPGs -> Contracts" - - "Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts" - - "Tenants -> Networkings -> L2Outs -> External EPGs -> Contracts" + - "Tenants -> Networking -> L3Outs -> External EPGs -> Contracts" + - "Tenants -> Networking -> L2Outs -> External EPGs -> Contracts" sub_category: "Application Management" fvRsIntraEpg: @@ -358,7 +358,7 @@ fvRsIntraEpg: ui_locations: - "Tenants -> Application Profiles -> Application EPGs -> Contracts" - "Tenants -> Application Profiles -> Endpoint Security Groups -> Contracts" - - "Tenants -> Networkings -> L3Outs -> External EPGs -> Contracts" + - "Tenants -> Networking -> L3Outs -> External EPGs -> Contracts" sub_category: "Application Management" fvRsSecInherited: @@ -378,8 +378,8 @@ fvRsSecInherited: ui_locations: - "Tenants -> Application Profiles -> Application EPGs" - "Tenants -> Application Profiles -> Endpoint Security Groups" - - "Tenants -> Networkings -> L3Outs -> External EPGs" - - "Tenants -> Networkings -> L2Outs -> External EPGs" + - "Tenants -> Networking -> L3Outs -> External EPGs" + - "Tenants -> Networking -> L2Outs -> External EPGs" sub_category: "Application Management" vzBrCP: From a8d4e51903827e78e47ebddb248e78206eca53d8 Mon Sep 17 00:00:00 2001 From: akinross Date: Tue, 2 Jul 2024 15:08:38 +0200 Subject: [PATCH 21/22] [ignore] Fix typo in documentation for QOS priority --- docs/data-sources/endpoint_security_group.md | 6 +++--- .../external_management_network_instance_profile.md | 4 ++-- docs/data-sources/out_of_band_contract.md | 2 +- docs/data-sources/relation_to_consumed_contract.md | 2 +- .../relation_to_consumed_out_of_band_contract.md | 2 +- docs/data-sources/relation_to_imported_contract.md | 2 +- docs/data-sources/relation_to_provided_contract.md | 2 +- docs/resources/endpoint_security_group.md | 6 +++--- .../external_management_network_instance_profile.md | 4 ++-- docs/resources/out_of_band_contract.md | 2 +- docs/resources/relation_to_consumed_contract.md | 2 +- docs/resources/relation_to_consumed_out_of_band_contract.md | 2 +- docs/resources/relation_to_imported_contract.md | 2 +- docs/resources/relation_to_provided_contract.md | 2 +- gen/definitions/properties.yaml | 2 +- .../provider/data_source_aci_endpoint_security_group.go | 6 +++--- ...urce_aci_external_management_network_instance_profile.go | 4 ++-- internal/provider/data_source_aci_out_of_band_contract.go | 2 +- .../data_source_aci_relation_to_consumed_contract.go | 2 +- ..._source_aci_relation_to_consumed_out_of_band_contract.go | 2 +- .../data_source_aci_relation_to_imported_contract.go | 2 +- .../data_source_aci_relation_to_provided_contract.go | 2 +- internal/provider/resource_aci_endpoint_security_group.go | 6 +++--- ...urce_aci_external_management_network_instance_profile.go | 4 ++-- internal/provider/resource_aci_out_of_band_contract.go | 2 +- .../provider/resource_aci_relation_to_consumed_contract.go | 2 +- ...esource_aci_relation_to_consumed_out_of_band_contract.go | 2 +- .../provider/resource_aci_relation_to_imported_contract.go | 2 +- .../provider/resource_aci_relation_to_provided_contract.go | 2 +- 29 files changed, 41 insertions(+), 41 deletions(-) diff --git a/docs/data-sources/endpoint_security_group.md b/docs/data-sources/endpoint_security_group.md index 48affd552..12780b142 100644 --- a/docs/data-sources/endpoint_security_group.md +++ b/docs/data-sources/endpoint_security_group.md @@ -59,12 +59,12 @@ data "aci_endpoint_security_group" "example_application_profile" { * `relation_to_consumed_contracts` - (list) A list of Relation To Consumed Contracts (ACI object [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. - * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Contract object. + * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Contract object. * `contract_name` (tnVzBrCPName) - (string) The consumer contract name. * `relation_to_imported_contracts` - (list) A list of Relation To Imported Contracts (ACI object [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) pointing to Imported Contract (ACI Object [vzCPIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzCPIf/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. - * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Imported Contract object. + * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Imported Contract object. * `imported_contract_name` (tnVzCPIfName) - (string) The contract interface name. * `relation_to_intra_epg_contracts` - (list) A list of Relation To Intra Epg Contracts (ACI object [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 3.0(1k) and later. @@ -74,7 +74,7 @@ data "aci_endpoint_security_group" "example_application_profile" { * `relation_to_provided_contracts` - (list) A list of Relation To Provided Contracts (ACI object [fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. * `annotation` (annotation) - (string) The annotation of the Relation To Provided Contract object. * `match_criteria` (matchT) - (string) The matched EPG type. - * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Provided Contract object. + * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Provided Contract object. * `contract_name` (tnVzBrCPName) - (string) The provider contract name. * `relation_to_vrf` - (list) A list of Relation To VRF (ACI object [fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) pointing to VRF (ACI Object [fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)). diff --git a/docs/data-sources/external_management_network_instance_profile.md b/docs/data-sources/external_management_network_instance_profile.md index db1d84300..f28ca987a 100644 --- a/docs/data-sources/external_management_network_instance_profile.md +++ b/docs/data-sources/external_management_network_instance_profile.md @@ -48,11 +48,11 @@ data "aci_external_management_network_instance_profile" "example" { * `annotation` (annotation) - (string) The annotation of the External Management Network Instance Profile object. * `description` (descr) - (string) The description of the External Management Network Instance Profile object. * `name_alias` (nameAlias) - (string) The name alias of the External Management Network Instance Profile object. -* `priority` (prio) - (string) The QoS priority class identifierq of the External Management Network Instance Profile object. +* `priority` (prio) - (string) The QoS priority class identifier of the External Management Network Instance Profile object. * `relation_to_consumed_out_of_band_contracts` - (list) A list of Relation To Consumed Out Of Band Contracts (ACI object [mgmtRsOoBCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtRsOoBCons/overview)) pointing to Out Of Band Contract (ACI Object [vzOOBBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzOOBBrCP/overview)). * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Out Of Band Contract object. - * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object. + * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object. * `out_of_band_contract_name` (tnVzOOBBrCPName) - (string) The name of the Out Of Band Contract object. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. diff --git a/docs/data-sources/out_of_band_contract.md b/docs/data-sources/out_of_band_contract.md index 3437673f2..a9d5346ed 100644 --- a/docs/data-sources/out_of_band_contract.md +++ b/docs/data-sources/out_of_band_contract.md @@ -51,7 +51,7 @@ data "aci_out_of_band_contract" "example" { * `name_alias` (nameAlias) - (string) The name alias of the Out Of Band Contract object. * `owner_key` (ownerKey) - (string) The key for enabling clients to own their data for entity correlation. * `owner_tag` (ownerTag) - (string) A tag for enabling clients to add their own data. For example, to indicate who created this object. -* `priority` (prio) - (string) The QoS priority class identifierq of the Out Of Band Contract object. +* `priority` (prio) - (string) The QoS priority class identifier of the Out Of Band Contract object. * `scope` (scope) - (string) Represents the scope of this contract. If the scope is set as application-profile, the epg can only communicate with epgs in the same application-profile. * `target_dscp` (targetDscp) - (string) The target DSCP value of the Out Of Band Contract object. diff --git a/docs/data-sources/relation_to_consumed_contract.md b/docs/data-sources/relation_to_consumed_contract.md index 07b6cc2d1..f27f8119d 100644 --- a/docs/data-sources/relation_to_consumed_contract.md +++ b/docs/data-sources/relation_to_consumed_contract.md @@ -84,7 +84,7 @@ data "aci_relation_to_consumed_contract" "example_endpoint_security_group" { * `id` - (string) The distinguished name (DN) of the Relation To Consumed Contract object. * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. -* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Contract object. +* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Contract object. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. * `key` (key) - (string) The key used to uniquely identify this configuration object. diff --git a/docs/data-sources/relation_to_consumed_out_of_band_contract.md b/docs/data-sources/relation_to_consumed_out_of_band_contract.md index 5986276f0..c571b8935 100644 --- a/docs/data-sources/relation_to_consumed_out_of_band_contract.md +++ b/docs/data-sources/relation_to_consumed_out_of_band_contract.md @@ -49,7 +49,7 @@ data "aci_relation_to_consumed_out_of_band_contract" "example_external_managemen * `id` - (string) The distinguished name (DN) of the Relation To Consumed Out Of Band Contract object. * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Out Of Band Contract object. -* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object. +* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. * `key` (key) - (string) The key used to uniquely identify this configuration object. diff --git a/docs/data-sources/relation_to_imported_contract.md b/docs/data-sources/relation_to_imported_contract.md index a9cad7d38..009e8e1c6 100644 --- a/docs/data-sources/relation_to_imported_contract.md +++ b/docs/data-sources/relation_to_imported_contract.md @@ -84,7 +84,7 @@ data "aci_relation_to_imported_contract" "example_endpoint_security_group" { * `id` - (string) The distinguished name (DN) of the Relation To Imported Contract object. * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. -* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Imported Contract object. +* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Imported Contract object. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. * `key` (key) - (string) The key used to uniquely identify this configuration object. diff --git a/docs/data-sources/relation_to_provided_contract.md b/docs/data-sources/relation_to_provided_contract.md index 8c2556348..2b825a343 100644 --- a/docs/data-sources/relation_to_provided_contract.md +++ b/docs/data-sources/relation_to_provided_contract.md @@ -85,7 +85,7 @@ data "aci_relation_to_provided_contract" "example_endpoint_security_group" { * `id` - (string) The distinguished name (DN) of the Relation To Provided Contract object. * `annotation` (annotation) - (string) The annotation of the Relation To Provided Contract object. * `match_criteria` (matchT) - (string) The matched EPG type. -* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Provided Contract object. +* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Provided Contract object. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. * `key` (key) - (string) The key used to uniquely identify this configuration object. diff --git a/docs/resources/endpoint_security_group.md b/docs/resources/endpoint_security_group.md index 6437b750d..7507c6c4a 100644 --- a/docs/resources/endpoint_security_group.md +++ b/docs/resources/endpoint_security_group.md @@ -157,7 +157,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. - Default: `orchestrator:terraform` - * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Contract object. + * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. @@ -171,7 +171,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. - Default: `orchestrator:terraform` - * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Imported Contract object. + * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Imported Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. @@ -199,7 +199,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp * `match_criteria` (matchT) - (string) The matched EPG type. - Default: `AtleastOne` - Valid Values: `All`, `AtleastOne`, `AtmostOne`, `None`. - * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Provided Contract object. + * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Provided Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/external_management_network_instance_profile.md b/docs/resources/external_management_network_instance_profile.md index b82f111d1..d75b2bf40 100644 --- a/docs/resources/external_management_network_instance_profile.md +++ b/docs/resources/external_management_network_instance_profile.md @@ -92,7 +92,7 @@ All examples for the External Management Network Instance Profile resource can b - Default: `orchestrator:terraform` * `description` (descr) - (string) The description of the External Management Network Instance Profile object. * `name_alias` (nameAlias) - (string) The name alias of the External Management Network Instance Profile object. -* `priority` (prio) - (string) The QoS priority class identifierq of the External Management Network Instance Profile object. +* `priority` (prio) - (string) The QoS priority class identifier of the External Management Network Instance Profile object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. @@ -106,7 +106,7 @@ All examples for the External Management Network Instance Profile resource can b * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Out Of Band Contract object. - Default: `orchestrator:terraform` - * `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object. + * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/out_of_band_contract.md b/docs/resources/out_of_band_contract.md index 84745a246..946b1403b 100644 --- a/docs/resources/out_of_band_contract.md +++ b/docs/resources/out_of_band_contract.md @@ -95,7 +95,7 @@ All examples for the Out Of Band Contract resource can be found in the [examples * `name_alias` (nameAlias) - (string) The name alias of the Out Of Band Contract object. * `owner_key` (ownerKey) - (string) The key for enabling clients to own their data for entity correlation. * `owner_tag` (ownerTag) - (string) A tag for enabling clients to add their own data. For example, to indicate who created this object. -* `priority` (prio) - (string) The QoS priority class identifierq of the Out Of Band Contract object. +* `priority` (prio) - (string) The QoS priority class identifier of the Out Of Band Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. * `scope` (scope) - (string) Represents the scope of this contract. If the scope is set as application-profile, the epg can only communicate with epgs in the same application-profile. diff --git a/docs/resources/relation_to_consumed_contract.md b/docs/resources/relation_to_consumed_contract.md index 60591d3a4..cb5a17b0e 100644 --- a/docs/resources/relation_to_consumed_contract.md +++ b/docs/resources/relation_to_consumed_contract.md @@ -139,7 +139,7 @@ All examples for the Relation To Consumed Contract resource can be found in the * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. - Default: `orchestrator:terraform` -* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Contract object. +* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/relation_to_consumed_out_of_band_contract.md b/docs/resources/relation_to_consumed_out_of_band_contract.md index 54bd74caa..be34695dc 100644 --- a/docs/resources/relation_to_consumed_out_of_band_contract.md +++ b/docs/resources/relation_to_consumed_out_of_band_contract.md @@ -85,7 +85,7 @@ All examples for the Relation To Consumed Out Of Band Contract resource can be f * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Out Of Band Contract object. - Default: `orchestrator:terraform` -* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object. +* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/relation_to_imported_contract.md b/docs/resources/relation_to_imported_contract.md index c205184f1..bb5218c04 100644 --- a/docs/resources/relation_to_imported_contract.md +++ b/docs/resources/relation_to_imported_contract.md @@ -139,7 +139,7 @@ All examples for the Relation To Imported Contract resource can be found in the * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. - Default: `orchestrator:terraform` -* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Imported Contract object. +* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Imported Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/relation_to_provided_contract.md b/docs/resources/relation_to_provided_contract.md index e5401bf1c..ba8650ebe 100644 --- a/docs/resources/relation_to_provided_contract.md +++ b/docs/resources/relation_to_provided_contract.md @@ -144,7 +144,7 @@ All examples for the Relation To Provided Contract resource can be found in the * `match_criteria` (matchT) - (string) The matched EPG type. - Default: `AtleastOne` - Valid Values: `All`, `AtleastOne`, `AtmostOne`, `None`. -* `priority` (prio) - (string) The QoS priority class identifierq of the Relation To Provided Contract object. +* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Provided Contract object. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/gen/definitions/properties.yaml b/gen/definitions/properties.yaml index 398aadb25..039635f13 100644 --- a/gen/definitions/properties.yaml +++ b/gen/definitions/properties.yaml @@ -12,7 +12,7 @@ global: id: "The identifier of the %s object." tnVzOOBBrCPName: "The name of the Out Of Band Contract object." tnRtctrlProfileName: "The name of the Route Control Profile object." - prio: "The QoS priority class identifierq of the %s object." + prio: "The QoS priority class identifier of the %s object." overwrites: count: "apic_count" # count is a terraform reserved schema entry provider: "prov" # provider is a terraform reserved schema entry diff --git a/internal/provider/data_source_aci_endpoint_security_group.go b/internal/provider/data_source_aci_endpoint_security_group.go index 07f6f9c1d..f42383021 100644 --- a/internal/provider/data_source_aci_endpoint_security_group.go +++ b/internal/provider/data_source_aci_endpoint_security_group.go @@ -128,7 +128,7 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Contract object.`, }, "contract_name": schema.StringAttribute{ Computed: true, @@ -148,7 +148,7 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Imported Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Imported Contract object.`, }, "imported_contract_name": schema.StringAttribute{ Computed: true, @@ -192,7 +192,7 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Provided Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Provided Contract object.`, }, "contract_name": schema.StringAttribute{ Computed: true, diff --git a/internal/provider/data_source_aci_external_management_network_instance_profile.go b/internal/provider/data_source_aci_external_management_network_instance_profile.go index 27bf44e89..0c664b300 100644 --- a/internal/provider/data_source_aci_external_management_network_instance_profile.go +++ b/internal/provider/data_source_aci_external_management_network_instance_profile.go @@ -62,7 +62,7 @@ func (d *MgmtInstPDataSource) Schema(ctx context.Context, req datasource.SchemaR }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifierq of the External Management Network Instance Profile object.`, + MarkdownDescription: `The QoS priority class identifier of the External Management Network Instance Profile object.`, }, "relation_to_consumed_out_of_band_contracts": schema.SetNestedAttribute{ MarkdownDescription: `An external management entity instance profile to an out-of-band binary contract profile. The instance profiles of external management entities can communicate with nodes that are part of out-of-band management endpoint group. To enable this communication, a contract is required between the instance profile and the out-of-band management endpoint group.`, @@ -75,7 +75,7 @@ func (d *MgmtInstPDataSource) Schema(ctx context.Context, req datasource.SchemaR }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object.`, }, "out_of_band_contract_name": schema.StringAttribute{ Computed: true, diff --git a/internal/provider/data_source_aci_out_of_band_contract.go b/internal/provider/data_source_aci_out_of_band_contract.go index 8fb9de1a1..7008d7738 100644 --- a/internal/provider/data_source_aci_out_of_band_contract.go +++ b/internal/provider/data_source_aci_out_of_band_contract.go @@ -74,7 +74,7 @@ func (d *VzOOBBrCPDataSource) Schema(ctx context.Context, req datasource.SchemaR }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifierq of the Out Of Band Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Out Of Band Contract object.`, }, "scope": schema.StringAttribute{ Computed: true, diff --git a/internal/provider/data_source_aci_relation_to_consumed_contract.go b/internal/provider/data_source_aci_relation_to_consumed_contract.go index f5aa857c8..7986e1f58 100644 --- a/internal/provider/data_source_aci_relation_to_consumed_contract.go +++ b/internal/provider/data_source_aci_relation_to_consumed_contract.go @@ -54,7 +54,7 @@ func (d *FvRsConsDataSource) Schema(ctx context.Context, req datasource.SchemaRe }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Contract object.`, }, "contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/data_source_aci_relation_to_consumed_out_of_band_contract.go b/internal/provider/data_source_aci_relation_to_consumed_out_of_band_contract.go index b09f4a798..2f18e94a9 100644 --- a/internal/provider/data_source_aci_relation_to_consumed_out_of_band_contract.go +++ b/internal/provider/data_source_aci_relation_to_consumed_out_of_band_contract.go @@ -54,7 +54,7 @@ func (d *MgmtRsOoBConsDataSource) Schema(ctx context.Context, req datasource.Sch }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object.`, }, "out_of_band_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/data_source_aci_relation_to_imported_contract.go b/internal/provider/data_source_aci_relation_to_imported_contract.go index 333521a62..83d88b4a3 100644 --- a/internal/provider/data_source_aci_relation_to_imported_contract.go +++ b/internal/provider/data_source_aci_relation_to_imported_contract.go @@ -54,7 +54,7 @@ func (d *FvRsConsIfDataSource) Schema(ctx context.Context, req datasource.Schema }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Imported Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Imported Contract object.`, }, "imported_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/data_source_aci_relation_to_provided_contract.go b/internal/provider/data_source_aci_relation_to_provided_contract.go index e2b7cbcb4..e2f9fdc3f 100644 --- a/internal/provider/data_source_aci_relation_to_provided_contract.go +++ b/internal/provider/data_source_aci_relation_to_provided_contract.go @@ -58,7 +58,7 @@ func (d *FvRsProvDataSource) Schema(ctx context.Context, req datasource.SchemaRe }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Provided Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Provided Contract object.`, }, "contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_endpoint_security_group.go b/internal/provider/resource_aci_endpoint_security_group.go index 398ffa789..d7447927a 100644 --- a/internal/provider/resource_aci_endpoint_security_group.go +++ b/internal/provider/resource_aci_endpoint_security_group.go @@ -1129,7 +1129,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Contract object.`, }, "contract_name": schema.StringAttribute{ Required: true, @@ -1167,7 +1167,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Imported Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Imported Contract object.`, }, "imported_contract_name": schema.StringAttribute{ Required: true, @@ -1247,7 +1247,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Provided Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Provided Contract object.`, }, "contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_external_management_network_instance_profile.go b/internal/provider/resource_aci_external_management_network_instance_profile.go index 84af21785..afc7480c8 100644 --- a/internal/provider/resource_aci_external_management_network_instance_profile.go +++ b/internal/provider/resource_aci_external_management_network_instance_profile.go @@ -139,7 +139,7 @@ func (r *MgmtInstPResource) Schema(ctx context.Context, req resource.SchemaReque Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifierq of the External Management Network Instance Profile object.`, + MarkdownDescription: `The QoS priority class identifier of the External Management Network Instance Profile object.`, }, "relation_to_consumed_out_of_band_contracts": schema.SetNestedAttribute{ MarkdownDescription: `An external management entity instance profile to an out-of-band binary contract profile. The instance profiles of external management entities can communicate with nodes that are part of out-of-band management endpoint group. To enable this communication, a contract is required between the instance profile and the out-of-band management endpoint group.`, @@ -167,7 +167,7 @@ func (r *MgmtInstPResource) Schema(ctx context.Context, req resource.SchemaReque Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object.`, }, "out_of_band_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_out_of_band_contract.go b/internal/provider/resource_aci_out_of_band_contract.go index 526112964..ed8e9acc1 100644 --- a/internal/provider/resource_aci_out_of_band_contract.go +++ b/internal/provider/resource_aci_out_of_band_contract.go @@ -163,7 +163,7 @@ func (r *VzOOBBrCPResource) Schema(ctx context.Context, req resource.SchemaReque Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifierq of the Out Of Band Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Out Of Band Contract object.`, }, "scope": schema.StringAttribute{ Optional: true, diff --git a/internal/provider/resource_aci_relation_to_consumed_contract.go b/internal/provider/resource_aci_relation_to_consumed_contract.go index f68b138f9..f55e16e25 100644 --- a/internal/provider/resource_aci_relation_to_consumed_contract.go +++ b/internal/provider/resource_aci_relation_to_consumed_contract.go @@ -114,7 +114,7 @@ func (r *FvRsConsResource) Schema(ctx context.Context, req resource.SchemaReques Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Contract object.`, }, "contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_relation_to_consumed_out_of_band_contract.go b/internal/provider/resource_aci_relation_to_consumed_out_of_band_contract.go index f522bee89..8f6be9ff2 100644 --- a/internal/provider/resource_aci_relation_to_consumed_out_of_band_contract.go +++ b/internal/provider/resource_aci_relation_to_consumed_out_of_band_contract.go @@ -114,7 +114,7 @@ func (r *MgmtRsOoBConsResource) Schema(ctx context.Context, req resource.SchemaR Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Consumed Out Of Band Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object.`, }, "out_of_band_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_relation_to_imported_contract.go b/internal/provider/resource_aci_relation_to_imported_contract.go index 4bfba552e..4fdc9c209 100644 --- a/internal/provider/resource_aci_relation_to_imported_contract.go +++ b/internal/provider/resource_aci_relation_to_imported_contract.go @@ -114,7 +114,7 @@ func (r *FvRsConsIfResource) Schema(ctx context.Context, req resource.SchemaRequ Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Imported Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Imported Contract object.`, }, "imported_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_relation_to_provided_contract.go b/internal/provider/resource_aci_relation_to_provided_contract.go index 0de05e0bc..cf269c001 100644 --- a/internal/provider/resource_aci_relation_to_provided_contract.go +++ b/internal/provider/resource_aci_relation_to_provided_contract.go @@ -126,7 +126,7 @@ func (r *FvRsProvResource) Schema(ctx context.Context, req resource.SchemaReques Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifierq of the Relation To Provided Contract object.`, + MarkdownDescription: `The QoS priority class identifier of the Relation To Provided Contract object.`, }, "contract_name": schema.StringAttribute{ Required: true, From f1d8900e7d81ece90321de41827b2d5d818b70aa Mon Sep 17 00:00:00 2001 From: akinross Date: Tue, 2 Jul 2024 20:24:58 +0200 Subject: [PATCH 22/22] [ignore] Change documentation for attributes --- docs/data-sources/endpoint_security_group.md | 12 ++++++------ .../external_management_network_instance_profile.md | 4 ++-- docs/data-sources/out_of_band_contract.md | 2 +- docs/data-sources/relation_to_consumed_contract.md | 2 +- .../relation_to_consumed_out_of_band_contract.md | 2 +- docs/data-sources/relation_to_imported_contract.md | 2 +- docs/data-sources/relation_to_intra_epg_contract.md | 2 +- docs/data-sources/relation_to_provided_contract.md | 2 +- docs/resources/endpoint_security_group.md | 12 ++++++------ .../external_management_network_instance_profile.md | 4 ++-- docs/resources/out_of_band_contract.md | 2 +- docs/resources/relation_to_consumed_contract.md | 2 +- .../relation_to_consumed_out_of_band_contract.md | 2 +- docs/resources/relation_to_imported_contract.md | 2 +- docs/resources/relation_to_intra_epg_contract.md | 2 +- docs/resources/relation_to_provided_contract.md | 2 +- gen/definitions/properties.yaml | 7 ++++++- .../data_source_aci_endpoint_security_group.go | 12 ++++++------ ...i_external_management_network_instance_profile.go | 4 ++-- .../provider/data_source_aci_out_of_band_contract.go | 2 +- .../data_source_aci_relation_to_consumed_contract.go | 2 +- ..._aci_relation_to_consumed_out_of_band_contract.go | 2 +- .../data_source_aci_relation_to_imported_contract.go | 2 +- ...data_source_aci_relation_to_intra_epg_contract.go | 2 +- .../data_source_aci_relation_to_provided_contract.go | 2 +- .../provider/resource_aci_endpoint_security_group.go | 12 ++++++------ ...i_external_management_network_instance_profile.go | 4 ++-- .../provider/resource_aci_out_of_band_contract.go | 2 +- .../resource_aci_relation_to_consumed_contract.go | 2 +- ..._aci_relation_to_consumed_out_of_band_contract.go | 2 +- .../resource_aci_relation_to_imported_contract.go | 2 +- .../resource_aci_relation_to_intra_epg_contract.go | 2 +- .../resource_aci_relation_to_provided_contract.go | 2 +- 33 files changed, 62 insertions(+), 57 deletions(-) diff --git a/docs/data-sources/endpoint_security_group.md b/docs/data-sources/endpoint_security_group.md index 12780b142..ba0e63276 100644 --- a/docs/data-sources/endpoint_security_group.md +++ b/docs/data-sources/endpoint_security_group.md @@ -55,31 +55,31 @@ data "aci_endpoint_security_group" "example_application_profile" { * `name_alias` (nameAlias) - (string) The name alias of the Endpoint Security Group object. * `intra_esg_isolation` (pcEnfPref) - (string) Parameter used to determine whether communication between endpoints within the ESG is blocked. * `preferred_group_member` (prefGrMemb) - (string) Parameter used to determine whether the ESG is part of the preferred group. Members of this group are allowed to communicate without contracts. -* `admin_state` (shutdown) - (string) Withdraw ESg Configuration from all Nodes in the Fabric. +* `admin_state` (shutdown) - (string) Withdraw the ESG configuration from all nodes in the fabric. * `relation_to_consumed_contracts` - (list) A list of Relation To Consumed Contracts (ACI object [fvRsCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsCons/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. - * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Contract object. + * `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. * `contract_name` (tnVzBrCPName) - (string) The consumer contract name. * `relation_to_imported_contracts` - (list) A list of Relation To Imported Contracts (ACI object [fvRsConsIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsConsIf/overview)) pointing to Imported Contract (ACI Object [vzCPIf](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzCPIf/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. - * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Imported Contract object. + * `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. * `imported_contract_name` (tnVzCPIfName) - (string) The contract interface name. * `relation_to_intra_epg_contracts` - (list) A list of Relation To Intra Epg Contracts (ACI object [fvRsIntraEpg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsIntraEpg/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 3.0(1k) and later. * `annotation` (annotation) - (string) The annotation of the Relation To Intra Epg Contract object. - * `contract_name` (tnVzBrCPName) - (string) The binary contract name. + * `contract_name` (tnVzBrCPName) - (string) The contract name. * `relation_to_provided_contracts` - (list) A list of Relation To Provided Contracts (ACI object [fvRsProv](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsProv/overview)) pointing to Contract (ACI Object [vzBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzBrCP/overview)). This attribute is supported in ACI versions: 1.0(1e) and later. * `annotation` (annotation) - (string) The annotation of the Relation To Provided Contract object. * `match_criteria` (matchT) - (string) The matched EPG type. - * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Provided Contract object. + * `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. * `contract_name` (tnVzBrCPName) - (string) The provider contract name. * `relation_to_vrf` - (list) A list of Relation To VRF (ACI object [fvRsScope](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsScope/overview)) pointing to VRF (ACI Object [fvCtx](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvCtx/overview)). * `annotation` (annotation) - (string) The annotation of the Relation To VRF object. - * `vrf_name` (tnFvCtxName) - (string) Name. + * `vrf_name` (tnFvCtxName) - (string) The name of the VRF object. * `relation_to_contract_masters` - (list) A list of Relation To Contract Masters (ACI object [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) pointing to Endpoint Security Group (ACI Object [fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)). This attribute is supported in ACI versions: 2.3(1e) and later. * `annotation` (annotation) - (string) The annotation of the Relation To Contract Master object. diff --git a/docs/data-sources/external_management_network_instance_profile.md b/docs/data-sources/external_management_network_instance_profile.md index f28ca987a..e37cbe6e5 100644 --- a/docs/data-sources/external_management_network_instance_profile.md +++ b/docs/data-sources/external_management_network_instance_profile.md @@ -48,11 +48,11 @@ data "aci_external_management_network_instance_profile" "example" { * `annotation` (annotation) - (string) The annotation of the External Management Network Instance Profile object. * `description` (descr) - (string) The description of the External Management Network Instance Profile object. * `name_alias` (nameAlias) - (string) The name alias of the External Management Network Instance Profile object. -* `priority` (prio) - (string) The QoS priority class identifier of the External Management Network Instance Profile object. +* `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. * `relation_to_consumed_out_of_band_contracts` - (list) A list of Relation To Consumed Out Of Band Contracts (ACI object [mgmtRsOoBCons](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/mgmtRsOoBCons/overview)) pointing to Out Of Band Contract (ACI Object [vzOOBBrCP](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vzOOBBrCP/overview)). * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Out Of Band Contract object. - * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object. + * `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. * `out_of_band_contract_name` (tnVzOOBBrCPName) - (string) The name of the Out Of Band Contract object. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. diff --git a/docs/data-sources/out_of_band_contract.md b/docs/data-sources/out_of_band_contract.md index a9d5346ed..e08949db0 100644 --- a/docs/data-sources/out_of_band_contract.md +++ b/docs/data-sources/out_of_band_contract.md @@ -51,7 +51,7 @@ data "aci_out_of_band_contract" "example" { * `name_alias` (nameAlias) - (string) The name alias of the Out Of Band Contract object. * `owner_key` (ownerKey) - (string) The key for enabling clients to own their data for entity correlation. * `owner_tag` (ownerTag) - (string) A tag for enabling clients to add their own data. For example, to indicate who created this object. -* `priority` (prio) - (string) The QoS priority class identifier of the Out Of Band Contract object. +* `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. * `scope` (scope) - (string) Represents the scope of this contract. If the scope is set as application-profile, the epg can only communicate with epgs in the same application-profile. * `target_dscp` (targetDscp) - (string) The target DSCP value of the Out Of Band Contract object. diff --git a/docs/data-sources/relation_to_consumed_contract.md b/docs/data-sources/relation_to_consumed_contract.md index f27f8119d..6edb5ae7d 100644 --- a/docs/data-sources/relation_to_consumed_contract.md +++ b/docs/data-sources/relation_to_consumed_contract.md @@ -84,7 +84,7 @@ data "aci_relation_to_consumed_contract" "example_endpoint_security_group" { * `id` - (string) The distinguished name (DN) of the Relation To Consumed Contract object. * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. -* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Contract object. +* `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. * `key` (key) - (string) The key used to uniquely identify this configuration object. diff --git a/docs/data-sources/relation_to_consumed_out_of_band_contract.md b/docs/data-sources/relation_to_consumed_out_of_band_contract.md index c571b8935..d18442abe 100644 --- a/docs/data-sources/relation_to_consumed_out_of_band_contract.md +++ b/docs/data-sources/relation_to_consumed_out_of_band_contract.md @@ -49,7 +49,7 @@ data "aci_relation_to_consumed_out_of_band_contract" "example_external_managemen * `id` - (string) The distinguished name (DN) of the Relation To Consumed Out Of Band Contract object. * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Out Of Band Contract object. -* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object. +* `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. * `key` (key) - (string) The key used to uniquely identify this configuration object. diff --git a/docs/data-sources/relation_to_imported_contract.md b/docs/data-sources/relation_to_imported_contract.md index 009e8e1c6..5439a2ecc 100644 --- a/docs/data-sources/relation_to_imported_contract.md +++ b/docs/data-sources/relation_to_imported_contract.md @@ -84,7 +84,7 @@ data "aci_relation_to_imported_contract" "example_endpoint_security_group" { * `id` - (string) The distinguished name (DN) of the Relation To Imported Contract object. * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. -* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Imported Contract object. +* `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. * `key` (key) - (string) The key used to uniquely identify this configuration object. diff --git a/docs/data-sources/relation_to_intra_epg_contract.md b/docs/data-sources/relation_to_intra_epg_contract.md index 5522da637..fb068f9b0 100644 --- a/docs/data-sources/relation_to_intra_epg_contract.md +++ b/docs/data-sources/relation_to_intra_epg_contract.md @@ -76,7 +76,7 @@ data "aci_relation_to_intra_epg_contract" "example_endpoint_security_group" { - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) -* `contract_name` (tnVzBrCPName) - (string) The binary contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. +* `contract_name` (tnVzBrCPName) - (string) The contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. ### Read-Only ### diff --git a/docs/data-sources/relation_to_provided_contract.md b/docs/data-sources/relation_to_provided_contract.md index 2b825a343..bc10ee929 100644 --- a/docs/data-sources/relation_to_provided_contract.md +++ b/docs/data-sources/relation_to_provided_contract.md @@ -85,7 +85,7 @@ data "aci_relation_to_provided_contract" "example_endpoint_security_group" { * `id` - (string) The distinguished name (DN) of the Relation To Provided Contract object. * `annotation` (annotation) - (string) The annotation of the Relation To Provided Contract object. * `match_criteria` (matchT) - (string) The matched EPG type. -* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Provided Contract object. +* `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. * `annotations` - (list) A list of Annotations (ACI object [tagAnnotation](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/tagAnnotation/overview)). This attribute is supported in ACI versions: 3.2(1l) and later. * `key` (key) - (string) The key used to uniquely identify this configuration object. diff --git a/docs/resources/endpoint_security_group.md b/docs/resources/endpoint_security_group.md index 7507c6c4a..e00e0b42c 100644 --- a/docs/resources/endpoint_security_group.md +++ b/docs/resources/endpoint_security_group.md @@ -143,7 +143,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp * `preferred_group_member` (prefGrMemb) - (string) Parameter used to determine whether the ESG is part of the preferred group. Members of this group are allowed to communicate without contracts. - Default: `exclude` - Valid Values: `exclude`, `include`. -* `admin_state` (shutdown) - (string) Withdraw ESg Configuration from all Nodes in the Fabric. +* `admin_state` (shutdown) - (string) Withdraw the ESG configuration from all nodes in the fabric. - Default: `no` - Valid Values: `no`, `yes`. @@ -157,7 +157,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. - Default: `orchestrator:terraform` - * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Contract object. + * `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. @@ -171,7 +171,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. - Default: `orchestrator:terraform` - * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Imported Contract object. + * `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. @@ -179,7 +179,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp #### Required #### - * `contract_name` (tnVzBrCPName) - (string) The binary contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. + * `contract_name` (tnVzBrCPName) - (string) The contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. #### Optional #### @@ -199,7 +199,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp * `match_criteria` (matchT) - (string) The matched EPG type. - Default: `AtleastOne` - Valid Values: `All`, `AtleastOne`, `AtmostOne`, `None`. - * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Provided Contract object. + * `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. @@ -211,7 +211,7 @@ All examples for the Endpoint Security Group resource can be found in the [examp * `annotation` (annotation) - (string) The annotation of the Relation To VRF object. - Default: `orchestrator:terraform` - * `vrf_name` (tnFvCtxName) - (string) Name. + * `vrf_name` (tnFvCtxName) - (string) The name of the VRF object. * `relation_to_contract_masters` - (list) A list of Relation To Contract Masters (ACI object [fvRsSecInherited](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvRsSecInherited/overview)) pointing to Endpoint Security Group (ACI Object [fvESg](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/fvESg/overview)) which can be configured using the [aci_endpoint_security_group](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/endpoint_security_group) resource. This attribute is supported in ACI versions: 2.3(1e) and later. diff --git a/docs/resources/external_management_network_instance_profile.md b/docs/resources/external_management_network_instance_profile.md index d75b2bf40..267c4ab61 100644 --- a/docs/resources/external_management_network_instance_profile.md +++ b/docs/resources/external_management_network_instance_profile.md @@ -92,7 +92,7 @@ All examples for the External Management Network Instance Profile resource can b - Default: `orchestrator:terraform` * `description` (descr) - (string) The description of the External Management Network Instance Profile object. * `name_alias` (nameAlias) - (string) The name alias of the External Management Network Instance Profile object. -* `priority` (prio) - (string) The QoS priority class identifier of the External Management Network Instance Profile object. +* `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. @@ -106,7 +106,7 @@ All examples for the External Management Network Instance Profile resource can b * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Out Of Band Contract object. - Default: `orchestrator:terraform` - * `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object. + * `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/out_of_band_contract.md b/docs/resources/out_of_band_contract.md index 946b1403b..9532f2d61 100644 --- a/docs/resources/out_of_band_contract.md +++ b/docs/resources/out_of_band_contract.md @@ -95,7 +95,7 @@ All examples for the Out Of Band Contract resource can be found in the [examples * `name_alias` (nameAlias) - (string) The name alias of the Out Of Band Contract object. * `owner_key` (ownerKey) - (string) The key for enabling clients to own their data for entity correlation. * `owner_tag` (ownerTag) - (string) A tag for enabling clients to add their own data. For example, to indicate who created this object. -* `priority` (prio) - (string) The QoS priority class identifier of the Out Of Band Contract object. +* `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. * `scope` (scope) - (string) Represents the scope of this contract. If the scope is set as application-profile, the epg can only communicate with epgs in the same application-profile. diff --git a/docs/resources/relation_to_consumed_contract.md b/docs/resources/relation_to_consumed_contract.md index cb5a17b0e..cf07494bf 100644 --- a/docs/resources/relation_to_consumed_contract.md +++ b/docs/resources/relation_to_consumed_contract.md @@ -139,7 +139,7 @@ All examples for the Relation To Consumed Contract resource can be found in the * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Contract object. - Default: `orchestrator:terraform` -* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Contract object. +* `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/relation_to_consumed_out_of_band_contract.md b/docs/resources/relation_to_consumed_out_of_band_contract.md index be34695dc..21f4c6c3d 100644 --- a/docs/resources/relation_to_consumed_out_of_band_contract.md +++ b/docs/resources/relation_to_consumed_out_of_band_contract.md @@ -85,7 +85,7 @@ All examples for the Relation To Consumed Out Of Band Contract resource can be f * `annotation` (annotation) - (string) The annotation of the Relation To Consumed Out Of Band Contract object. - Default: `orchestrator:terraform` -* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object. +* `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/relation_to_imported_contract.md b/docs/resources/relation_to_imported_contract.md index bb5218c04..5003b7b3b 100644 --- a/docs/resources/relation_to_imported_contract.md +++ b/docs/resources/relation_to_imported_contract.md @@ -139,7 +139,7 @@ All examples for the Relation To Imported Contract resource can be found in the * `annotation` (annotation) - (string) The annotation of the Relation To Imported Contract object. - Default: `orchestrator:terraform` -* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Imported Contract object. +* `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/docs/resources/relation_to_intra_epg_contract.md b/docs/resources/relation_to_intra_epg_contract.md index d6af653e3..65f6b0829 100644 --- a/docs/resources/relation_to_intra_epg_contract.md +++ b/docs/resources/relation_to_intra_epg_contract.md @@ -125,7 +125,7 @@ All examples for the Relation To Intra Epg Contract resource can be found in the - [vnsSDEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSDEPpInfo/overview) - [vnsSHEPpInfo](https://pubhub.devnetcloud.com/media/model-doc-latest/docs/app/index.html#/objects/vnsSHEPpInfo/overview) -* `contract_name` (tnVzBrCPName) - (string) The binary contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. +* `contract_name` (tnVzBrCPName) - (string) The contract name. This attribute can be referenced from a [resource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/contract) with `aci_contract.example.name` or from a [datasource](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/data-sources/contract) with `data.aci_contract.example.name`. ### Read-Only ### diff --git a/docs/resources/relation_to_provided_contract.md b/docs/resources/relation_to_provided_contract.md index ba8650ebe..333f5e931 100644 --- a/docs/resources/relation_to_provided_contract.md +++ b/docs/resources/relation_to_provided_contract.md @@ -144,7 +144,7 @@ All examples for the Relation To Provided Contract resource can be found in the * `match_criteria` (matchT) - (string) The matched EPG type. - Default: `AtleastOne` - Valid Values: `All`, `AtleastOne`, `AtmostOne`, `None`. -* `priority` (prio) - (string) The QoS priority class identifier of the Relation To Provided Contract object. +* `priority` (prio) - (string) The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles. - Default: `unspecified` - Valid Values: `level1`, `level2`, `level3`, `level4`, `level5`, `level6`, `unspecified`. diff --git a/gen/definitions/properties.yaml b/gen/definitions/properties.yaml index 039635f13..97bb7a034 100644 --- a/gen/definitions/properties.yaml +++ b/gen/definitions/properties.yaml @@ -12,7 +12,7 @@ global: id: "The identifier of the %s object." tnVzOOBBrCPName: "The name of the Out Of Band Contract object." tnRtctrlProfileName: "The name of the Route Control Profile object." - prio: "The QoS priority class identifier of the %s object." + prio: "The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles." overwrites: count: "apic_count" # count is a terraform reserved schema entry provider: "prov" # provider is a terraform reserved schema entry @@ -333,6 +333,7 @@ fvESg: documentation: prefGrMemb: "Parameter used to determine whether the ESG is part of the preferred group. Members of this group are allowed to communicate without contracts." pcEnfPref: "Parameter used to determine whether communication between endpoints within the ESG is blocked." + shutdown: "Withdraw the ESG configuration from all nodes in the fabric." parents: - class_name: "fvAp" parent_dependency: "fvTenant" @@ -341,6 +342,8 @@ fvESg: - "prio" fvRsScope: + documentation: + tnFvCtxName: "The name of the VRF object." parents: - class_name: "fvESg" parent_dependency: "fvAp" @@ -380,6 +383,8 @@ fvRsProtBy: parent_dependency: "fvAp" fvRsIntraEpg: + documentation: + tnVzBrCPName: "The contract name" ignores: - "intent" parents: diff --git a/internal/provider/data_source_aci_endpoint_security_group.go b/internal/provider/data_source_aci_endpoint_security_group.go index f42383021..0aad16d22 100644 --- a/internal/provider/data_source_aci_endpoint_security_group.go +++ b/internal/provider/data_source_aci_endpoint_security_group.go @@ -115,7 +115,7 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "admin_state": schema.StringAttribute{ Computed: true, - MarkdownDescription: `Withdraw ESg Configuration from all Nodes in the Fabric.`, + MarkdownDescription: `Withdraw the ESG configuration from all nodes in the fabric.`, }, "relation_to_consumed_contracts": schema.SetNestedAttribute{ MarkdownDescription: `The Consumer contract profile information.`, @@ -128,7 +128,7 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "contract_name": schema.StringAttribute{ Computed: true, @@ -148,7 +148,7 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifier of the Relation To Imported Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "imported_contract_name": schema.StringAttribute{ Computed: true, @@ -172,7 +172,7 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "contract_name": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The binary contract name.`, + MarkdownDescription: `The contract name.`, }, }, }, @@ -192,7 +192,7 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifier of the Relation To Provided Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "contract_name": schema.StringAttribute{ Computed: true, @@ -212,7 +212,7 @@ func (d *FvESgDataSource) Schema(ctx context.Context, req datasource.SchemaReque }, "vrf_name": schema.StringAttribute{ Computed: true, - MarkdownDescription: `Name.`, + MarkdownDescription: `The name of the VRF object.`, }, }, }, diff --git a/internal/provider/data_source_aci_external_management_network_instance_profile.go b/internal/provider/data_source_aci_external_management_network_instance_profile.go index 0c664b300..ec73384ec 100644 --- a/internal/provider/data_source_aci_external_management_network_instance_profile.go +++ b/internal/provider/data_source_aci_external_management_network_instance_profile.go @@ -62,7 +62,7 @@ func (d *MgmtInstPDataSource) Schema(ctx context.Context, req datasource.SchemaR }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifier of the External Management Network Instance Profile object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "relation_to_consumed_out_of_band_contracts": schema.SetNestedAttribute{ MarkdownDescription: `An external management entity instance profile to an out-of-band binary contract profile. The instance profiles of external management entities can communicate with nodes that are part of out-of-band management endpoint group. To enable this communication, a contract is required between the instance profile and the out-of-band management endpoint group.`, @@ -75,7 +75,7 @@ func (d *MgmtInstPDataSource) Schema(ctx context.Context, req datasource.SchemaR }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "out_of_band_contract_name": schema.StringAttribute{ Computed: true, diff --git a/internal/provider/data_source_aci_out_of_band_contract.go b/internal/provider/data_source_aci_out_of_band_contract.go index 7008d7738..d81a82045 100644 --- a/internal/provider/data_source_aci_out_of_band_contract.go +++ b/internal/provider/data_source_aci_out_of_band_contract.go @@ -74,7 +74,7 @@ func (d *VzOOBBrCPDataSource) Schema(ctx context.Context, req datasource.SchemaR }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifier of the Out Of Band Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "scope": schema.StringAttribute{ Computed: true, diff --git a/internal/provider/data_source_aci_relation_to_consumed_contract.go b/internal/provider/data_source_aci_relation_to_consumed_contract.go index 7986e1f58..fb0409a1c 100644 --- a/internal/provider/data_source_aci_relation_to_consumed_contract.go +++ b/internal/provider/data_source_aci_relation_to_consumed_contract.go @@ -54,7 +54,7 @@ func (d *FvRsConsDataSource) Schema(ctx context.Context, req datasource.SchemaRe }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/data_source_aci_relation_to_consumed_out_of_band_contract.go b/internal/provider/data_source_aci_relation_to_consumed_out_of_band_contract.go index 2f18e94a9..6c1609301 100644 --- a/internal/provider/data_source_aci_relation_to_consumed_out_of_band_contract.go +++ b/internal/provider/data_source_aci_relation_to_consumed_out_of_band_contract.go @@ -54,7 +54,7 @@ func (d *MgmtRsOoBConsDataSource) Schema(ctx context.Context, req datasource.Sch }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "out_of_band_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/data_source_aci_relation_to_imported_contract.go b/internal/provider/data_source_aci_relation_to_imported_contract.go index 83d88b4a3..4c0faf3cb 100644 --- a/internal/provider/data_source_aci_relation_to_imported_contract.go +++ b/internal/provider/data_source_aci_relation_to_imported_contract.go @@ -54,7 +54,7 @@ func (d *FvRsConsIfDataSource) Schema(ctx context.Context, req datasource.Schema }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifier of the Relation To Imported Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "imported_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/data_source_aci_relation_to_intra_epg_contract.go b/internal/provider/data_source_aci_relation_to_intra_epg_contract.go index 5a04d15b8..01fc6ee59 100644 --- a/internal/provider/data_source_aci_relation_to_intra_epg_contract.go +++ b/internal/provider/data_source_aci_relation_to_intra_epg_contract.go @@ -54,7 +54,7 @@ func (d *FvRsIntraEpgDataSource) Schema(ctx context.Context, req datasource.Sche }, "contract_name": schema.StringAttribute{ Required: true, - MarkdownDescription: `The binary contract name.`, + MarkdownDescription: `The contract name.`, }, "annotations": schema.SetNestedAttribute{ MarkdownDescription: ``, diff --git a/internal/provider/data_source_aci_relation_to_provided_contract.go b/internal/provider/data_source_aci_relation_to_provided_contract.go index e2f9fdc3f..66f7cde05 100644 --- a/internal/provider/data_source_aci_relation_to_provided_contract.go +++ b/internal/provider/data_source_aci_relation_to_provided_contract.go @@ -58,7 +58,7 @@ func (d *FvRsProvDataSource) Schema(ctx context.Context, req datasource.SchemaRe }, "priority": schema.StringAttribute{ Computed: true, - MarkdownDescription: `The QoS priority class identifier of the Relation To Provided Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_endpoint_security_group.go b/internal/provider/resource_aci_endpoint_security_group.go index d7447927a..7a78b9b59 100644 --- a/internal/provider/resource_aci_endpoint_security_group.go +++ b/internal/provider/resource_aci_endpoint_security_group.go @@ -1101,7 +1101,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("no", "yes"), }, - MarkdownDescription: `Withdraw ESg Configuration from all Nodes in the Fabric.`, + MarkdownDescription: `Withdraw the ESG configuration from all nodes in the fabric.`, }, "relation_to_consumed_contracts": schema.SetNestedAttribute{ MarkdownDescription: `The Consumer contract profile information.`, @@ -1129,7 +1129,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "contract_name": schema.StringAttribute{ Required: true, @@ -1167,7 +1167,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifier of the Relation To Imported Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "imported_contract_name": schema.StringAttribute{ Required: true, @@ -1205,7 +1205,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, PlanModifiers: []planmodifier.String{ stringplanmodifier.UseStateForUnknown(), }, - MarkdownDescription: `The binary contract name.`, + MarkdownDescription: `The contract name.`, }, }, }, @@ -1247,7 +1247,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifier of the Relation To Provided Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "contract_name": schema.StringAttribute{ Required: true, @@ -1285,7 +1285,7 @@ func (r *FvESgResource) Schema(ctx context.Context, req resource.SchemaRequest, PlanModifiers: []planmodifier.String{ stringplanmodifier.UseStateForUnknown(), }, - MarkdownDescription: `Name.`, + MarkdownDescription: `The name of the VRF object.`, }, }, }, diff --git a/internal/provider/resource_aci_external_management_network_instance_profile.go b/internal/provider/resource_aci_external_management_network_instance_profile.go index afc7480c8..4d0402787 100644 --- a/internal/provider/resource_aci_external_management_network_instance_profile.go +++ b/internal/provider/resource_aci_external_management_network_instance_profile.go @@ -139,7 +139,7 @@ func (r *MgmtInstPResource) Schema(ctx context.Context, req resource.SchemaReque Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifier of the External Management Network Instance Profile object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "relation_to_consumed_out_of_band_contracts": schema.SetNestedAttribute{ MarkdownDescription: `An external management entity instance profile to an out-of-band binary contract profile. The instance profiles of external management entities can communicate with nodes that are part of out-of-band management endpoint group. To enable this communication, a contract is required between the instance profile and the out-of-band management endpoint group.`, @@ -167,7 +167,7 @@ func (r *MgmtInstPResource) Schema(ctx context.Context, req resource.SchemaReque Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "out_of_band_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_out_of_band_contract.go b/internal/provider/resource_aci_out_of_band_contract.go index ed8e9acc1..f5599299e 100644 --- a/internal/provider/resource_aci_out_of_band_contract.go +++ b/internal/provider/resource_aci_out_of_band_contract.go @@ -163,7 +163,7 @@ func (r *VzOOBBrCPResource) Schema(ctx context.Context, req resource.SchemaReque Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifier of the Out Of Band Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "scope": schema.StringAttribute{ Optional: true, diff --git a/internal/provider/resource_aci_relation_to_consumed_contract.go b/internal/provider/resource_aci_relation_to_consumed_contract.go index f55e16e25..b1a187caa 100644 --- a/internal/provider/resource_aci_relation_to_consumed_contract.go +++ b/internal/provider/resource_aci_relation_to_consumed_contract.go @@ -114,7 +114,7 @@ func (r *FvRsConsResource) Schema(ctx context.Context, req resource.SchemaReques Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_relation_to_consumed_out_of_band_contract.go b/internal/provider/resource_aci_relation_to_consumed_out_of_band_contract.go index 8f6be9ff2..66db21ecd 100644 --- a/internal/provider/resource_aci_relation_to_consumed_out_of_band_contract.go +++ b/internal/provider/resource_aci_relation_to_consumed_out_of_band_contract.go @@ -114,7 +114,7 @@ func (r *MgmtRsOoBConsResource) Schema(ctx context.Context, req resource.SchemaR Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifier of the Relation To Consumed Out Of Band Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "out_of_band_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_relation_to_imported_contract.go b/internal/provider/resource_aci_relation_to_imported_contract.go index 4fdc9c209..c05dd5e3d 100644 --- a/internal/provider/resource_aci_relation_to_imported_contract.go +++ b/internal/provider/resource_aci_relation_to_imported_contract.go @@ -114,7 +114,7 @@ func (r *FvRsConsIfResource) Schema(ctx context.Context, req resource.SchemaRequ Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifier of the Relation To Imported Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "imported_contract_name": schema.StringAttribute{ Required: true, diff --git a/internal/provider/resource_aci_relation_to_intra_epg_contract.go b/internal/provider/resource_aci_relation_to_intra_epg_contract.go index ff6e9b0f5..91e7267e6 100644 --- a/internal/provider/resource_aci_relation_to_intra_epg_contract.go +++ b/internal/provider/resource_aci_relation_to_intra_epg_contract.go @@ -108,7 +108,7 @@ func (r *FvRsIntraEpgResource) Schema(ctx context.Context, req resource.SchemaRe stringplanmodifier.UseStateForUnknown(), stringplanmodifier.RequiresReplace(), }, - MarkdownDescription: `The binary contract name.`, + MarkdownDescription: `The contract name.`, }, "annotations": schema.SetNestedAttribute{ MarkdownDescription: ``, diff --git a/internal/provider/resource_aci_relation_to_provided_contract.go b/internal/provider/resource_aci_relation_to_provided_contract.go index cf269c001..06e5140a6 100644 --- a/internal/provider/resource_aci_relation_to_provided_contract.go +++ b/internal/provider/resource_aci_relation_to_provided_contract.go @@ -126,7 +126,7 @@ func (r *FvRsProvResource) Schema(ctx context.Context, req resource.SchemaReques Validators: []validator.String{ stringvalidator.OneOf("level1", "level2", "level3", "level4", "level5", "level6", "unspecified"), }, - MarkdownDescription: `The QoS priority class identifier of the Relation To Provided Contract object.`, + MarkdownDescription: `The Quality of Service (QoS) priority class ID. QoS refers to the capability of a network to provide better service to selected network traffic over various technologies. The primary goal of QoS is to provide priority including dedicated bandwidth, controlled jitter and latency (required by some real-time and interactive traffic), and improved loss characteristics. You can configure the bandwidth of each QoS level using QoS profiles.`, }, "contract_name": schema.StringAttribute{ Required: true,