OCI list instances requiring maintenance from Cloud Shell

We had question to come up how to list OCI Compute instances which are requiring maintenance quickly and I found an excellent script from Radu Dobrinescu written in Python.

But if I would like to run it quickly in cloud shell without any API keys or another instance which is using instance principles how would I do it?

Stephen Cross explains how to use Python SDK with Cloud Shell in his Medium post.

In short I just took best of the two, combined them and pasted the Python script in my Cloud Shell.

simo@cloudshell:~ (us-ashburn-1)$ python m.py 

Instances flagged for maintenance reboot: Instance Name, OCID, Availability Domain
==================================================================================
ocitest1, ocid1.instance.oc1.iad.anuwcldsesfso5ici4xtuvlidfddkfofdsre6bbhypkl4ffgijey33a4ltpvq, eORU:US-ASHBURN-AD-1
ocitest2, ocid1.instance.oc1.iad.anuwcljsessko0ccueiieda4idwqb6u3337ovm5ge4jhwxm4kubtaa242bm5a, eORU:US-ASHBURN-AD-1

My Python skills are very limited but thought it’s useful hack to see maintenance status quickly in different tenancies!

Here is full code edited. Big thanks for Stephen and Radu for all the groundwork!

# Oracle OCI - Instances flagged for reboot migration
# Version 1.0 03-December 2018
# Written by: radu.dobrinescu@oracle.com
#
# Instructions:
# - you need the OCI python API, this can be installed by running: pip install oci
# - you need the OCI CLI, this can be installed by running: pip install oci-cli
# - Make sure you have a user with an API key setup in the OCI Identity
# - Create a config file using the oci cli tool by running: oci setup config
# - In the script specify the config file to be used for running the report
# - You can specify any region in the config file, the script will query all enabled regions

import oci

# get the cloud shell delegated authentication token
delegation_token = open('/etc/oci/delegation_token', 'r').read()
# create the api request signer
signer = oci.auth.signers.InstancePrincipalsDelegationTokenSigner(
   delegation_token=delegation_token
)

compartment_id = signer.tenancy_id

identity_client = oci.identity.IdentityClient(config = {},signer=signer)
response = identity_client.list_region_subscriptions(signer.tenancy_id)
regions = response.data

def reboot_migration_instances():
    # Get all instances which have the reboot migration flag set.
    structured_search = oci.resource_search.models.StructuredSearchDetails(query="query instance resources where timeMaintenanceRebootDue > 'Now'",
                                                                           type='Structured',
                                                                           matching_context_type=oci.resource_search.models.SearchDetails.MATCHING_CONTEXT_TYPE_NONE)
    instances = search_client.search_resources(structured_search)
    for instance in instances.data.items:
        print("{}, {}, {}".format(instance.display_name, instance.identifier, instance.availability_domain))

print("")
print("Instances flagged for maintenance reboot: Instance Name, OCID, Availability Domain")
print("==================================================================================")
for region in regions:
        signer.region = region.region_name
        search_client = oci.resource_search.ResourceSearchClient(config = {},signer=signer)
        reboot_migration_instances()

Another option is just to use Advanced Search from the top. But who would want to do that? Probably if you need to monitor this somehow then using script could be more useful than using the search.

Simo

Recent Posts

Connecting to Autonomous Database Running on Google Cloud

Last time I showed how to provision Autonomous Database Serverless (ADB-S) on Google Cloud. This…

1 month ago

Can you believe it? Provisioning Autonomous Database in GCP!

I bet few years back folks didn't expect that by 2024 we would be able…

1 month ago

IP Address Insights with CLI

My previous post on IP Address Insights I mentioned it wasn't yet available with CLI…

6 months ago

Thoughts on Oracle Database@Azure

This will NOT be a technical walkthrough on Oracle Database@Azure but rather my opinions and…

6 months ago

OCI Vulnerability Scanning Setup

Many times when you work for someone, they already have their own vulnerability scanning throughout…

6 months ago

OCI IP Address Insights

Recently OCI announced small but VERY useful service, IP Address Insights. Why this matters? I've…

6 months ago