Skip to content

Commit 30aee4b

Browse files
ksamoraycursoragentbgujarps031046claude
authored
Cherry-pick v3.12.1 PRs from master (#2149)
* Implement nsxt_policy_virtual_network_appliance_cluster resource and datasource (#2061) Adds resource and data source for the Virtual Network Appliance Cluster API (/infra/sites/{siteId}/enforcement-points/{epId}/virtual-network-appliance-clusters/{id}), including API client wrapper, CRUD logic, mock unit tests, acceptance tests, and docs. Also adds nsxt_policy_virtual_network_appliance_cluster_realization data source which waits for cluster and per-appliance realization and exposes vna_paths — the policy paths of deployed VNA appliance nodes needed by downstream resources such as nsxt_policy_route_controller_interface. Co-authored-by: Cursor <cursoragent@cursor.com> * Implement nsxt_policy_virtual_network_appliance resource, data source and realization data source (#2084) Add nsxt_policy_virtual_network_appliance resource and data source for managing virtual network appliances within VNA clusters. Add nsxt_policy_virtual_network_appliance_realization data source to poll per-appliance state until a terminal realization state is reached. Consolidate VNA data source and realization data source acceptance tests within the resource test to avoid redundant VNA deployments. Use NSXT_TEST_MGT_NETWORK for the management interface network ID. Co-authored-by: Cursor <cursoragent@cursor.com> * Implement nsxt_policy_route_controller resource and datasource (#2074) Add resource and data source for the Route Controller API (/infra/route-controllers/{id}) with an inline bgp_config block backed by a single atomic H-API call. Key implementation details: - H-API (Infra.Patch) creates/updates RouteController and its RouteControllerBgpRoutingConfig child atomically in one request, mirroring the Tier-0 / transit-gateway BGP pattern. - RouteControllerBgpRoutingConfig.Id="bgp" and ResourceType are set explicitly so NSX can route the child correctly; omitting them caused the "Resource type not provided for id:null" error seen previously. - MarkedForDelete child is sent when the user removes bgp_config, so cleanup is also atomic. - ha_mode and virtual_network_appliance_cluster_path use OmitIfEmpty metadata, letting SchemaToStruct skip nil-pointer serialisation that NSX rejected with a field-validation error. - Acceptance tests depend on nsxt_policy_virtual_network_appliance_cluster (from the VNA branch base) rather than a hardcoded env-var path. Signed-off-by: Kobi Samoray <kobi.samoray@broadcom.com> Co-authored-by: Cursor <cursoragent@cursor.com> * Implement nsxt_policy_route_controller_interface resource and datasource (#2076) Adds resource and data source for the Route Controller Interface API (/infra/route-controllers/{rc-id}/interfaces/{interface-id}), including API client wrapper, CRUD logic, mock unit tests, acceptance tests, and docs. Acceptance tests use vna_paths[0] from the realization data source to supply the required VNA appliance node path (NSX 9.2 rejects the cluster path). Co-authored-by: Cursor <cursoragent@cursor.com> * Implement nsxt_policy_route_controller_bgp_neighbor resource and datasource (#2075) Adds resource and data source for the Route Controller BGP Neighbor Config API (/infra/route-controllers/{rc-id}/bgp-neighbor-configs/{neighbor-id}), including API client wrapper, CRUD logic, mock unit tests, acceptance tests, and docs. Acceptance tests provision a prerequisite nsxt_policy_route_controller_interface whose floating IP is used as source_addresses, satisfying NSX 9.2 validation. The interface template uses vna_paths[0] from the realization data source to supply the required VNA appliance node path. Co-authored-by: Cursor <cursoragent@cursor.com> * Add nsxt_policy_distributed_vxlan_connection resource and data source (#2073) * Implement nsxt_policy_route_controller resource and datasource Add resource and data source for the Route Controller API (/infra/route-controllers/{id}) with an inline bgp_config block backed by a single atomic H-API call. Key implementation details: - H-API (Infra.Patch) creates/updates RouteController and its RouteControllerBgpRoutingConfig child atomically in one request, mirroring the Tier-0 / transit-gateway BGP pattern. - RouteControllerBgpRoutingConfig.Id="bgp" and ResourceType are set explicitly so NSX can route the child correctly; omitting them caused the "Resource type not provided for id:null" error seen previously. - MarkedForDelete child is sent when the user removes bgp_config, so cleanup is also atomic. - ha_mode and virtual_network_appliance_cluster_path use OmitIfEmpty metadata, letting SchemaToStruct skip nil-pointer serialisation that NSX rejected with a field-validation error. - Acceptance tests depend on nsxt_policy_virtual_network_appliance_cluster (from the VNA branch base) rather than a hardcoded env-var path. Signed-off-by: Kobi Samoray <kobi.samoray@broadcom.com> Co-authored-by: Cursor <cursoragent@cursor.com> * Add nsxt_policy_distributed_vxlan_connection resource and data source Signed-off-by: Kobi Samoray <kobi.samoray@broadcom.com> --------- Signed-off-by: Kobi Samoray <kobi.samoray@broadcom.com> Co-authored-by: Cursor <cursoragent@cursor.com> * Fix credential drift in nsxt_policy_virtual_network_appliance (bug 3715433) (#2113) When an Update adds the credentials block for the first time, Terraform places the planned passwords in the diff area of ResourceData (accessible via d.Get) but not yet in the writer. The previous setVNACredentialsInSchema returned nil early when obj.Credentials was nil, never calling d.Set, so the passwords were never transferred to the writer and were lost from state, causing perpetual + credentials drift on every subsequent plan. Fix: always call d.Set("credentials", …) when credentials are present in d.Get("credentials"), regardless of whether obj.Credentials is nil. This ensures passwords are written to the ResourceData writer and persisted to state. Add three new mock sub-tests that cover: - Read preserves passwords when API returns nil credentials - Read preserves passwords and populates computed usernames when API returns a Credentials object - Read does not inject a credentials block when none is configured Add TestAccResourceNsxtPolicyVirtualNetworkAppliance_credentialsDrift, an acceptance test that deploys a VNA without credentials then updates it to add credentials, verifying the plan is a no-op after the update (the scenario described in bug update #1). Co-authored-by: Cursor <cursoragent@cursor.com> * @ANS-TF-IDPS: Support BMS Group type (#2102) + Update Group resource with static and dynamic group mebership support for BMS + Add acceptance test for all cases + Version specific check for BMS CRUD APIs + Add Unit Test + Manual Testing Jira: #NSEC-13749 * @ANS-TF-BMS: Add comprehensive Bare Metal Server (BMS) support to NSX-T provider (#ANSD-120216) (#2127) + TF Resource for BMS Server Tags - Resource for managing tags on Bare Metal Servers + TF Resource for BMS Interface Tags - Resource for managing tags on Bare Metal Server Interfaces + TF Data Source for BMS Server - Data source to retrieve single BMS server by external_id or display_name + TF Data Source for BMS Servers - Data source to retrieve BMS server inventory with advanced filtering + TF Data Source for BMS Interface - Data source to retrieve single BMS interface by external_id or display_name + TF Data Source for BMS Interfaces - Data source to retrieve BMS interface inventory with filtering + TF Data Source for BMS Server Tags - Data source to retrieve existing tags on BMS servers + TF Data Source for BMS Interface Tags - Data source to retrieve existing tags on BMS interfaces + TF Data Source for BMS Server Group Associations - Data source to retrieve group memberships for BMS servers + TF Data Source for BMS Interface Group Associations - Data source to retrieve group memberships for BMS interfaces + TF Data Source for BMS Server Group Members - Data source to retrieve BMS server members of a group + TF Data Source for BMS Interface Group Members - Data source to retrieve BMS interface members of a group + Enhanced TF Resource for Policy Groups - Added BMS/BMSI support with group_type = "BareMetalServer" + Enhanced TF Resource for Security Policies - Added BMS group support in DFW rules + TF acceptance tests for all new resources and data sources + TF unit tests for all new resources and data sources + TF manual tests for complete scenario coverage + TF documentation for all new resources and data sources - `nsxt_policy_baremetal_server_tags` - Server tag management with CRUD operations - `nsxt_policy_baremetal_server_interface_tags` - Interface tag management with CRUD operations - Enhanced `nsxt_policy_group` - BMS static/dynamic group support with member types - Enhanced `nsxt_policy_security_policy` - DFW policy integration with BMS groups - Enhanced `nsxt_policy_security_policy_rule` - Rule-level BMS group support - Enhanced `nsxt_policy_parent_security_policy` - Parent policy BMS integration - `nsxt_policy_baremetal_servers` - BMS vulk server inventory with advanced filtering (regex, OS, tags, source) - `nsxt_policy_baremetal_server` - BMS Server individual lookup by external_id/display_name - `nsxt_policy_baremetal_server_interfaces` - BMS bulk interface inventory with comprehensive filtering - `nsxt_policy_baremetal_server_interface` - BMS interface individual lookup by external_id/display_name - `nsxt_policy_baremetal_server_tags` - BMS Server tag retrieval and validation - `nsxt_policy_baremetal_server_interface_tags` - BMS Interface tag retrieval and validation - `nsxt_policy_baremetal_server_group_associations` - BMS Server group associations for membership discovery - `nsxt_policy_baremetal_server_interface_group_associations` - BMS Interface group associations for membership discovery - `nsxt_policy_group_baremetal_server_members` - BMS Server group members for direct member listing - `nsxt_policy_group_baremetal_server_interface_members` - BMS Interface group members for direct member listing - Enhanced `nsxt_policy_security_policy` - Policy discovery with BMS group integration BMS Resource Features: - Complete CRUD operations for BMS server and interface tags - Dynamic group support with all operators (EQUALS, CONTAINS, STARTSWITH, ENDSWITH, NOTEQUALS, NOTIN) - Static group support with external_id_expression for BMS, BMSI, and mixed membership - Nested group support with path_expression for hierarchical relationships - DFW policy integration across all categories (Application, Infrastructure, Emergency) - Bidirectional group membership APIs (Member→Groups AND Group→Members) - NSX-T 9.0.0+ compatibility with version validation - Local Manager only support - Enhanced error messaging with troubleshooting guidance - NSX-T Search API Integration**: Uses `/policy/api/v1/search/query` for inventory discovery - Hybrid Filtering**: Server-side Lucene queries for tags, client-side filtering for display names/regex patterns - Error Handling**: Comprehensive validation for duplicate display names and missing resources Testing: Comprehensive testing via acceptance tests, unit tests and manual testing on live NSX-T 9.0.0 setup. BMS Test Coverage: - 63 acceptance tests with complete lifecycle validation - 52 unit tests with utgomock pattern covering positive, negative, and error scenarios - 88 resources created successfully and multiple manual test phases with comprehensive scenario coverage - Complete BMS workflow testing (inventory → tagging → grouping → DFW → associations → members) - All supported operators and filtering capabilities tested - Error scenario validation for unsupported features BMS Acceptance Tests: 1. **Inventory & Discovery** (7 tests) - Server/interface discovery and advanced filtering 2. **Tagging Operations** (8 tests) - Complete CRUD lifecycle with enhanced validation 3. **Static Groups** (4 tests) - External ID and nested group patterns 4. **Dynamic Groups** (5 tests) - All operators across member types 5. **DFW Policies** (8 tests) - Complete policy integration with enhanced validation 6. **Group Associations** (6 tests) - Membership discovery and validation 7. **Group Members** (8 tests) - Direct member listing with enhanced validation 8. **Validation & Error Handling** (3 tests) - Restriction and error validation 9. **End-to-End Workflows** (3 tests) - Complete lifecycle testing with enhanced validation 10. **Comprehensive Integration** (11 tests) - Cross-component validation with parallel support Unit Tests (52): - **Mock-based testing** for all resources and data sources using utgomock pattern - **Schema validation** and boundary condition testing - **Error handling** and edge case coverage with comprehensive scenarios - **API integration validation** with enhanced mock scenarios Manual Testing: - **Comprehensive scenario coverage** across all supported BMS workflows - **Multi-environment validation** including vSphere and bare metal deployments - **Performance testing** with large-scale server and interface inventories (1000+ entities) - **Error scenario validation** including network failures and API rate limiting - **Integration testing** with existing NSX-T policies and DFW rules - **Upgrade path testing** from non-BMS to BMS-enabled configurations Key Features Tested: - BMS-specific field validation** with enhanced schema boundary testing and type safety - Dynamic group operator validation** per member type (EQUALS, CONTAINS, STARTS_WITH, ENDS_WITH) - Static/nested group membership** with proper validation and circular dependency detection - DFW policy integration** with BMS groups as sources/destinations in all policy categories - Bidirectional group membership APIs** with consistency validation and enforcement point testing - Tag data source validation** for drift detection and complete CRUD workflows - Individual entity lookup** with enhanced existence validation and error handling for ambiguous matches - Advanced filtering patterns** with comprehensive regex and substring matching validation - Enhanced duplicate display name error handling** with clear resolution guidance Key Validations: - Group type restrictions (BareMetalServer required for BMS/BMSI members) - Dynamic group operator support per member type - DFW category support with GFW/IDPS restriction enforcement - NSX version requirement validation (9.0.0+) - Error handling for unsupported feature combinations BMS-Specific Features: - group_type = "BareMetalServer" requirement for groups containing BMS/BMSI members - external_id_expression support for static membership patterns - path_expression support for nested group hierarchies - Dynamic group operators matching NSX-T API capabilities per member type - DFW policy integration maintaining existing behavior with BMS enhancement - Bidirectional APIs for complete association analysis - Advanced filtering capabilities with comprehensive validation - Enhanced operational monitoring with troubleshooting attributes Testing Environment: - NSX-T Version: 9.0.0+ - Provider Version: >=3.12.0 - Infrastructure: Local Manager only (Federation and Multi-tenancy not supported for BMS) JIRA: #ANSD-120216 * Some essientials to make cherry-picks work Remove some redundant code, fix linter issues and update the SDK version to the required one. Signed-off-by: Kobi Samoray <kobi.samoray@broadcom.com> * fix(nsxt_policy_route_controller): mark virtual_network_appliance_cluster_path as Required (#2144) The NSX API enforces virtual_network_appliance_cluster_path as a required field on RouteController objects (error code 255: required property missing), but the Terraform schema declared it Optional. This caused apply to fail at the API layer with no prior Terraform-level validation. - Change schema attribute from Optional to Required - Remove OmitIfEmpty from metadata (not applicable to required fields) - Update docs and example usage to reflect the requirement Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(nsxt_policy_route_controller_interface): mark interface_address as Required (#2146) The NSX API enforces interface_address as a required field on RouteControllerInterface objects (error code 255: required property missing), but the Terraform schema declared it Optional. This caused apply to fail at the API layer with no prior Terraform-level validation. - Change interface_address from Optional to Required with MinItems: 1 - Update docs to reflect the requirement Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Signed-off-by: Kobi Samoray <kobi.samoray@broadcom.com> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: bgujar <bhagyashree.gujar@broadcom.com> Co-authored-by: Priyanka Singh <priyanka1.singh@broadcom.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 392b144 commit 30aee4b

101 files changed

Lines changed: 16846 additions & 134 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
//nolint:revive
2+
package infra
3+
4+
// The following file has been autogenerated. Please avoid any changes!
5+
import (
6+
"errors"
7+
8+
vapiProtocolClient_ "github.com/vmware/vsphere-automation-sdk-go/runtime/protocol/client"
9+
client0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/infra"
10+
model0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/model"
11+
12+
utl "github.com/vmware/terraform-provider-nsxt/api/utl"
13+
)
14+
15+
type BareMetalServerGroupAssociationsClientContext utl.ClientContext
16+
17+
func NewBareMetalServerGroupAssociationsClient(sessionContext utl.SessionContext, connector vapiProtocolClient_.Connector) *BareMetalServerGroupAssociationsClientContext {
18+
var client interface{}
19+
20+
switch sessionContext.ClientType {
21+
22+
case utl.Local:
23+
client = client0.NewBmsGroupAssociationsClient(connector)
24+
25+
default:
26+
return nil
27+
}
28+
return &BareMetalServerGroupAssociationsClientContext{Client: client, ClientType: sessionContext.ClientType, ProjectID: sessionContext.ProjectID, VPCID: sessionContext.VPCID}
29+
}
30+
31+
func (c BareMetalServerGroupAssociationsClientContext) List(bmsExternalIdParam string, cursorParam *string, enforcementPointPathParam *string, includeMarkForDeleteObjectsParam *bool, includedFieldsParam *string, pageSizeParam *int64, sortAscendingParam *bool, sortByParam *string) (model0.PolicyResourceReferenceForEPListResult, error) {
32+
var obj model0.PolicyResourceReferenceForEPListResult
33+
var err error
34+
35+
switch c.ClientType {
36+
37+
case utl.Local:
38+
client := c.Client.(client0.BmsGroupAssociationsClient)
39+
obj, err = client.List(bmsExternalIdParam, cursorParam, enforcementPointPathParam, includeMarkForDeleteObjectsParam, includedFieldsParam, pageSizeParam, sortAscendingParam, sortByParam)
40+
41+
default:
42+
err = errors.New("invalid infrastructure for model")
43+
}
44+
return obj, err
45+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
//nolint:revive
2+
package infra
3+
4+
// The following file has been autogenerated. Please avoid any changes!
5+
import (
6+
"errors"
7+
8+
vapiProtocolClient_ "github.com/vmware/vsphere-automation-sdk-go/runtime/protocol/client"
9+
client0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/infra"
10+
model0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/model"
11+
12+
utl "github.com/vmware/terraform-provider-nsxt/api/utl"
13+
)
14+
15+
type BareMetalServerInterfaceGroupAssociationsClientContext utl.ClientContext
16+
17+
func NewBareMetalServerInterfaceGroupAssociationsClient(sessionContext utl.SessionContext, connector vapiProtocolClient_.Connector) *BareMetalServerInterfaceGroupAssociationsClientContext {
18+
var client interface{}
19+
20+
switch sessionContext.ClientType {
21+
22+
case utl.Local:
23+
client = client0.NewBmsiGroupAssociationsClient(connector)
24+
25+
default:
26+
return nil
27+
}
28+
return &BareMetalServerInterfaceGroupAssociationsClientContext{Client: client, ClientType: sessionContext.ClientType, ProjectID: sessionContext.ProjectID, VPCID: sessionContext.VPCID}
29+
}
30+
31+
func (c BareMetalServerInterfaceGroupAssociationsClientContext) List(bmsiExternalIdParam string, cursorParam *string, enforcementPointPathParam *string, includeMarkForDeleteObjectsParam *bool, includedFieldsParam *string, pageSizeParam *int64, sortAscendingParam *bool, sortByParam *string) (model0.PolicyResourceReferenceForEPListResult, error) {
32+
var obj model0.PolicyResourceReferenceForEPListResult
33+
var err error
34+
35+
switch c.ClientType {
36+
37+
case utl.Local:
38+
client := c.Client.(client0.BmsiGroupAssociationsClient)
39+
obj, err = client.List(bmsiExternalIdParam, cursorParam, enforcementPointPathParam, includeMarkForDeleteObjectsParam, includedFieldsParam, pageSizeParam, sortAscendingParam, sortByParam)
40+
41+
default:
42+
err = errors.New("invalid infrastructure for model")
43+
}
44+
return obj, err
45+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
//nolint:revive
2+
package infra
3+
4+
// The following file has been autogenerated. Please avoid any changes!
5+
import (
6+
"errors"
7+
8+
vapiProtocolClient_ "github.com/vmware/vsphere-automation-sdk-go/runtime/protocol/client"
9+
client0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/infra/baremetal_server_interfaces"
10+
model0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/model"
11+
12+
utl "github.com/vmware/terraform-provider-nsxt/api/utl"
13+
)
14+
15+
type BareMetalServerInterfaceTagsClientContext utl.ClientContext
16+
17+
func NewBareMetalServerInterfaceTagsClient(sessionContext utl.SessionContext, connector vapiProtocolClient_.Connector) *BareMetalServerInterfaceTagsClientContext {
18+
var client interface{}
19+
20+
switch sessionContext.ClientType {
21+
22+
case utl.Local:
23+
client = client0.NewTagsClient(connector)
24+
25+
default:
26+
return nil
27+
}
28+
return &BareMetalServerInterfaceTagsClientContext{Client: client, ClientType: sessionContext.ClientType, ProjectID: sessionContext.ProjectID, VPCID: sessionContext.VPCID}
29+
}
30+
31+
func (c BareMetalServerInterfaceTagsClientContext) Create(bareMetalServerInterfaceTagListParam model0.BareMetalServerInterfaceTagList) (model0.BareMetalServerInterfaceTagList, error) {
32+
var err error
33+
var obj model0.BareMetalServerInterfaceTagList
34+
35+
switch c.ClientType {
36+
37+
case utl.Local:
38+
client := c.Client.(client0.TagsClient)
39+
obj, err = client.Create(bareMetalServerInterfaceTagListParam)
40+
41+
default:
42+
err = errors.New("invalid infrastructure for model")
43+
}
44+
return obj, err
45+
}

api/infra/baremetal_server_tags.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
//nolint:revive
2+
package infra
3+
4+
// The following file has been autogenerated. Please avoid any changes!
5+
import (
6+
"errors"
7+
8+
vapiProtocolClient_ "github.com/vmware/vsphere-automation-sdk-go/runtime/protocol/client"
9+
client0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/infra/baremetal_servers"
10+
model0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/model"
11+
12+
utl "github.com/vmware/terraform-provider-nsxt/api/utl"
13+
)
14+
15+
type BareMetalServerTagsClientContext utl.ClientContext
16+
17+
func NewBareMetalServerTagsClient(sessionContext utl.SessionContext, connector vapiProtocolClient_.Connector) *BareMetalServerTagsClientContext {
18+
var client interface{}
19+
20+
switch sessionContext.ClientType {
21+
22+
case utl.Local:
23+
client = client0.NewTagsClient(connector)
24+
25+
default:
26+
return nil
27+
}
28+
return &BareMetalServerTagsClientContext{Client: client, ClientType: sessionContext.ClientType, ProjectID: sessionContext.ProjectID, VPCID: sessionContext.VPCID}
29+
}
30+
31+
func (c BareMetalServerTagsClientContext) Create(bareMetalServerTagListParam model0.BareMetalServerTagList) (model0.BareMetalServerTagList, error) {
32+
var err error
33+
var obj model0.BareMetalServerTagList
34+
35+
switch c.ClientType {
36+
37+
case utl.Local:
38+
client := c.Client.(client0.TagsClient)
39+
obj, err = client.Create(bareMetalServerTagListParam)
40+
41+
default:
42+
err = errors.New("invalid infrastructure for model")
43+
}
44+
return obj, err
45+
}
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
//nolint:revive
2+
package infra
3+
4+
// The following file has been autogenerated. Please avoid any changes!
5+
import (
6+
"errors"
7+
8+
vapiProtocolClient_ "github.com/vmware/vsphere-automation-sdk-go/runtime/protocol/client"
9+
client0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/infra"
10+
model0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/model"
11+
12+
utl "github.com/vmware/terraform-provider-nsxt/api/utl"
13+
)
14+
15+
type DistributedVxlanConnectionClientContext utl.ClientContext
16+
17+
func NewDistributedVxlanConnectionsClient(sessionContext utl.SessionContext, connector vapiProtocolClient_.Connector) *DistributedVxlanConnectionClientContext {
18+
var client interface{}
19+
20+
switch sessionContext.ClientType {
21+
22+
case utl.Local:
23+
client = client0.NewDistributedVxlanConnectionsClient(connector)
24+
25+
default:
26+
return nil
27+
}
28+
return &DistributedVxlanConnectionClientContext{Client: client, ClientType: sessionContext.ClientType, ProjectID: sessionContext.ProjectID, VPCID: sessionContext.VPCID}
29+
}
30+
31+
func (c DistributedVxlanConnectionClientContext) Delete(distributedVxlanConnectionIdParam string) error {
32+
var err error
33+
34+
switch c.ClientType {
35+
36+
case utl.Local:
37+
client := c.Client.(client0.DistributedVxlanConnectionsClient)
38+
err = client.Delete(distributedVxlanConnectionIdParam)
39+
40+
default:
41+
err = errors.New("invalid infrastructure for model")
42+
}
43+
return err
44+
}
45+
46+
func (c DistributedVxlanConnectionClientContext) Get(distributedVxlanConnectionIdParam string) (model0.DistributedVxlanConnection, error) {
47+
var obj model0.DistributedVxlanConnection
48+
var err error
49+
50+
switch c.ClientType {
51+
52+
case utl.Local:
53+
client := c.Client.(client0.DistributedVxlanConnectionsClient)
54+
obj, err = client.Get(distributedVxlanConnectionIdParam)
55+
if err != nil {
56+
return obj, err
57+
}
58+
59+
default:
60+
return obj, errors.New("invalid infrastructure for model")
61+
}
62+
return obj, err
63+
}
64+
65+
func (c DistributedVxlanConnectionClientContext) List(cursorParam *string, includeMarkForDeleteObjectsParam *bool, includedFieldsParam *string, pageSizeParam *int64, sortAscendingParam *bool, sortByParam *string) (model0.DistributedVxlanConnectionListResult, error) {
66+
var err error
67+
var obj model0.DistributedVxlanConnectionListResult
68+
69+
switch c.ClientType {
70+
71+
case utl.Local:
72+
client := c.Client.(client0.DistributedVxlanConnectionsClient)
73+
obj, err = client.List(cursorParam, includeMarkForDeleteObjectsParam, includedFieldsParam, pageSizeParam, sortAscendingParam, sortByParam)
74+
75+
default:
76+
err = errors.New("invalid infrastructure for model")
77+
}
78+
return obj, err
79+
}
80+
81+
func (c DistributedVxlanConnectionClientContext) Patch(distributedVxlanConnectionIdParam string, distributedVxlanConnectionParam model0.DistributedVxlanConnection) error {
82+
var err error
83+
84+
switch c.ClientType {
85+
86+
case utl.Local:
87+
client := c.Client.(client0.DistributedVxlanConnectionsClient)
88+
err = client.Patch(distributedVxlanConnectionIdParam, distributedVxlanConnectionParam)
89+
90+
default:
91+
err = errors.New("invalid infrastructure for model")
92+
}
93+
return err
94+
}
95+
96+
func (c DistributedVxlanConnectionClientContext) Update(distributedVxlanConnectionIdParam string, distributedVxlanConnectionParam model0.DistributedVxlanConnection) (model0.DistributedVxlanConnection, error) {
97+
var err error
98+
var obj model0.DistributedVxlanConnection
99+
100+
switch c.ClientType {
101+
102+
case utl.Local:
103+
client := c.Client.(client0.DistributedVxlanConnectionsClient)
104+
obj, err = client.Update(distributedVxlanConnectionIdParam, distributedVxlanConnectionParam)
105+
106+
default:
107+
err = errors.New("invalid infrastructure for model")
108+
}
109+
return obj, err
110+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
//nolint:revive
2+
package groups
3+
4+
import (
5+
"errors"
6+
7+
vapiProtocolClient_ "github.com/vmware/vsphere-automation-sdk-go/runtime/protocol/client"
8+
client0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/infra/domains/groups/members"
9+
model0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/model"
10+
11+
utl "github.com/vmware/terraform-provider-nsxt/api/utl"
12+
)
13+
14+
type BmsiMembersClientContext utl.ClientContext
15+
16+
func NewBmsiMembersClient(sessionContext utl.SessionContext, connector vapiProtocolClient_.Connector) *BmsiMembersClientContext {
17+
var client interface{}
18+
19+
switch sessionContext.ClientType {
20+
21+
case utl.Local:
22+
client = client0.NewBmsiClient(connector)
23+
24+
default:
25+
return nil
26+
}
27+
return &BmsiMembersClientContext{Client: client, ClientType: sessionContext.ClientType, ProjectID: sessionContext.ProjectID, VPCID: sessionContext.VPCID}
28+
}
29+
30+
func (c BmsiMembersClientContext) List(domainIdParam string, groupIdParam string, cursorParam *string, enforcementPointPathParam *string, includeMarkForDeleteObjectsParam *bool, includedFieldsParam *string, pageSizeParam *int64, sortAscendingParam *bool, sortByParam *string) (model0.BareMetalServerInterfaceListResult, error) {
31+
var obj model0.BareMetalServerInterfaceListResult
32+
var err error
33+
34+
switch c.ClientType {
35+
36+
case utl.Local:
37+
client := c.Client.(client0.BmsiClient)
38+
obj, err = client.List(domainIdParam, groupIdParam, cursorParam, enforcementPointPathParam, includeMarkForDeleteObjectsParam, includedFieldsParam, pageSizeParam, sortAscendingParam, sortByParam)
39+
40+
default:
41+
err = errors.New("invalid infrastructure for model")
42+
}
43+
return obj, err
44+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
//nolint:revive
2+
package groups
3+
4+
import (
5+
"errors"
6+
7+
vapiProtocolClient_ "github.com/vmware/vsphere-automation-sdk-go/runtime/protocol/client"
8+
client0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/infra/domains/groups/members"
9+
model0 "github.com/vmware/vsphere-automation-sdk-go/services/nsxt/model"
10+
11+
utl "github.com/vmware/terraform-provider-nsxt/api/utl"
12+
)
13+
14+
type BmsMembersClientContext utl.ClientContext
15+
16+
func NewBmsMembersClient(sessionContext utl.SessionContext, connector vapiProtocolClient_.Connector) *BmsMembersClientContext {
17+
var client interface{}
18+
19+
switch sessionContext.ClientType {
20+
21+
case utl.Local:
22+
client = client0.NewBmsClient(connector)
23+
24+
default:
25+
return nil
26+
}
27+
return &BmsMembersClientContext{Client: client, ClientType: sessionContext.ClientType, ProjectID: sessionContext.ProjectID, VPCID: sessionContext.VPCID}
28+
}
29+
30+
func (c BmsMembersClientContext) List(domainIdParam string, groupIdParam string, cursorParam *string, enforcementPointPathParam *string, includeMarkForDeleteObjectsParam *bool, includedFieldsParam *string, pageSizeParam *int64, sortAscendingParam *bool, sortByParam *string) (model0.BareMetalServerListResult, error) {
31+
var obj model0.BareMetalServerListResult
32+
var err error
33+
34+
switch c.ClientType {
35+
36+
case utl.Local:
37+
client := c.Client.(client0.BmsClient)
38+
obj, err = client.List(domainIdParam, groupIdParam, cursorParam, enforcementPointPathParam, includeMarkForDeleteObjectsParam, includedFieldsParam, pageSizeParam, sortAscendingParam, sortByParam)
39+
40+
default:
41+
err = errors.New("invalid infrastructure for model")
42+
}
43+
return obj, err
44+
}

0 commit comments

Comments
 (0)