Skip to content

Commit 5e76812

Browse files
committed
Implement ODS runbook report data source
Signed-off-by: Kobi Samoray <[email protected]>
1 parent 5ccfd16 commit 5e76812

4 files changed

+255
-71
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
/* Copyright © 2023 VMware, Inc. All Rights Reserved.
2+
SPDX-License-Identifier: MPL-2.0 */
3+
4+
package nsxt
5+
6+
import (
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
8+
"github.com/vmware/vsphere-automation-sdk-go/services/nsxt/infra/sha/runbook_invocations"
9+
)
10+
11+
func dataSourceNsxtPolicyODSRunbookInvocationReport() *schema.Resource {
12+
return &schema.Resource{
13+
Read: dataSourceNsxtPolicyODSPRunbookInvocationReportRead,
14+
15+
Schema: map[string]*schema.Schema{
16+
"invocation_id": {
17+
Type: schema.TypeString,
18+
Required: true,
19+
Description: "UUID of runbook invocation",
20+
},
21+
"target_node": {
22+
Type: schema.TypeString,
23+
Computed: true,
24+
Optional: true,
25+
Description: "Identifier of an appliance node or transport node",
26+
},
27+
"error_detail": {
28+
Type: schema.TypeString,
29+
Computed: true,
30+
Optional: true,
31+
Description: "The report error detail",
32+
},
33+
"invalid_reason": {
34+
Type: schema.TypeString,
35+
Computed: true,
36+
Optional: true,
37+
Description: "Invalid report reason",
38+
},
39+
"recommendation_code": {
40+
Type: schema.TypeInt,
41+
Computed: true,
42+
Optional: true,
43+
Description: "Online Diagnostic System recommendation code",
44+
},
45+
"recommendation_message": {
46+
Type: schema.TypeString,
47+
Computed: true,
48+
Optional: true,
49+
Description: "Online Diagnostic System recommendation message",
50+
},
51+
"result_code": {
52+
Type: schema.TypeInt,
53+
Computed: true,
54+
Optional: true,
55+
Description: "Online Diagnostic System result code",
56+
},
57+
"result_message": {
58+
Type: schema.TypeString,
59+
Computed: true,
60+
Optional: true,
61+
Description: "Online Diagnostic System result message",
62+
},
63+
"request_status": {
64+
Type: schema.TypeString,
65+
Computed: true,
66+
Optional: true,
67+
Description: "Request status of a runbook invocation",
68+
},
69+
"operation_state": {
70+
Type: schema.TypeString,
71+
Computed: true,
72+
Optional: true,
73+
Description: "Operation state of a runbook invocation on the target node",
74+
},
75+
},
76+
}
77+
}
78+
79+
func dataSourceNsxtPolicyODSPRunbookInvocationReportRead(d *schema.ResourceData, m interface{}) error {
80+
connector := getPolicyConnector(m)
81+
invocationID := d.Get("invocation_id").(string)
82+
client := runbook_invocations.NewReportClient(connector)
83+
84+
obj, err := client.Get(invocationID)
85+
if err != nil {
86+
return handleDataSourceReadError(d, "OdsRunbookInvocationReport", invocationID, err)
87+
}
88+
89+
d.SetId(invocationID)
90+
d.Set("target_node", obj.TargetNode)
91+
d.Set("error_detail", obj.ErrorDetail)
92+
d.Set("invalid_reason", obj.InvalidReason)
93+
d.Set("recommendation_code", obj.RecommendationCode)
94+
d.Set("recommendation_message", obj.RecommendationMessage)
95+
d.Set("result_code", obj.ResultCode)
96+
d.Set("result_message", obj.ResultMessage)
97+
if obj.Status != nil {
98+
d.Set("request_status", obj.Status.RequestStatus)
99+
d.Set("operation_state", obj.Status.OperationState)
100+
}
101+
102+
return nil
103+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/* Copyright © 2023 VMware, Inc. All Rights Reserved.
2+
SPDX-License-Identifier: MPL-2.0 */
3+
4+
package nsxt
5+
6+
import (
7+
"fmt"
8+
"testing"
9+
10+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
11+
)
12+
13+
func TestAccResourceNsxtPolicyODSRunbookInvocationReport_basic(t *testing.T) {
14+
name := getAccTestResourceName()
15+
testResourceName := "data.nsxt_policy_ods_runbook_invocation_report.test"
16+
17+
resource.ParallelTest(t, resource.TestCase{
18+
PreCheck: func() {
19+
testAccOnlyLocalManager(t)
20+
testAccPreCheck(t)
21+
testAccNSXVersion(t, "4.1.1")
22+
testAccEnvDefined(t, "NSXT_TEST_HOST_TRANSPORT_NODE")
23+
},
24+
Providers: testAccProviders,
25+
Steps: []resource.TestStep{
26+
{
27+
Config: testAccNsxtPolicyODSRunbookInvocationReportReadTemplate(name),
28+
Check: resource.ComposeTestCheckFunc(
29+
resource.TestCheckResourceAttrSet(testResourceName, "target_node"),
30+
resource.TestCheckResourceAttrSet(testResourceName, "request_status"),
31+
resource.TestCheckResourceAttrSet(testResourceName, "operation_state"),
32+
),
33+
},
34+
},
35+
})
36+
}
37+
38+
func testAccNsxtPolicyODSRunbookInvocationReportReadTemplate(name string) string {
39+
return testAccNsxtPolicyODSRunbookInvocationCreateTemplate(name, "ControllerConn", "") + fmt.Sprintf(`
40+
data "nsxt_policy_ods_runbook_invocation_report" "test" {
41+
invocation_id = nsxt_policy_ods_runbook_invocation.test.id
42+
}`)
43+
}

Diff for: nsxt/provider.go

+72-71
Original file line numberDiff line numberDiff line change
@@ -225,77 +225,78 @@ func Provider() *schema.Provider {
225225
},
226226

227227
DataSourcesMap: map[string]*schema.Resource{
228-
"nsxt_provider_info": dataSourceNsxtProviderInfo(),
229-
"nsxt_transport_zone": dataSourceNsxtTransportZone(),
230-
"nsxt_switching_profile": dataSourceNsxtSwitchingProfile(),
231-
"nsxt_logical_tier0_router": dataSourceNsxtLogicalTier0Router(),
232-
"nsxt_logical_tier1_router": dataSourceNsxtLogicalTier1Router(),
233-
"nsxt_mac_pool": dataSourceNsxtMacPool(),
234-
"nsxt_ns_group": dataSourceNsxtNsGroup(),
235-
"nsxt_ns_groups": dataSourceNsxtNsGroups(),
236-
"nsxt_ns_service": dataSourceNsxtNsService(),
237-
"nsxt_ns_services": dataSourceNsxtNsServices(),
238-
"nsxt_edge_cluster": dataSourceNsxtEdgeCluster(),
239-
"nsxt_certificate": dataSourceNsxtCertificate(),
240-
"nsxt_ip_pool": dataSourceNsxtIPPool(),
241-
"nsxt_firewall_section": dataSourceNsxtFirewallSection(),
242-
"nsxt_management_cluster": dataSourceNsxtManagementCluster(),
243-
"nsxt_policy_edge_cluster": dataSourceNsxtPolicyEdgeCluster(),
244-
"nsxt_policy_edge_node": dataSourceNsxtPolicyEdgeNode(),
245-
"nsxt_policy_tier0_gateway": dataSourceNsxtPolicyTier0Gateway(),
246-
"nsxt_policy_tier1_gateway": dataSourceNsxtPolicyTier1Gateway(),
247-
"nsxt_policy_service": dataSourceNsxtPolicyService(),
248-
"nsxt_policy_realization_info": dataSourceNsxtPolicyRealizationInfo(),
249-
"nsxt_policy_segment_realization": dataSourceNsxtPolicySegmentRealization(),
250-
"nsxt_policy_transport_zone": dataSourceNsxtPolicyTransportZone(),
251-
"nsxt_policy_ip_discovery_profile": dataSourceNsxtPolicyIPDiscoveryProfile(),
252-
"nsxt_policy_spoofguard_profile": dataSourceNsxtPolicySpoofGuardProfile(),
253-
"nsxt_policy_qos_profile": dataSourceNsxtPolicyQosProfile(),
254-
"nsxt_policy_ipv6_ndra_profile": dataSourceNsxtPolicyIpv6NdraProfile(),
255-
"nsxt_policy_ipv6_dad_profile": dataSourceNsxtPolicyIpv6DadProfile(),
256-
"nsxt_policy_gateway_qos_profile": dataSourceNsxtPolicyGatewayQosProfile(),
257-
"nsxt_policy_segment_security_profile": dataSourceNsxtPolicySegmentSecurityProfile(),
258-
"nsxt_policy_mac_discovery_profile": dataSourceNsxtPolicyMacDiscoveryProfile(),
259-
"nsxt_policy_vm": dataSourceNsxtPolicyVM(),
260-
"nsxt_policy_vms": dataSourceNsxtPolicyVMs(),
261-
"nsxt_policy_lb_app_profile": dataSourceNsxtPolicyLBAppProfile(),
262-
"nsxt_policy_lb_client_ssl_profile": dataSourceNsxtPolicyLBClientSslProfile(),
263-
"nsxt_policy_lb_server_ssl_profile": dataSourceNsxtPolicyLBServerSslProfile(),
264-
"nsxt_policy_lb_monitor": dataSourceNsxtPolicyLBMonitor(),
265-
"nsxt_policy_certificate": dataSourceNsxtPolicyCertificate(),
266-
"nsxt_policy_lb_persistence_profile": dataSourceNsxtPolicyLbPersistenceProfile(),
267-
"nsxt_policy_vni_pool": dataSourceNsxtPolicyVniPool(),
268-
"nsxt_policy_ip_block": dataSourceNsxtPolicyIPBlock(),
269-
"nsxt_policy_ip_pool": dataSourceNsxtPolicyIPPool(),
270-
"nsxt_policy_site": dataSourceNsxtPolicySite(),
271-
"nsxt_policy_gateway_policy": dataSourceNsxtPolicyGatewayPolicy(),
272-
"nsxt_policy_security_policy": dataSourceNsxtPolicySecurityPolicy(),
273-
"nsxt_policy_group": dataSourceNsxtPolicyGroup(),
274-
"nsxt_policy_context_profile": dataSourceNsxtPolicyContextProfile(),
275-
"nsxt_policy_dhcp_server": dataSourceNsxtPolicyDhcpServer(),
276-
"nsxt_policy_bfd_profile": dataSourceNsxtPolicyBfdProfile(),
277-
"nsxt_policy_intrusion_service_profile": dataSourceNsxtPolicyIntrusionServiceProfile(),
278-
"nsxt_policy_lb_service": dataSourceNsxtPolicyLbService(),
279-
"nsxt_policy_gateway_locale_service": dataSourceNsxtPolicyGatewayLocaleService(),
280-
"nsxt_policy_bridge_profile": dataSourceNsxtPolicyBridgeProfile(),
281-
"nsxt_policy_ipsec_vpn_local_endpoint": dataSourceNsxtPolicyIPSecVpnLocalEndpoint(),
282-
"nsxt_policy_ipsec_vpn_service": dataSourceNsxtPolicyIPSecVpnService(),
283-
"nsxt_policy_l2_vpn_service": dataSourceNsxtPolicyL2VpnService(),
284-
"nsxt_policy_segment": dataSourceNsxtPolicySegment(),
285-
"nsxt_policy_project": dataSourceNsxtPolicyProject(),
286-
"nsxt_policy_gateway_prefix_list": dataSourceNsxtPolicyGatewayPrefixList(),
287-
"nsxt_policy_gateway_route_map": dataSourceNsxtPolicyGatewayRouteMap(),
288-
"nsxt_policy_uplink_host_switch_profile": dataSourceNsxtUplinkHostSwitchProfile(),
289-
"nsxt_compute_manager": dataSourceNsxtComputeManager(),
290-
"nsxt_transport_node_realization": dataSourceNsxtTransportNodeRealization(),
291-
"nsxt_failure_domain": dataSourceNsxtFailureDomain(),
292-
"nsxt_compute_collection": dataSourceNsxtComputeCollection(),
293-
"nsxt_compute_manager_realization": dataSourceNsxtComputeManagerRealization(),
294-
"nsxt_policy_host_transport_node": dataSourceNsxtPolicyHostTransportNode(),
295-
"nsxt_manager_cluster_node": dataSourceNsxtManagerClusterNode(),
296-
"nsxt_policy_host_transport_node_profile": dataSourceNsxtPolicyHostTransportNodeProfile(),
297-
"nsxt_transport_node": dataSourceNsxtEdgeTransportNode(),
298-
"nsxt_policy_ods_pre_defined_runbook": dataSourceNsxtPolicyODSPreDefinedRunbook(),
228+
"nsxt_provider_info": dataSourceNsxtProviderInfo(),
229+
"nsxt_transport_zone": dataSourceNsxtTransportZone(),
230+
"nsxt_switching_profile": dataSourceNsxtSwitchingProfile(),
231+
"nsxt_logical_tier0_router": dataSourceNsxtLogicalTier0Router(),
232+
"nsxt_logical_tier1_router": dataSourceNsxtLogicalTier1Router(),
233+
"nsxt_mac_pool": dataSourceNsxtMacPool(),
234+
"nsxt_ns_group": dataSourceNsxtNsGroup(),
235+
"nsxt_ns_groups": dataSourceNsxtNsGroups(),
236+
"nsxt_ns_service": dataSourceNsxtNsService(),
237+
"nsxt_ns_services": dataSourceNsxtNsServices(),
238+
"nsxt_edge_cluster": dataSourceNsxtEdgeCluster(),
239+
"nsxt_certificate": dataSourceNsxtCertificate(),
240+
"nsxt_ip_pool": dataSourceNsxtIPPool(),
241+
"nsxt_firewall_section": dataSourceNsxtFirewallSection(),
242+
"nsxt_management_cluster": dataSourceNsxtManagementCluster(),
243+
"nsxt_policy_edge_cluster": dataSourceNsxtPolicyEdgeCluster(),
244+
"nsxt_policy_edge_node": dataSourceNsxtPolicyEdgeNode(),
245+
"nsxt_policy_tier0_gateway": dataSourceNsxtPolicyTier0Gateway(),
246+
"nsxt_policy_tier1_gateway": dataSourceNsxtPolicyTier1Gateway(),
247+
"nsxt_policy_service": dataSourceNsxtPolicyService(),
248+
"nsxt_policy_realization_info": dataSourceNsxtPolicyRealizationInfo(),
249+
"nsxt_policy_segment_realization": dataSourceNsxtPolicySegmentRealization(),
250+
"nsxt_policy_transport_zone": dataSourceNsxtPolicyTransportZone(),
251+
"nsxt_policy_ip_discovery_profile": dataSourceNsxtPolicyIPDiscoveryProfile(),
252+
"nsxt_policy_spoofguard_profile": dataSourceNsxtPolicySpoofGuardProfile(),
253+
"nsxt_policy_qos_profile": dataSourceNsxtPolicyQosProfile(),
254+
"nsxt_policy_ipv6_ndra_profile": dataSourceNsxtPolicyIpv6NdraProfile(),
255+
"nsxt_policy_ipv6_dad_profile": dataSourceNsxtPolicyIpv6DadProfile(),
256+
"nsxt_policy_gateway_qos_profile": dataSourceNsxtPolicyGatewayQosProfile(),
257+
"nsxt_policy_segment_security_profile": dataSourceNsxtPolicySegmentSecurityProfile(),
258+
"nsxt_policy_mac_discovery_profile": dataSourceNsxtPolicyMacDiscoveryProfile(),
259+
"nsxt_policy_vm": dataSourceNsxtPolicyVM(),
260+
"nsxt_policy_vms": dataSourceNsxtPolicyVMs(),
261+
"nsxt_policy_lb_app_profile": dataSourceNsxtPolicyLBAppProfile(),
262+
"nsxt_policy_lb_client_ssl_profile": dataSourceNsxtPolicyLBClientSslProfile(),
263+
"nsxt_policy_lb_server_ssl_profile": dataSourceNsxtPolicyLBServerSslProfile(),
264+
"nsxt_policy_lb_monitor": dataSourceNsxtPolicyLBMonitor(),
265+
"nsxt_policy_certificate": dataSourceNsxtPolicyCertificate(),
266+
"nsxt_policy_lb_persistence_profile": dataSourceNsxtPolicyLbPersistenceProfile(),
267+
"nsxt_policy_vni_pool": dataSourceNsxtPolicyVniPool(),
268+
"nsxt_policy_ip_block": dataSourceNsxtPolicyIPBlock(),
269+
"nsxt_policy_ip_pool": dataSourceNsxtPolicyIPPool(),
270+
"nsxt_policy_site": dataSourceNsxtPolicySite(),
271+
"nsxt_policy_gateway_policy": dataSourceNsxtPolicyGatewayPolicy(),
272+
"nsxt_policy_security_policy": dataSourceNsxtPolicySecurityPolicy(),
273+
"nsxt_policy_group": dataSourceNsxtPolicyGroup(),
274+
"nsxt_policy_context_profile": dataSourceNsxtPolicyContextProfile(),
275+
"nsxt_policy_dhcp_server": dataSourceNsxtPolicyDhcpServer(),
276+
"nsxt_policy_bfd_profile": dataSourceNsxtPolicyBfdProfile(),
277+
"nsxt_policy_intrusion_service_profile": dataSourceNsxtPolicyIntrusionServiceProfile(),
278+
"nsxt_policy_lb_service": dataSourceNsxtPolicyLbService(),
279+
"nsxt_policy_gateway_locale_service": dataSourceNsxtPolicyGatewayLocaleService(),
280+
"nsxt_policy_bridge_profile": dataSourceNsxtPolicyBridgeProfile(),
281+
"nsxt_policy_ipsec_vpn_local_endpoint": dataSourceNsxtPolicyIPSecVpnLocalEndpoint(),
282+
"nsxt_policy_ipsec_vpn_service": dataSourceNsxtPolicyIPSecVpnService(),
283+
"nsxt_policy_l2_vpn_service": dataSourceNsxtPolicyL2VpnService(),
284+
"nsxt_policy_segment": dataSourceNsxtPolicySegment(),
285+
"nsxt_policy_project": dataSourceNsxtPolicyProject(),
286+
"nsxt_policy_gateway_prefix_list": dataSourceNsxtPolicyGatewayPrefixList(),
287+
"nsxt_policy_gateway_route_map": dataSourceNsxtPolicyGatewayRouteMap(),
288+
"nsxt_policy_uplink_host_switch_profile": dataSourceNsxtUplinkHostSwitchProfile(),
289+
"nsxt_compute_manager": dataSourceNsxtComputeManager(),
290+
"nsxt_transport_node_realization": dataSourceNsxtTransportNodeRealization(),
291+
"nsxt_failure_domain": dataSourceNsxtFailureDomain(),
292+
"nsxt_compute_collection": dataSourceNsxtComputeCollection(),
293+
"nsxt_compute_manager_realization": dataSourceNsxtComputeManagerRealization(),
294+
"nsxt_policy_host_transport_node": dataSourceNsxtPolicyHostTransportNode(),
295+
"nsxt_manager_cluster_node": dataSourceNsxtManagerClusterNode(),
296+
"nsxt_policy_host_transport_node_profile": dataSourceNsxtPolicyHostTransportNodeProfile(),
297+
"nsxt_transport_node": dataSourceNsxtEdgeTransportNode(),
298+
"nsxt_policy_ods_pre_defined_runbook": dataSourceNsxtPolicyODSPreDefinedRunbook(),
299+
"nsxt_policy_ods_runbook_invocation_report": dataSourceNsxtPolicyODSRunbookInvocationReport(),
299300
},
300301

301302
ResourcesMap: map[string]*schema.Resource{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
subcategory: "ODS Runbook"
3+
layout: "nsxt"
4+
page_title: "NSXT: nsxt_policy_ods_runbook_invocation_report"
5+
description: Policy ODS runbook invocation report data source.
6+
---
7+
8+
# nsxt_policy_ods_runbook_invocation_report
9+
10+
This data source provides information about policy ODS runbook invocation report on NSX.
11+
This data source is applicable to NSX Policy Manager.
12+
13+
## Example Usage
14+
15+
```hcl
16+
data "nsxt_policy_ods_runbook_invocation_report" "test" {
17+
invocation_id = nsxt_policy_ods_runbook_invocation.test.id
18+
}
19+
```
20+
21+
## Argument Reference
22+
23+
* `invocation_id` - (Required) UUID of runbook invocation.
24+
25+
## Attributes Reference
26+
27+
In addition to arguments listed above, the following attributes are exported:
28+
29+
* `target_node` - Identifier of an appliance node or transport node.
30+
* `error_detail` - The report error detail.
31+
* `invalid_reason` - Invalid report reason.
32+
* `recommendation_code` - Online Diagnostic System recommendation code.
33+
* `recommendation_message` - Online Diagnostic System recommendation message.
34+
* `result_code` - Online Diagnostic System result code.
35+
* `result_message` - Online Diagnostic System result message.
36+
* `request_status` - Request status of a runbook invocation.
37+
* `operation_state` - Operation state of a runbook invocation on the target node.

0 commit comments

Comments
 (0)