Chilkat Online Tools

DescribeInstances TCL Example

AWS OpsWorks

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 "opsworks"
# SetAuthAws causes Chilkat to automatically add the following headers: Authorization, X-Amz-Date
CkRest_SetAuthAws $rest $authAws

# URL: https://opsworks.us-west-2.amazonaws.com/
# Use the same region as specified above.
set success [CkRest_Connect $rest "opsworks.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
}

# The following code creates the JSON request body.
# The JSON created by this code is shown below.

# Use this online tool to generate code from sample JSON:
# Generate Code to Create JSON

set json [new_CkJsonObject]

CkJsonObject_UpdateString $json "InstanceIds[0]" "string"
CkJsonObject_UpdateString $json "LayerId" "string"
CkJsonObject_UpdateString $json "StackId" "string"

# The JSON request body created by the above code:

# {
#   "InstanceIds": [
#     "string"
#   ],
#   "LayerId": "string",
#   "StackId": "string"
# }

CkRest_AddHeader $rest "Content-Type" "application/x-amz-json-1.1"
CkRest_AddHeader $rest "X-Amz-Target" "OpsWorks_20130218.DescribeInstances"

set sbRequestBody [new_CkStringBuilder]

CkJsonObject_EmitSb $json $sbRequestBody
set sbResponseBody [new_CkStringBuilder]

set success [CkRest_FullRequestSb $rest "POST" "/" $sbRequestBody $sbResponseBody]
if {$success != 1} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    delete_CkAuthAws $authAws
    delete_CkJsonObject $json
    delete_CkStringBuilder $sbRequestBody
    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_CkJsonObject $json
    delete_CkStringBuilder $sbRequestBody
    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 i 0
set count_i [CkJsonObject_SizeOfArray $jResp "Instances"]
while {$i < $count_i} {
    CkJsonObject_put_I $jResp $i
    set AgentVersion [CkJsonObject_stringOf $jResp "Instances[i].AgentVersion"]
    set AmiId [CkJsonObject_stringOf $jResp "Instances[i].AmiId"]
    set Architecture [CkJsonObject_stringOf $jResp "Instances[i].Architecture"]
    set Arn [CkJsonObject_stringOf $jResp "Instances[i].Arn"]
    set AutoScalingType [CkJsonObject_stringOf $jResp "Instances[i].AutoScalingType"]
    set AvailabilityZone [CkJsonObject_stringOf $jResp "Instances[i].AvailabilityZone"]
    set CreatedAt [CkJsonObject_stringOf $jResp "Instances[i].CreatedAt"]
    set EbsOptimized [CkJsonObject_IntOf $jResp "Instances[i].EbsOptimized"]
    set Ec2InstanceId [CkJsonObject_stringOf $jResp "Instances[i].Ec2InstanceId"]
    set EcsClusterArn [CkJsonObject_stringOf $jResp "Instances[i].EcsClusterArn"]
    set EcsContainerInstanceArn [CkJsonObject_stringOf $jResp "Instances[i].EcsContainerInstanceArn"]
    set ElasticIp [CkJsonObject_stringOf $jResp "Instances[i].ElasticIp"]
    set Hostname [CkJsonObject_stringOf $jResp "Instances[i].Hostname"]
    set InfrastructureClass [CkJsonObject_stringOf $jResp "Instances[i].InfrastructureClass"]
    set InstallUpdatesOnBoot [CkJsonObject_IntOf $jResp "Instances[i].InstallUpdatesOnBoot"]
    set InstanceId [CkJsonObject_stringOf $jResp "Instances[i].InstanceId"]
    set InstanceProfileArn [CkJsonObject_stringOf $jResp "Instances[i].InstanceProfileArn"]
    set InstanceType [CkJsonObject_stringOf $jResp "Instances[i].InstanceType"]
    set LastServiceErrorId [CkJsonObject_stringOf $jResp "Instances[i].LastServiceErrorId"]
    set Os [CkJsonObject_stringOf $jResp "Instances[i].Os"]
    set Platform [CkJsonObject_stringOf $jResp "Instances[i].Platform"]
    set PrivateDns [CkJsonObject_stringOf $jResp "Instances[i].PrivateDns"]
    set PrivateIp [CkJsonObject_stringOf $jResp "Instances[i].PrivateIp"]
    set PublicDns [CkJsonObject_stringOf $jResp "Instances[i].PublicDns"]
    set PublicIp [CkJsonObject_stringOf $jResp "Instances[i].PublicIp"]
    set RegisteredBy [CkJsonObject_stringOf $jResp "Instances[i].RegisteredBy"]
    set ReportedAgentVersion [CkJsonObject_stringOf $jResp "Instances[i].ReportedAgentVersion"]
    set Family [CkJsonObject_stringOf $jResp "Instances[i].ReportedOs.Family"]
    set Name [CkJsonObject_stringOf $jResp "Instances[i].ReportedOs.Name"]
    set Version [CkJsonObject_stringOf $jResp "Instances[i].ReportedOs.Version"]
    set RootDeviceType [CkJsonObject_stringOf $jResp "Instances[i].RootDeviceType"]
    set RootDeviceVolumeId [CkJsonObject_stringOf $jResp "Instances[i].RootDeviceVolumeId"]
    set SshHostDsaKeyFingerprint [CkJsonObject_stringOf $jResp "Instances[i].SshHostDsaKeyFingerprint"]
    set SshHostRsaKeyFingerprint [CkJsonObject_stringOf $jResp "Instances[i].SshHostRsaKeyFingerprint"]
    set SshKeyName [CkJsonObject_stringOf $jResp "Instances[i].SshKeyName"]
    set StackId [CkJsonObject_stringOf $jResp "Instances[i].StackId"]
    set Status [CkJsonObject_stringOf $jResp "Instances[i].Status"]
    set SubnetId [CkJsonObject_stringOf $jResp "Instances[i].SubnetId"]
    set Tenancy [CkJsonObject_stringOf $jResp "Instances[i].Tenancy"]
    set VirtualizationType [CkJsonObject_stringOf $jResp "Instances[i].VirtualizationType"]
    set j 0
    set count_j [CkJsonObject_SizeOfArray $jResp "Instances[i].BlockDeviceMappings"]
    while {$j < $count_j} {
        CkJsonObject_put_J $jResp $j
        set DeviceName [CkJsonObject_stringOf $jResp "Instances[i].BlockDeviceMappings[j].DeviceName"]
        set DeleteOnTermination [CkJsonObject_IntOf $jResp "Instances[i].BlockDeviceMappings[j].Ebs.DeleteOnTermination"]
        set Iops [CkJsonObject_IntOf $jResp "Instances[i].BlockDeviceMappings[j].Ebs.Iops"]
        set SnapshotId [CkJsonObject_stringOf $jResp "Instances[i].BlockDeviceMappings[j].Ebs.SnapshotId"]
        set VolumeSize [CkJsonObject_IntOf $jResp "Instances[i].BlockDeviceMappings[j].Ebs.VolumeSize"]
        set VolumeType [CkJsonObject_stringOf $jResp "Instances[i].BlockDeviceMappings[j].Ebs.VolumeType"]
        set NoDevice [CkJsonObject_stringOf $jResp "Instances[i].BlockDeviceMappings[j].NoDevice"]
        set VirtualName [CkJsonObject_stringOf $jResp "Instances[i].BlockDeviceMappings[j].VirtualName"]
        set j [expr $j + 1]
    }
    set j 0
    set count_j [CkJsonObject_SizeOfArray $jResp "Instances[i].LayerIds"]
    while {$j < $count_j} {
        CkJsonObject_put_J $jResp $j
        set strVal [CkJsonObject_stringOf $jResp "Instances[i].LayerIds[j]"]
        set j [expr $j + 1]
    }
    set j 0
    set count_j [CkJsonObject_SizeOfArray $jResp "Instances[i].SecurityGroupIds"]
    while {$j < $count_j} {
        CkJsonObject_put_J $jResp $j
        set strVal [CkJsonObject_stringOf $jResp "Instances[i].SecurityGroupIds[j]"]
        set j [expr $j + 1]
    }
    set i [expr $i + 1]
}

# A sample JSON response body parsed by the above code:

# {
#   "Instances": [
#     {
#       "AgentVersion": "string",
#       "AmiId": "string",
#       "Architecture": "string",
#       "Arn": "string",
#       "AutoScalingType": "string",
#       "AvailabilityZone": "string",
#       "BlockDeviceMappings": [
#         {
#           "DeviceName": "string",
#           "Ebs": {
#             "DeleteOnTermination": boolean,
#             "Iops": number,
#             "SnapshotId": "string",
#             "VolumeSize": number,
#             "VolumeType": "string"
#           },
#           "NoDevice": "string",
#           "VirtualName": "string"
#         }
#       ],
#       "CreatedAt": "string",
#       "EbsOptimized": boolean,
#       "Ec2InstanceId": "string",
#       "EcsClusterArn": "string",
#       "EcsContainerInstanceArn": "string",
#       "ElasticIp": "string",
#       "Hostname": "string",
#       "InfrastructureClass": "string",
#       "InstallUpdatesOnBoot": boolean,
#       "InstanceId": "string",
#       "InstanceProfileArn": "string",
#       "InstanceType": "string",
#       "LastServiceErrorId": "string",
#       "LayerIds": [
#         "string"
#       ],
#       "Os": "string",
#       "Platform": "string",
#       "PrivateDns": "string",
#       "PrivateIp": "string",
#       "PublicDns": "string",
#       "PublicIp": "string",
#       "RegisteredBy": "string",
#       "ReportedAgentVersion": "string",
#       "ReportedOs": {
#         "Family": "string",
#         "Name": "string",
#         "Version": "string"
#       },
#       "RootDeviceType": "string",
#       "RootDeviceVolumeId": "string",
#       "SecurityGroupIds": [
#         "string"
#       ],
#       "SshHostDsaKeyFingerprint": "string",
#       "SshHostRsaKeyFingerprint": "string",
#       "SshKeyName": "string",
#       "StackId": "string",
#       "Status": "string",
#       "SubnetId": "string",
#       "Tenancy": "string",
#       "VirtualizationType": "string"
#     }
#   ]
# }

delete_CkRest $rest
delete_CkAuthAws $authAws
delete_CkJsonObject $json
delete_CkStringBuilder $sbRequestBody
delete_CkStringBuilder $sbResponseBody
delete_CkJsonObject $jResp