Hi, all
cdecanini_, thank you, i enable DEBUG mode on vCO.
In server.log begin write response from vCloud Director.
I use follow Script Task:
- function setMetadataBoolean(obj,key,value){
- var metadata = obj.getMetadata();
- var vclMetadataStringValue = new VclMetadataBooleanValue() ;
- vclMetadataStringValue.value = value;
- var vclAbstractValueObject = new VclAbstractValueObject();
- vclAbstractValueObject.setValue(vclMetadataStringValue);
- var vclMetadataEntry = new VclMetadataEntry();
- vclMetadataEntry.key = key;
- vclMetadataEntry.typedValue = vclAbstractValueObject;
- System.log("Setting key " + key + " with value " + value);
- return metadata.updateTypedEntry(vclMetadataEntry);
- }
- function getMetadataBoolean(obj,key){
- ObjMetadata = obj.getMetadata();
- Entries = ObjMetadata.getTypedEntries()
- for each (Entrie in Entries.enumerate()){
- if (Entrie.key == key){
- value = Entrie.typedValue.getValue(new VclMetadataBooleanValue).value;
- break;
- }else{value = null;}
- }
- return value;
- }
- var vCDHosts = System.getModule("com.vmware.library.vCloud.Host").getHosts();
- for each (vCDHost in vCDHosts){
- if (vCDHost.url.substring(8,vCDHost.url.length-4).toLowerCase() == vCDUrl.toLowerCase()) {
- CurrvCDHost = vCDHost
- } else {
- System.log("vCD Host with url=" + vCDUrl + " not found.")
- }
- }
- var vCDHA = CurrvCDHost.toAdminObject();
- //Get AllPvDC
- var AllPvDC = System.getModule("com.vmware.library.vCloud.operation.admin").getProviderVdcsVCloudHostAdmin(vCDHA);
- for each (PvDC in AllPvDC){
- PvDC.updateInternalState();
- //if key tst not exists
- if (!getMetadataBoolean(PvDC,"tst")){
- System.log("No Metadata");
- //create key tst with value false
- setMetadataBoolean(PvDC,"tst",false)
- PvDC.updateInternalState();
- }else {
- System.log(PvDC.name + "-" + getMetadataBoolean(PvDC,"tst"))
- }
- }
Result :
- [2013-07-25 13:04:24.897] [I] No Metadata
- [2013-07-25 13:04:24.921] [I] Setting key tst with value false
- [2013-07-25 13:04:25.169] [I] No Metadata
- [2013-07-25 13:04:25.194] [I] Setting key tst with value false
But in log file i see:
- 2013-07-25 04:48:57.783-0400 INFO [STDOUT] Jul 25, 2013 4:48:57 AM com.vmware.vcloud.sdk.RestUtil get
- INFO: GET URL - https://vcloud.xxxxxx.xx/api/admin/providervdc/04fe3d52-cf4c-43c1-a78d-95265f4e0fe8/metadata
- 2013-07-25 04:48:57.804-0400 INFO [STDOUT] Jul 25, 2013 4:48:57 AM com.vmware.vcloud.sdk.RestUtil get
- INFO: Status Code - 200
- 2013-07-25 04:48:57.805-0400 INFO [STDOUT] Jul 25, 2013 4:48:57 AM com.vmware.vcloud.sdk.RestUtil get
- INFO: Status - OK
- 2013-07-25 04:48:57.805-0400 INFO [STDOUT] Jul 25, 2013 4:48:57 AM com.vmware.vcloud.sdk.RestUtil get
- INFO: Response - <?xmlversion="1.0"encoding="UTF-8"?>
- <Metadataxmlns="http://www.vmware.com/vcloud/v1.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"type="application/vnd.vmware.vcloud.metadata+xml"href="https://vcloud.xxxxxx.xx/api/admin/providervdc/04fe3d52-cf4c-43c1-a78d-95265f4e0fe8/metadata" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5http://vcloud.xxxxxx.xx/api/v1.5/schema/master.xsd">
- <Linkrel="up"type="application/vnd.vmware.admin.providervdc+xml"href="https://vcloud.xxxxxx.xx/api/admin/providervdc/04fe3d52-cf4c-43c1-a78d-95265f4e0fe8"/>
- <Linkrel="add"type="application/vnd.vmware.vcloud.metadata+xml"href="https://vcloud.xxxxxx.xx/api/admin/providervdc/04fe3d52-cf4c-43c1-a78d-95265f4e0fe8/metadata"/>
- <MetadataEntrytype="application/vnd.vmware.vcloud.metadata.value+xml"href="https://vcloud.xxxxxx.xx/api/admin/providervdc/04fe3d52-cf4c-43c1-a78d-95265f4e0fe8/metadata/service">
- <Linkrel="up"type="application/vnd.vmware.vcloud.metadata+xml"href="https://vcloud.xxxxxx.xx/api/admin/providervdc/04fe3d52-cf4c-43c1-a78d-95265f4e0fe8/metadata"/>
- <Linkrel="edit"type="application/vnd.vmware.vcloud.metadata.value+xml"href="https://vcloud.xxxxxx.xx/api/admin/providervdc/04fe3d52-cf4c-43c1-a78d-95265f4e0fe8/metadata/service"/>
- <Linkrel="remove"href="https://vcloud.xxxxxx.xx/api/admin/providervdc/04fe3d52-cf4c-43c1-a78d-95265f4e0fe8/metadata/service"/>
- <Key>service</Key>
- <TypedValue xsi:type="MetadataBooleanValue">
- <Value>false</Value>
- </TypedValue>
- </MetadataEntry>
- <MetadataEntrytype="application/vnd.vmware.vcloud.metadata.value+xml"href="https://vcloud.xxxxxx.xx/api/admin/providervdc/04fe3d52-cf4c-43c1-a78d-95265f4e0fe8/metadata/tst">
- <Linkrel="up"type="application/vnd.vmware.vcloud.metadata+xml"href="https://vcloud.xxxxxx.xx/api/admin/providervdc/04fe3d52-cf4c-43c1-a78d-95265f4e0fe8/metadata"/>
- <Linkrel="edit"type="application/vnd.vmware.vcloud.metadata.value+xml"href="https://vcloud.xxxxxx.xx/api/admin/providervdc/04fe3d52-cf4c-43c1-a78d-95265f4e0fe8/metadata/tst"/>
- <Linkrel="remove"href="https://vcloud.xxxxxx.xx/api/admin/providervdc/04fe3d52-cf4c-43c1-a78d-95265f4e0fe8/metadata/tst"/>
- <Key>tst</Key>
- <TypedValue xsi:type="MetadataBooleanValue">
- <Value>false</Value>
- </TypedValue>
- </MetadataEntry>
- </Metadata>
I attached full logfile. In log file you can ignore line "Canceling workflow token 'ff808081400fcf0b01401504469d0174'", because it test workflow with many action and i use "workflow.cancel();"
Thank you!