Thanks for the answer!
I fixed the code, but problem is not solved.
My fixed code:
- 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;
- }
- //get all ProvidervDC
- var AllPvDC = System.getModule("com.vmware.library.vCloud.operation.admin").getProviderVdcsVCloudHostAdmin(vCDHA);
- for each (PvDC in AllPvDC){
- PvDC.updateInternalState();
- if (getMetadataBoolean(PvDC,"service1") == null){
- setMetadataBoolean(PvDC,"service1",true);
- // ADD THIS LINE
- PvDC.updateInternalState();
- }
- //get all External Network in ProvidervDC
- var AllExtNet = System.getModule("com.vmware.library.vCloud.operation.admin").getExternalNetworksProviderVdc(PvDC);
- for each (ExtNet in AllExtNet){
- ExtNet.updateInternalState();
- if (getMetadataBoolean(ExtNet,"service1") == null){
- setMetadataBoolean(ExtNet,"service1",true);
- // ADD THIS LINE
- ExtNet.updateInternalState();
- }
- }
- }