Skip to content

Commit b42de3b

Browse files
Terraform Team Automationravinitp
authored andcommitted
Added - Support for Management Agent API changes
1 parent 60076e1 commit b42de3b

12 files changed

+215
-3
lines changed

examples/management_agent/management_agent_agents_count.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,3 @@ data "oci_management_agent_management_agent_count" "test_management_agent_count"
66
compartment_id = var.compartment_ocid
77
group_by = ["version"]
88
}
9-

internal/integrationtest/management_agent_management_agent_image_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ func TestManagementAgentManagementAgentImageResource_basic(t *testing.T) {
4949
resource.TestCheckResourceAttrSet(datasourceName, "management_agent_images.#"),
5050
resource.TestCheckResourceAttrSet(datasourceName, "management_agent_images.0.checksum"),
5151
resource.TestCheckResourceAttrSet(datasourceName, "management_agent_images.0.id"),
52+
resource.TestCheckResourceAttr(datasourceName, "management_agent_images.0.image_object_storage_details.#", "1"),
5253
resource.TestCheckResourceAttrSet(datasourceName, "management_agent_images.0.object_url"),
5354
resource.TestCheckResourceAttrSet(datasourceName, "management_agent_images.0.package_architecture_type"),
5455
resource.TestCheckResourceAttrSet(datasourceName, "management_agent_images.0.package_type"),

internal/integrationtest/management_agent_management_agent_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ func TestManagementAgentManagementAgentResource_dataInSubcompartment(t *testing.
6666
managementAgentDataSourceRepresentationInSubtree := map[string]interface{}{
6767
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: rootCompartmentId},
6868
"access_level": acctest.Representation{RepType: acctest.Optional, Create: `ACCESSIBLE`},
69+
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `terraformTest`},
6970
"compartment_id_in_subtree": acctest.Representation{RepType: acctest.Optional, Create: `true`}}
7071
datasourceName := "data.oci_management_agent_management_agents.test_management_agents"
7172

@@ -99,6 +100,57 @@ func TestManagementAgentManagementAgentResource_dataInSubcompartment(t *testing.
99100
},
100101
})
101102
}
103+
func TestManagementAgentManagementAgentResource_gatewayId(t *testing.T) {
104+
// This test searches for a specific agent (terraformGWTest) which is known to have a gatewayId set
105+
// and validates the management_agent_properties are set for that agent
106+
httpreplay.SetScenario("TestManagementAgentManagementAgentResource_gatewayId")
107+
defer httpreplay.SaveScenario()
108+
109+
config := acctest.ProviderTestConfig()
110+
111+
rootCompartmentId := utils.GetEnvSettingWithBlankDefault("root_compartment_ocid")
112+
if rootCompartmentId == "" {
113+
rootCompartmentId = utils.GetEnvSettingWithBlankDefault("tenancy_ocid")
114+
}
115+
rootCompartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", rootCompartmentId)
116+
managementAgentDataSourceRepresentationWithGW := map[string]interface{}{
117+
"compartment_id": acctest.Representation{RepType: acctest.Required, Create: rootCompartmentId},
118+
"access_level": acctest.Representation{RepType: acctest.Optional, Create: `ACCESSIBLE`},
119+
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `terraformGWTest`},
120+
"compartment_id_in_subtree": acctest.Representation{RepType: acctest.Optional, Create: `true`}}
121+
datasourceName := "data.oci_management_agent_management_agents.test_management_agents"
122+
123+
acctest.ResourceTest(t, nil, []resource.TestStep{
124+
// verify datasource with compartment_id_in_subtree
125+
{
126+
Config: config +
127+
acctest.GenerateDataSourceFromRepresentationMap("oci_management_agent_management_agents", "test_management_agents", acctest.Optional, acctest.Update, managementAgentDataSourceRepresentationWithGW) +
128+
rootCompartmentIdVariableStr,
129+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
130+
resource.TestCheckResourceAttr(datasourceName, "compartment_id", rootCompartmentId),
131+
132+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.availability_status"),
133+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.compartment_id"),
134+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.display_name"),
135+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.host"),
136+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.id"),
137+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.install_key_id"),
138+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.install_type"),
139+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.is_customer_deployed"),
140+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.is_agent_auto_upgradable"),
141+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.platform_name"),
142+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.platform_type"),
143+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.platform_version"),
144+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.state"),
145+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.time_created"),
146+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.time_last_heartbeat"),
147+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.version"),
148+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.time_updated"),
149+
resource.TestCheckResourceAttrSet(datasourceName, "management_agents.0.management_agent_properties.#"),
150+
),
151+
},
152+
})
153+
}
102154

103155
// issue-routing-tag: management_agent/default
104156
func TestManagementAgentManagementAgentResource_basic(t *testing.T) {

internal/service/management_agent/management_agent_management_agent_data_source.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,12 @@ func (s *ManagementAgentManagementAgentDataSourceCrud) SetData() error {
112112
s.D.Set("lifecycle_details", *s.Res.LifecycleDetails)
113113
}
114114

115+
managementAgentProperties := []interface{}{}
116+
for _, item := range s.Res.ManagementAgentProperties {
117+
managementAgentProperties = append(managementAgentProperties, ManagementAgentPropertyToMap(item))
118+
}
119+
s.D.Set("management_agent_properties", managementAgentProperties)
120+
115121
if s.Res.PlatformName != nil {
116122
s.D.Set("platform_name", *s.Res.PlatformName)
117123
}

internal/service/management_agent/management_agent_management_agent_images_data_source.go

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,39 @@ func ManagementAgentManagementAgentImagesDataSource() *schema.Resource {
5252
Type: schema.TypeString,
5353
Computed: true,
5454
},
55+
"image_object_storage_details": {
56+
Type: schema.TypeList,
57+
Computed: true,
58+
Elem: &schema.Resource{
59+
Schema: map[string]*schema.Schema{
60+
// Required
61+
62+
// Optional
63+
64+
// Computed
65+
"checksum": {
66+
Type: schema.TypeString,
67+
Computed: true,
68+
},
69+
"object": {
70+
Type: schema.TypeString,
71+
Computed: true,
72+
},
73+
"object_bucket": {
74+
Type: schema.TypeString,
75+
Computed: true,
76+
},
77+
"object_namespace": {
78+
Type: schema.TypeString,
79+
Computed: true,
80+
},
81+
"object_url": {
82+
Type: schema.TypeString,
83+
Computed: true,
84+
},
85+
},
86+
},
87+
},
5588
"object_url": {
5689
Type: schema.TypeString,
5790
Computed: true,
@@ -172,6 +205,12 @@ func (s *ManagementAgentManagementAgentImagesDataSourceCrud) SetData() error {
172205
managementAgentImage["id"] = *r.Id
173206
}
174207

208+
if r.ImageObjectStorageDetails != nil {
209+
managementAgentImage["image_object_storage_details"] = []interface{}{ObjectDetailsToMap(r.ImageObjectStorageDetails)}
210+
} else {
211+
managementAgentImage["image_object_storage_details"] = nil
212+
}
213+
175214
if r.ObjectUrl != nil {
176215
managementAgentImage["object_url"] = *r.ObjectUrl
177216
}
@@ -209,3 +248,29 @@ func (s *ManagementAgentManagementAgentImagesDataSourceCrud) SetData() error {
209248

210249
return nil
211250
}
251+
252+
func ObjectDetailsToMap(obj *oci_management_agent.ObjectDetails) map[string]interface{} {
253+
result := map[string]interface{}{}
254+
255+
if obj.Checksum != nil {
256+
result["checksum"] = string(*obj.Checksum)
257+
}
258+
259+
if obj.ObjectName != nil {
260+
result["object"] = string(*obj.ObjectName)
261+
}
262+
263+
if obj.ObjectBucket != nil {
264+
result["object_bucket"] = string(*obj.ObjectBucket)
265+
}
266+
267+
if obj.ObjectNamespace != nil {
268+
result["object_namespace"] = string(*obj.ObjectNamespace)
269+
}
270+
271+
if obj.ObjectUrl != nil {
272+
result["object_url"] = string(*obj.ObjectUrl)
273+
}
274+
275+
return result
276+
}

internal/service/management_agent/management_agent_management_agent_resource.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,34 @@ func ManagementAgentManagementAgentResource() *schema.Resource {
106106
Type: schema.TypeString,
107107
Computed: true,
108108
},
109+
"management_agent_properties": {
110+
Type: schema.TypeList,
111+
Computed: true,
112+
Elem: &schema.Resource{
113+
Schema: map[string]*schema.Schema{
114+
// Required
115+
116+
// Optional
117+
118+
// Computed
119+
"name": {
120+
Type: schema.TypeString,
121+
Computed: true,
122+
},
123+
"units": {
124+
Type: schema.TypeString,
125+
Computed: true,
126+
},
127+
"values": {
128+
Type: schema.TypeList,
129+
Computed: true,
130+
Elem: &schema.Schema{
131+
Type: schema.TypeString,
132+
},
133+
},
134+
},
135+
},
136+
},
109137
"platform_name": {
110138
Type: schema.TypeString,
111139
Computed: true,
@@ -523,6 +551,12 @@ func (s *ManagementAgentManagementAgentResourceCrud) SetData() error {
523551
s.D.Set("lifecycle_details", *s.Res.LifecycleDetails)
524552
}
525553

554+
managementAgentProperties := []interface{}{}
555+
for _, item := range s.Res.ManagementAgentProperties {
556+
managementAgentProperties = append(managementAgentProperties, ManagementAgentPropertyToMap(item))
557+
}
558+
s.D.Set("management_agent_properties", managementAgentProperties)
559+
526560
if s.Res.PlatformName != nil {
527561
s.D.Set("platform_name", *s.Res.PlatformName)
528562
}
@@ -596,6 +630,21 @@ func ManagementAgentPluginDetailsToMap(obj oci_management_agent.ManagementAgentP
596630
return result
597631
}
598632

633+
func ManagementAgentPropertyToMap(obj oci_management_agent.ManagementAgentProperty) map[string]interface{} {
634+
result := map[string]interface{}{}
635+
636+
if obj.Name != nil {
637+
result["name"] = string(*obj.Name)
638+
}
639+
640+
result["units"] = string(obj.Units)
641+
642+
result["values"] = obj.Values
643+
result["values"] = obj.Values
644+
645+
return result
646+
}
647+
599648
func (s *ManagementAgentManagementAgentResourceCrud) Create() error {
600649
e := s.Get()
601650
if e != nil {

internal/service/management_agent/management_agent_management_agents_data_source.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ func ManagementAgentManagementAgentsDataSource() *schema.Resource {
3838
Type: schema.TypeString,
3939
Optional: true,
4040
},
41+
"gateway_id": {
42+
Type: schema.TypeList,
43+
Optional: true,
44+
Elem: &schema.Schema{
45+
Type: schema.TypeString,
46+
},
47+
},
4148
"host_id": {
4249
Type: schema.TypeString,
4350
Optional: true,
@@ -129,6 +136,19 @@ func (s *ManagementAgentManagementAgentsDataSourceCrud) Get() error {
129136
request.DisplayName = &tmp
130137
}
131138

139+
if gatewayId, ok := s.D.GetOkExists("gateway_id"); ok {
140+
interfaces := gatewayId.([]interface{})
141+
tmp := make([]string, len(interfaces))
142+
for i := range interfaces {
143+
if interfaces[i] != nil {
144+
tmp[i] = interfaces[i].(string)
145+
}
146+
}
147+
if len(tmp) != 0 || s.D.HasChange("gateway_id") {
148+
request.GatewayId = tmp
149+
}
150+
}
151+
132152
if hostId, ok := s.D.GetOkExists("host_id"); ok {
133153
tmp := hostId.(string)
134154
request.HostId = &tmp

website/docs/d/management_agent_management_agent.html.markdown

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ The following attributes are exported:
4646
* `is_agent_auto_upgradable` - true if the agent can be upgraded automatically; false if it must be upgraded manually. This flag is derived from the tenancy level auto upgrade preference.
4747
* `is_customer_deployed` - true, if the agent image is manually downloaded and installed. false, if the agent is deployed as a plugin in Oracle Cloud Agent.
4848
* `lifecycle_details` - A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in Failed state.
49+
* `management_agent_properties` - Additional properties for this Management Agent
50+
* `name` - Name of the property
51+
* `units` - Unit for the property
52+
* `values` - Values of the property
4953
* `platform_name` - Platform Name
5054
* `platform_type` - Platform Type
5155
* `platform_version` - Platform Version

website/docs/d/management_agent_management_agent_available_histories.html.markdown

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ data "oci_management_agent_management_agent_available_histories" "test_managemen
3030
The following arguments are supported:
3131

3232
* `management_agent_id` - (Required) Unique Management Agent identifier
33-
* `time_availability_status_ended_greater_than` - (Optional) Filter to limit the availability history results to that of time after the input time including the boundary record. Defaulted to current date minus one year. The date and time to be given as described in [RFC 3339](https://tools.ietf.org/rfc/rfc3339), section 14.29.
34-
* `time_availability_status_started_less_than` - (Optional) Filter to limit the availability history results to that of time before the input time including the boundary record Defaulted to current date. The date and time to be given as described in [RFC 3339](https://tools.ietf.org/rfc/rfc3339), section 14.29.
33+
* `time_availability_status_ended_greater_than` - (Optional) Filter to limit the availability history results to that of time after the input time including the boundary record. Defaulted to current date minus one year. The date and time to be given as described in [RFC 3339](https://tools.ietf.org/rfc/rfc3339), section 5.6.
34+
* `time_availability_status_started_less_than` - (Optional) Filter to limit the availability history results to that of time before the input time including the boundary record Defaulted to current date. The date and time to be given as described in [RFC 3339](https://tools.ietf.org/rfc/rfc3339), section 5.6.
3535

3636

3737
## Attributes Reference

website/docs/d/management_agent_management_agent_images.html.markdown

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ The following attributes are exported:
4949

5050
* `checksum` - Agent image content SHA256 Hash
5151
* `id` - Agent image resource id
52+
* `image_object_storage_details` - Details of the Objectstorage object
53+
* `checksum` - Object content SHA256 Hash
54+
* `object` - Objectstorage object name reference providing the original location of this object
55+
* `object_bucket` - Objectstorage bucket reference providing the original location of this object
56+
* `object_namespace` - Objectstorage namespace reference providing the original location of this object
57+
* `object_url` - Object storage URL for download
5258
* `object_url` - Object storage URL for download
5359
* `package_architecture_type` - The installation package target architecture type
5460
* `package_type` - The installation package type

0 commit comments

Comments
 (0)