oci-go-sdk icon indicating copy to clipboard operation
oci-go-sdk copied to clipboard

The API `ListInstances`of `ComputeClient` does not return any value for the attribute `PlatformConfig`

Open ParthaI opened this issue 1 year ago • 10 comments

Dear Team,

We are currently utilizing the ListInstances API from the github.com/oracle/oci-go-sdk/v65/core Go Package to list instances in our environment. Our requirement includes retrieving PlatformConfig details provided by this API. However, we consistently receive a null value for the PlatformConfig attribute.

Could you kindly advise if there might be an error in our approach? Additionally, are there any alternative packages or APIs recommended for obtaining the PlatformConfig values for instances?

Thank you!

ParthaI avatar Jan 25 '24 06:01 ParthaI

Thanks for reporting this, @ParthaI . Its possible that service itself is returning the null for PlatformConfig. Can you try to use other client tool for eg. OCI CLI and see if you are getting the same response ? This would help us figure out if the issue is with the SDK while marshalling/unmarshalling the response or with the compute service.

jyotisaini avatar Jan 25 '24 19:01 jyotisaini

Thank you, @jyotisaini, for your prompt response. I attempted using the OCI CLI command oci compute instance list --compartment-id <compartment id>, but I noticed that the Platform config value is consistently returned as null.

      "lifecycle-state": "STOPPED",
      "metadata": {},
      "platform-config": null,
      "preemptible-instance-config": null,
      "region": "ap-mumbai-1",
      "shape": "VM.Standard.E4.Flex",

Are there any alternative packages or APIs recommended for obtaining the PlatformConfig values for instances?

ParthaI avatar Jan 26 '24 05:01 ParthaI

Hi @ParthaI, looks like any API that returns an Instance struct as one of it's properties has the possibility of returning platform-config. i.e. getInstance or instanceActionResponse. It doesn't look like this parameter exists outside the Instance struct, though.

JoshuaWR avatar Feb 09 '24 23:02 JoshuaWR

Hey, @JoshuaWR, sorry for the late replay, getInstance or instanceActionResponse returns the Instance struct within the response and the PlatformConfig is the part of the Instance structure.

Do you have any idea why the value is always null?

ParthaI avatar Apr 01 '24 13:04 ParthaI

Hello, sorry to butt into this ticket but I'm having the same issue, albeit in a different manner.

The listInstances API does not return platformConfig: https://iaas.[REGION].oraclecloud.com/20160918/instances/ -> "platformConfig": null

but OCI CLI instance get does return it: oci compute instance get --instance-id [ID] ->

 "platform-config": {
      "is-measured-boot-enabled": true,
      "is-memory-encryption-enabled": false,
      "is-secure-boot-enabled": true,
      "is-symmetric-multi-threading-enabled": true,
      "is-trusted-platform-module-enabled": true,
      "type": "AMD_VM"
    },

I haven't tried explictly calling the GetInstance method instead of the ListInstances method on the API, but the documentation says they should return the same thing. Looks like a bug on the API :thinking:

https://docs.oracle.com/en-us/iaas/api/#/en/iaas/20160918/Instance/ListInstances https://docs.oracle.com/en-us/iaas/api/#/en/iaas/20160918/Instance/GetInstance

lacioffi-tenchi avatar Apr 18 '24 21:04 lacioffi-tenchi

@jyotisaini, Thanks For your response. Could you please try making GetInstance API call explicitly or could you please confirm which version of SDK does return the platform-config data(The SDK version v65.28.0 did not help to get the platform-config data)?

FYI, If you would like to give it a try for GetInstance API call, the following Go code may help you debug the error.

// This is an automatically generated code sample.
// To make this code sample work in your Oracle Cloud tenancy,
// please replace the values for any parameters whose current values do not fit
// your use case (such as resource IDs, strings containing ‘EXAMPLE’ or ‘unique_id’, and
// boolean, number, and enum parameters with values not fitting your use case).

package main

import (
	"context"
	"fmt"

	"github.com/oracle/oci-go-sdk/v65/common"
	"github.com/oracle/oci-go-sdk/v65/core"
	"github.com/oracle/oci-go-sdk/v65/example/helpers"
)

func ExampleGetInstance() {
	// Create a default authentication provider that uses the DEFAULT
	// profile in the configuration file.
	// Refer to <see href="https://docs.cloud.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm#SDK_and_CLI_Configuration_File>the public documentation</see> on how to prepare a configuration file.
	client, err := core.NewComputeClientWithConfigurationProvider(common.DefaultConfigProvider())
	helpers.FatalIfError(err)

	// Create a request and dependent object(s).

	req := core.GetInstanceRequest{InstanceId: common.String("ocid1.test.oc1..<unique_ID>EXAMPLE-instanceId-Value")}

	// Send the request using the service client
	resp, err := client.GetInstance(context.Background(), req)
	helpers.FatalIfError(err)

	// Retrieve value from the response.
	fmt.Println(resp)
}

Thanks!

ParthaI avatar Apr 19 '24 04:04 ParthaI

@ParthaI which permissions are you granting to the account running the command? I've found out that the INSPECT permission allows you to retrieve some data from the instances, but for others (such as PlatformConfig), it returns a null value. Updating this to a READ instances permission made the PlatformConfig be returned succesfully!

lacioffi-tenchi avatar Apr 19 '24 14:04 lacioffi-tenchi

@lacioffi-tenchi, I have admin privilege but still, I am not able to get the PlatformConfig details. Do I need this particular permission(READ instances) to get this value? Do we have any document reference for it?

ParthaI avatar Apr 19 '24 15:04 ParthaI

@ParthaI

Do I need this particular permission(READ instances) to get this value?

Not sure. I didn't try it with admin privileges. Also note I'm using the API directly, I'm not using this SDK. I'm just posting here because the issues seem very related.

Do we have any document reference for it?

No idea mate :laughing:

lacioffi-tenchi avatar Apr 19 '24 16:04 lacioffi-tenchi

Thank you, @lacioffi-tenchi, for the information. Based on what I understand, having Admin privileges should suffice to access the details. Regarding our earlier discussion, could this serve as a solution for the GetInstance function?

ParthaI avatar Apr 22 '24 05:04 ParthaI