GetLifecyclePolicy TCL Example
load ./chilkat.dll
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
set rest [new_CkRest]
set authAws [new_CkAuthAws]
CkAuthAws_put_AccessKey $authAws "AWS_ACCESS_KEY"
CkAuthAws_put_SecretKey $authAws "AWS_SECRET_KEY"
# Don't forget to change the region to your particular region. (Also make the same change in the call to Connect below.)
CkAuthAws_put_Region $authAws "us-west-2"
CkAuthAws_put_ServiceName $authAws "dlm"
# SetAuthAws causes Chilkat to automatically add the following headers: Authorization, X-Amz-Date
CkRest_SetAuthAws $rest $authAws
# URL: https://dlm.us-west-2.amazonaws.com/
# Use the same region as specified above.
set success [CkRest_Connect $rest "dlm.us-west-2.amazonaws.com" 443 1 1]
if {$success != 1} then {
puts "ConnectFailReason: [CkRest_get_ConnectFailReason $rest]"
puts [CkRest_lastErrorText $rest]
delete_CkRest $rest
delete_CkAuthAws $authAws
exit
}
CkRest_AddHeader $rest "Content-Type" "application/x-amz-json-1.1"
CkRest_AddHeader $rest "X-Amz-Target" "GetLifecyclePolicy"
set sbResponseBody [new_CkStringBuilder]
set success [CkRest_FullRequestNoBodySb $rest "GET" "/policies/{policyId}/" $sbResponseBody]
if {$success != 1} then {
puts [CkRest_lastErrorText $rest]
delete_CkRest $rest
delete_CkAuthAws $authAws
delete_CkStringBuilder $sbResponseBody
exit
}
set respStatusCode [CkRest_get_ResponseStatusCode $rest]
puts "response status code = $respStatusCode"
if {$respStatusCode != 200} then {
puts "Response Header:"
puts [CkRest_responseHeader $rest]
puts "Response Body:"
puts [CkStringBuilder_getAsString $sbResponseBody]
delete_CkRest $rest
delete_CkAuthAws $authAws
delete_CkStringBuilder $sbResponseBody
exit
}
set jResp [new_CkJsonObject]
CkJsonObject_LoadSb $jResp $sbResponseBody
# The following code parses the JSON response.
# A sample JSON response is shown below the sample code.
# Use this online tool to generate parsing code from sample JSON:
# Generate Parsing Code from JSON
set DateCreated [CkJsonObject_IntOf $jResp "Policy.DateCreated"]
set DateModified [CkJsonObject_IntOf $jResp "Policy.DateModified"]
set Description [CkJsonObject_stringOf $jResp "Policy.Description"]
set ExecutionRoleArn [CkJsonObject_stringOf $jResp "Policy.ExecutionRoleArn"]
set PolicyArn [CkJsonObject_stringOf $jResp "Policy.PolicyArn"]
set DescriptionRegex [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.EventSource.Parameters.DescriptionRegex"]
set EventType [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.EventSource.Parameters.EventType"]
set v_Type [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.EventSource.Type"]
set ExcludeBootVolume [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Parameters.ExcludeBootVolume"]
set NoReboot [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Parameters.NoReboot"]
set PolicyType [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.PolicyType"]
set PolicyId [CkJsonObject_stringOf $jResp "Policy.PolicyId"]
set State [CkJsonObject_stringOf $jResp "Policy.State"]
set StatusMessage [CkJsonObject_stringOf $jResp "Policy.StatusMessage"]
set v_String [CkJsonObject_stringOf $jResp "Policy.Tags.string"]
set i 0
set count_i [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.Actions"]
while {$i < $count_i} {
CkJsonObject_put_I $jResp $i
set Name [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Actions[i].Name"]
set j 0
set count_j [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.Actions[i].CrossRegionCopy"]
while {$j < $count_j} {
CkJsonObject_put_J $jResp $j
set CmkArn [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Actions[i].CrossRegionCopy[j].EncryptionConfiguration.CmkArn"]
set Encrypted [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Actions[i].CrossRegionCopy[j].EncryptionConfiguration.Encrypted"]
set Interval [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Actions[i].CrossRegionCopy[j].RetainRule.Interval"]
set IntervalUnit [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Actions[i].CrossRegionCopy[j].RetainRule.IntervalUnit"]
set Target [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Actions[i].CrossRegionCopy[j].Target"]
set j [expr $j + 1]
}
set i [expr $i + 1]
}
set i 0
set count_i [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.EventSource.Parameters.SnapshotOwner"]
while {$i < $count_i} {
CkJsonObject_put_I $jResp $i
set strVal [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.EventSource.Parameters.SnapshotOwner[i]"]
set i [expr $i + 1]
}
set i 0
set count_i [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.ResourceLocations"]
while {$i < $count_i} {
CkJsonObject_put_I $jResp $i
set strVal [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.ResourceLocations[i]"]
set i [expr $i + 1]
}
set i 0
set count_i [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.ResourceTypes"]
while {$i < $count_i} {
CkJsonObject_put_I $jResp $i
set strVal [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.ResourceTypes[i]"]
set i [expr $i + 1]
}
set i 0
set count_i [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.Schedules"]
while {$i < $count_i} {
CkJsonObject_put_I $jResp $i
set CopyTags [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Schedules[i].CopyTags"]
set CronExpression [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].CreateRule.CronExpression"]
set CreateRuleInterval [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Schedules[i].CreateRule.Interval"]
set CreateRuleIntervalUnit [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].CreateRule.IntervalUnit"]
set Location [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].CreateRule.Location"]
set Count [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Schedules[i].DeprecateRule.Count"]
set DeprecateRuleInterval [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Schedules[i].DeprecateRule.Interval"]
set DeprecateRuleIntervalUnit [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].DeprecateRule.IntervalUnit"]
set FastRestoreRuleCount [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Schedules[i].FastRestoreRule.Count"]
set FastRestoreRuleInterval [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Schedules[i].FastRestoreRule.Interval"]
set FastRestoreRuleIntervalUnit [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].FastRestoreRule.IntervalUnit"]
set Name [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].Name"]
set RetainRuleCount [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Schedules[i].RetainRule.Count"]
set RetainRuleInterval [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Schedules[i].RetainRule.Interval"]
set RetainRuleIntervalUnit [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].RetainRule.IntervalUnit"]
set j 0
set count_j [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.Schedules[i].CreateRule.Times"]
while {$j < $count_j} {
CkJsonObject_put_J $jResp $j
set strVal [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].CreateRule.Times[j]"]
set j [expr $j + 1]
}
set j 0
set count_j [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.Schedules[i].CrossRegionCopyRules"]
while {$j < $count_j} {
CkJsonObject_put_J $jResp $j
set CmkArn [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].CrossRegionCopyRules[j].CmkArn"]
set CopyTags [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Schedules[i].CrossRegionCopyRules[j].CopyTags"]
set DeprecateRuleInterval [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Schedules[i].CrossRegionCopyRules[j].DeprecateRule.Interval"]
set DeprecateRuleIntervalUnit [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].CrossRegionCopyRules[j].DeprecateRule.IntervalUnit"]
set Encrypted [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Schedules[i].CrossRegionCopyRules[j].Encrypted"]
set RetainRuleInterval [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Schedules[i].CrossRegionCopyRules[j].RetainRule.Interval"]
set RetainRuleIntervalUnit [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].CrossRegionCopyRules[j].RetainRule.IntervalUnit"]
set Target [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].CrossRegionCopyRules[j].Target"]
set TargetRegion [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].CrossRegionCopyRules[j].TargetRegion"]
set j [expr $j + 1]
}
set j 0
set count_j [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.Schedules[i].FastRestoreRule.AvailabilityZones"]
while {$j < $count_j} {
CkJsonObject_put_J $jResp $j
set strVal [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].FastRestoreRule.AvailabilityZones[j]"]
set j [expr $j + 1]
}
set j 0
set count_j [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.Schedules[i].ShareRules"]
while {$j < $count_j} {
CkJsonObject_put_J $jResp $j
set UnshareInterval [CkJsonObject_IntOf $jResp "Policy.PolicyDetails.Schedules[i].ShareRules[j].UnshareInterval"]
set UnshareIntervalUnit [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].ShareRules[j].UnshareIntervalUnit"]
set k 0
set count_k [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.Schedules[i].ShareRules[j].TargetAccounts"]
while {$k < $count_k} {
CkJsonObject_put_K $jResp $k
set strVal [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].ShareRules[j].TargetAccounts[k]"]
set k [expr $k + 1]
}
set j [expr $j + 1]
}
set j 0
set count_j [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.Schedules[i].TagsToAdd"]
while {$j < $count_j} {
CkJsonObject_put_J $jResp $j
set Key [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].TagsToAdd[j].Key"]
set Value [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].TagsToAdd[j].Value"]
set j [expr $j + 1]
}
set j 0
set count_j [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.Schedules[i].VariableTags"]
while {$j < $count_j} {
CkJsonObject_put_J $jResp $j
set Key [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].VariableTags[j].Key"]
set Value [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.Schedules[i].VariableTags[j].Value"]
set j [expr $j + 1]
}
set i [expr $i + 1]
}
set i 0
set count_i [CkJsonObject_SizeOfArray $jResp "Policy.PolicyDetails.TargetTags"]
while {$i < $count_i} {
CkJsonObject_put_I $jResp $i
set Key [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.TargetTags[i].Key"]
set Value [CkJsonObject_stringOf $jResp "Policy.PolicyDetails.TargetTags[i].Value"]
set i [expr $i + 1]
}
# A sample JSON response body parsed by the above code:
# {
# "Policy": {
# "DateCreated": number,
# "DateModified": number,
# "Description": "string",
# "ExecutionRoleArn": "string",
# "PolicyArn": "string",
# "PolicyDetails": {
# "Actions": [
# {
# "CrossRegionCopy": [
# {
# "EncryptionConfiguration": {
# "CmkArn": "string",
# "Encrypted": boolean
# },
# "RetainRule": {
# "Interval": number,
# "IntervalUnit": "string"
# },
# "Target": "string"
# }
# ],
# "Name": "string"
# }
# ],
# "EventSource": {
# "Parameters": {
# "DescriptionRegex": "string",
# "EventType": "string",
# "SnapshotOwner": [
# "string"
# ]
# },
# "Type": "string"
# },
# "Parameters": {
# "ExcludeBootVolume": boolean,
# "NoReboot": boolean
# },
# "PolicyType": "string",
# "ResourceLocations": [
# "string"
# ],
# "ResourceTypes": [
# "string"
# ],
# "Schedules": [
# {
# "CopyTags": boolean,
# "CreateRule": {
# "CronExpression": "string",
# "Interval": number,
# "IntervalUnit": "string",
# "Location": "string",
# "Times": [
# "string"
# ]
# },
# "CrossRegionCopyRules": [
# {
# "CmkArn": "string",
# "CopyTags": boolean,
# "DeprecateRule": {
# "Interval": number,
# "IntervalUnit": "string"
# },
# "Encrypted": boolean,
# "RetainRule": {
# "Interval": number,
# "IntervalUnit": "string"
# },
# "Target": "string",
# "TargetRegion": "string"
# }
# ],
# "DeprecateRule": {
# "Count": number,
# "Interval": number,
# "IntervalUnit": "string"
# },
# "FastRestoreRule": {
# "AvailabilityZones": [
# "string"
# ],
# "Count": number,
# "Interval": number,
# "IntervalUnit": "string"
# },
# "Name": "string",
# "RetainRule": {
# "Count": number,
# "Interval": number,
# "IntervalUnit": "string"
# },
# "ShareRules": [
# {
# "TargetAccounts": [
# "string"
# ],
# "UnshareInterval": number,
# "UnshareIntervalUnit": "string"
# }
# ],
# "TagsToAdd": [
# {
# "Key": "string",
# "Value": "string"
# }
# ],
# "VariableTags": [
# {
# "Key": "string",
# "Value": "string"
# }
# ]
# }
# ],
# "TargetTags": [
# {
# "Key": "string",
# "Value": "string"
# }
# ]
# },
# "PolicyId": "string",
# "State": "string",
# "StatusMessage": "string",
# "Tags": {
# "string": "string"
# }
# }
# }
delete_CkRest $rest
delete_CkAuthAws $authAws
delete_CkStringBuilder $sbResponseBody
delete_CkJsonObject $jResp