ghostFishKillah
ghostFishKillah

Reputation: 41

"Error 'ResourceSummaryCollection' object is not subscriptable" OCI PythonSDK

I have python script that queries OCI Compute Instances with a defined tag and value of test and will take the results and stop any instance with those tags. I am expecting the query to return the result as a json object of according to this:

https://docs.oracle.com/en-us/iaas/Content/Search/Tasks/queryingresources.htm

However whenever I take the result and apply it to a variable I get the following error: "Error 'ResourceSummaryCollection' object is not subscriptable"

I noticed that the query response is not returning as a json object. It is returning as a list.

Update:

This is the error I am getting after updating my script: "Error 'list' object has no attribute 'identifier'". I was expecting the query to return as a json object. When I try to convert the list into a json object via the json dumps method I get object is not serializable. Bottom line is, how do I pass the OCID "Identifier" from the query?

My function:

def do(signer):

print("Searching for untagged instance", flush=True)

# results = ""
# message = ""
# resp    = ""

try:
    search_client = oci.resource_search.ResourceSearchClient(config={}, signer=signer)
    print("Search client initialized",flush=True)

    PredefinedTag = "apps"
    key= "test"
    value= "test"

    structured_search = oci.resource_search.models.StructuredSearchDetails(
            query="query instance resources where (definedTags.namespace = '{}' && definedTags.key = '{}' && definedTags.value = '{}')".format(PredefinedTag,key,value),
            type='Structured',
            matching_context_type=oci.resource_search.models.SearchDetails.MATCHING_CONTEXT_TYPE_NONE)   


    print("Step1",flush=True)
    #old
    results = search_client.search_resources(structured_search).data

    # print(results.items)

    # print(results.items.identifier)
    # print(results['items'][0]['identifier'])
    
    print("Step2",flush=True)
    instanceId = results(results.items.identifier)
    # instanceId = results['items'][0]['identifier']

    print("Step3",flush=True)
    resp = perform_action(signer, instanceId , 'STOP')
    print("Step4",flush=True)


 
except oci.exceptions.ServiceError as e:
        print('RQS Search failed with Service Error: {0}'.format(e),flush=True)
        raise
except oci.exceptions.RequestException as e:
        print('RQS Search failed w/ a Request exception. {0}'.format(e),flush=True)
        raise

return resp

Upvotes: 1

Views: 322

Answers (1)

ghostFishKillah
ghostFishKillah

Reputation: 41

Was able to reference the response from the query:

def do(signer):

    print("Searching for untagged instance", flush=True)


    try:
        search_client = oci.resource_search.ResourceSearchClient(config={}, signer=signer)
        print("Search client initialized",flush=True)

        PredefinedTag = "apps"
        key= "test"
        value= "test"

        structured_search = oci.resource_search.models.StructuredSearchDetails(
                query="query instance resources where (definedTags.namespace = '{}' && definedTags.key = '{}' && definedTags.value = '{}')".format(PredefinedTag,key,value),
                type='Structured',
                matching_context_type=oci.resource_search.models.SearchDetails.MATCHING_CONTEXT_TYPE_NONE)




        print("Step1",flush=True)

        results = search_client.search_resources(structured_search)

        for result in results.data.items:
            print(result.identifier + " has availability tag checking status")
            print(result.identifier + " status is " + result.lifecycle_state)
            instanceId = result.identifier
            resp = perform_action(signer, instanceId , 'START')

     
    except oci.exceptions.ServiceError as e:
            print('RQS Search failed with Service Error: {0}'.format(e),flush=True)
            raise
    except oci.exceptions.RequestException as e:
            print('RQS Search failed w/ a Request exception. {0}'.format(e),flush=True)
            raise

    return resp

Upvotes: 1

Related Questions