Quantcast
Viewing all articles
Browse latest Browse all 49146

How to find catalog request given request id [vRA + vRO 7.3]

I would like to find the catalog request for a given request id. This is what I have so far:

 

//var cafeRequests = vCACCAFECatalogConsumerRequestService.getRequests()
if ( vcacCafeHost == null ){  var vcacCafeHosts = Server.findAllForType("vCACCAFE:VCACHost");    if ( vcacCafeHosts == null ) {    throw( "vcacCafeHosts is null." )  } else {    if ( Array.isArray( vcacCafeHosts ) ) {    } else {      throw( "ERROR: vcacHosts is not an array." )    }  }  if ( vcacCafeHosts.length == 1 ){    var cafeHost    = vcacCafeHosts[ 0 ]    var vraInstance = cafeHost.url.split( "/" )[2]  } else {    throw "ERROR: Did not find exactly one vCACCAFE:VCACHost."  }
} else {    var cafeHost    = vcacCafeHost    var vraInstance = cafeHost.url.split( "/" )[2]
}
System.log( "vraInstance = " + vraInstance )

var vcacCafeServiceName = vCACCAFEServicesEnum.CATALOG_PROVIDER_SERVICE
System.log( "vcacCafeServiceName = " + vcacCafeServiceName )

var client = cafeHost.createRestClient( vcacCafeServiceName );
System.log( "client = " + client + ", object type = " + System.getObjectType( client ) + ", object class name = " + System.getObjectClassName( client ) )

var clientUrl = client.getUrl()
System.log( "clientUrl = " + clientUrl )


var resourceUrl = "consumer/requests/" + requestId
System.log( "resourceUrl = " + resourceUrl )

try{
  var allCatalogProviderServiceResponse = client.get( resourceUrl );  
} catch (err) {  System.error( "ERROR: client.get( " + resourceUrl + " ). err = " + err )  System.log( "Object.keys( err ) = " + Object.keys( err ) )
}

if ( allCatalogProviderServiceResponse == null || allCatalogProviderServiceResponse || undefined ){
  throw "allCatalogProviderServiceResponse is null or undefined."
}
var CatalogProviderServiceData = allCatalogProviderServiceResponse.getBodyAsJson();
System.log( "CatalogProviderServiceData = " + CatalogProviderServiceData + ", object type = " + System.getObjectType( CatalogProviderServiceData ) + ", object class name = " + System.getObjectClassName( CatalogProviderServiceData ) )

//System.log( "CatalogProviderServiceData.metadata = " + CatalogProviderServiceData.metadata + ", object type = " + System.getObjectType( CatalogProviderServiceData.metadata ) + ", object class name = " + System.getObjectClassName( CatalogProviderServiceData.metadata ) )
var catalogProviderServiceDataMetadata = CatalogProviderServiceData.metadata

var catalogProviderServiceDataMetadataKeys = Object.keys( catalogProviderServiceDataMetadata )
System.log( "catalogProviderServiceDataMetadataKeys = " + catalogProviderServiceDataMetadataKeys + ", object type = " + System.getObjectType( catalogProviderServiceDataMetadataKeys ) + ", object class name = " + System.getObjectClassName( catalogProviderServiceDataMetadataKeys ) )

for( var catalogProviderServiceDataMetadataKey in catalogProviderServiceDataMetadataKeys ) {
  System.log( "catalogProviderServiceDataMetadata[ " + catalogProviderServiceDataMetadataKeys[ catalogProviderServiceDataMetadataKey ] + " ] = " + catalogProviderServiceDataMetadata[ catalogProviderServiceDataMetadataKeys[ catalogProviderServiceDataMetadataKey ] ] )
}

 

the result is

 

[2019-02-26 17:42:21.887] [I] vraInstance = <FQDN of vRA>
[2019-02-26 17:42:21.889] [I] vcacCafeServiceName = com.vmware.csp.core.cafe.catalog.api
[2019-02-26 17:42:21.903] [I] client = DynamicWrapper (Instance) : [vCACCAFERestClient]-[class com.vmware.o11n.plugin.vcac.model.cafe.CAFERestClient] -- VALUE : com.vmware.o11n.plugin.vcac.model.cafe.CAFERestClient@4928a8be, object type = null, object class name = vCACCAFERestClient
[2019-02-26 17:42:21.906] [I] clientUrl = https://<FQDN of vRA>/catalog-service/api
[2019-02-26 17:42:21.912] [I] resourceUrl = consumer/requests/9d156326e1594223850a2a62b12e00f8
[2019-02-26 17:42:22.020] [E] ERROR: client.get( consumer/requests/9d156326e1594223850a2a62b12e00f8 ). err = InternalError: Invalid argument. (Workflow:vCACCAFECatalogConsumerRequestService_getRequests_ID_only_ver0003 / Scriptable task (item1)#38)
[2019-02-26 17:42:22.021] [I] Object.keys( err ) = message,fileName,lineNumber,name,stack
[2019-02-26 17:42:22.022] [E] Error in (Workflow:vCACCAFECatalogConsumerRequestService_getRequests_ID_only_ver0003 / Scriptable task (item1)#45) allCatalogProviderServiceResponse is null or undefined.
[2019-02-26 17:42:22.150] [E] Workflow execution stack:
***
item: 'vCACCAFECatalogConsumerRequestService_getRequests_ID_only_ver0003/item1', state: 'failed', business state: 'null', exception: 'allCatalogProviderServiceResponse is null or undefined. (Workflow:vCACCAFECatalogConsumerRequestService_getRequests_ID_only_ver0003 / Scriptable task (item1)#45)'
workflow: 'vCACCAFECatalogConsumerRequestService_getRequests_ID_only_ver0003' (a5d041c9-eed6-4aa8-ad30-38c0ee93b561) 
|  'input': name=vcacCafeHost type=vCACCAFE:VCACHost value=null
|  'input': name=requestId type=string value=9d156326e1594223850a2a62b12e00f8
|  'input': name=restQueryLimit type=number value=1.0
|  'input': name=restRequestPageMax type=number value=1.0
|  'no outputs'
|  'no attributes'
*** End of execution stack.

 

I have also tried using Postman (version 7.0.5) (https://{{vra-fqdn}}/catalog-service/api/consumer/requests ) and I get "HTTP Status 401 – Unauthorized" using an account that I know has access to the same vRA tenant. I know that the authentication is good as I have a sibling request (HTTPS://{{vra-fqdn}}:/vco/api/inventory/System/Actions/com.td.platformhosting.utils/) that does work and both inherit authorization from the same parent folder in Postman.

 

Unfortunately, I find REST very confusing. What I have found so far (https://code.vmware.com/apis/175/vra-catalog , https://grantorchard.com/vcac/extensibility/learning-vra-api-part-3-consumer-api-requesting-catalog-item/ ) doesn't seem to be helping.

 

How do I find the catalog request for a given request ID?


Viewing all articles
Browse latest Browse all 49146

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>