void DescribeInstancesResult::parse()

in ecs/src/model/DescribeInstancesResult.cc [36:319]


void DescribeInstancesResult::parse(const std::string &payload)
{
	Json::Reader reader;
	Json::Value value;
	reader.parse(payload, value);
	setRequestId(value["RequestId"].asString());
	auto allInstancesNode = value["Instances"]["Instance"];
	for (auto valueInstancesInstance : allInstancesNode)
	{
		Instance instancesObject;
		if(!valueInstancesInstance["CreationTime"].isNull())
			instancesObject.creationTime = valueInstancesInstance["CreationTime"].asString();
		if(!valueInstancesInstance["SerialNumber"].isNull())
			instancesObject.serialNumber = valueInstancesInstance["SerialNumber"].asString();
		if(!valueInstancesInstance["Status"].isNull())
			instancesObject.status = valueInstancesInstance["Status"].asString();
		if(!valueInstancesInstance["DeploymentSetId"].isNull())
			instancesObject.deploymentSetId = valueInstancesInstance["DeploymentSetId"].asString();
		if(!valueInstancesInstance["KeyPairName"].isNull())
			instancesObject.keyPairName = valueInstancesInstance["KeyPairName"].asString();
		if(!valueInstancesInstance["SaleCycle"].isNull())
			instancesObject.saleCycle = valueInstancesInstance["SaleCycle"].asString();
		if(!valueInstancesInstance["SpotStrategy"].isNull())
			instancesObject.spotStrategy = valueInstancesInstance["SpotStrategy"].asString();
		if(!valueInstancesInstance["DeviceAvailable"].isNull())
			instancesObject.deviceAvailable = valueInstancesInstance["DeviceAvailable"].asString() == "true";
		if(!valueInstancesInstance["LocalStorageCapacity"].isNull())
			instancesObject.localStorageCapacity = std::stol(valueInstancesInstance["LocalStorageCapacity"].asString());
		if(!valueInstancesInstance["Description"].isNull())
			instancesObject.description = valueInstancesInstance["Description"].asString();
		if(!valueInstancesInstance["SpotDuration"].isNull())
			instancesObject.spotDuration = std::stoi(valueInstancesInstance["SpotDuration"].asString());
		if(!valueInstancesInstance["InstanceNetworkType"].isNull())
			instancesObject.instanceNetworkType = valueInstancesInstance["InstanceNetworkType"].asString();
		if(!valueInstancesInstance["InstanceName"].isNull())
			instancesObject.instanceName = valueInstancesInstance["InstanceName"].asString();
		if(!valueInstancesInstance["OSNameEn"].isNull())
			instancesObject.oSNameEn = valueInstancesInstance["OSNameEn"].asString();
		if(!valueInstancesInstance["HpcClusterId"].isNull())
			instancesObject.hpcClusterId = valueInstancesInstance["HpcClusterId"].asString();
		if(!valueInstancesInstance["SpotPriceLimit"].isNull())
			instancesObject.spotPriceLimit = std::stof(valueInstancesInstance["SpotPriceLimit"].asString());
		if(!valueInstancesInstance["Memory"].isNull())
			instancesObject.memory = std::stoi(valueInstancesInstance["Memory"].asString());
		if(!valueInstancesInstance["OSName"].isNull())
			instancesObject.oSName = valueInstancesInstance["OSName"].asString();
		if(!valueInstancesInstance["DeploymentSetGroupNo"].isNull())
			instancesObject.deploymentSetGroupNo = std::stoi(valueInstancesInstance["DeploymentSetGroupNo"].asString());
		if(!valueInstancesInstance["ImageId"].isNull())
			instancesObject.imageId = valueInstancesInstance["ImageId"].asString();
		if(!valueInstancesInstance["VlanId"].isNull())
			instancesObject.vlanId = valueInstancesInstance["VlanId"].asString();
		if(!valueInstancesInstance["ClusterId"].isNull())
			instancesObject.clusterId = valueInstancesInstance["ClusterId"].asString();
		if(!valueInstancesInstance["GPUSpec"].isNull())
			instancesObject.gPUSpec = valueInstancesInstance["GPUSpec"].asString();
		if(!valueInstancesInstance["AutoReleaseTime"].isNull())
			instancesObject.autoReleaseTime = valueInstancesInstance["AutoReleaseTime"].asString();
		if(!valueInstancesInstance["DeletionProtection"].isNull())
			instancesObject.deletionProtection = valueInstancesInstance["DeletionProtection"].asString() == "true";
		if(!valueInstancesInstance["StoppedMode"].isNull())
			instancesObject.stoppedMode = valueInstancesInstance["StoppedMode"].asString();
		if(!valueInstancesInstance["GPUAmount"].isNull())
			instancesObject.gPUAmount = std::stoi(valueInstancesInstance["GPUAmount"].asString());
		if(!valueInstancesInstance["HostName"].isNull())
			instancesObject.hostName = valueInstancesInstance["HostName"].asString();
		if(!valueInstancesInstance["InstanceId"].isNull())
			instancesObject.instanceId = valueInstancesInstance["InstanceId"].asString();
		if(!valueInstancesInstance["InternetMaxBandwidthOut"].isNull())
			instancesObject.internetMaxBandwidthOut = std::stoi(valueInstancesInstance["InternetMaxBandwidthOut"].asString());
		if(!valueInstancesInstance["InternetMaxBandwidthIn"].isNull())
			instancesObject.internetMaxBandwidthIn = std::stoi(valueInstancesInstance["InternetMaxBandwidthIn"].asString());
		if(!valueInstancesInstance["InstanceType"].isNull())
			instancesObject.instanceType = valueInstancesInstance["InstanceType"].asString();
		if(!valueInstancesInstance["InstanceChargeType"].isNull())
			instancesObject.instanceChargeType = valueInstancesInstance["InstanceChargeType"].asString();
		if(!valueInstancesInstance["RegionId"].isNull())
			instancesObject.regionId = valueInstancesInstance["RegionId"].asString();
		if(!valueInstancesInstance["IoOptimized"].isNull())
			instancesObject.ioOptimized = valueInstancesInstance["IoOptimized"].asString() == "true";
		if(!valueInstancesInstance["StartTime"].isNull())
			instancesObject.startTime = valueInstancesInstance["StartTime"].asString();
		if(!valueInstancesInstance["Cpu"].isNull())
			instancesObject.cpu = std::stoi(valueInstancesInstance["Cpu"].asString());
		if(!valueInstancesInstance["LocalStorageAmount"].isNull())
			instancesObject.localStorageAmount = std::stoi(valueInstancesInstance["LocalStorageAmount"].asString());
		if(!valueInstancesInstance["ExpiredTime"].isNull())
			instancesObject.expiredTime = valueInstancesInstance["ExpiredTime"].asString();
		if(!valueInstancesInstance["ResourceGroupId"].isNull())
			instancesObject.resourceGroupId = valueInstancesInstance["ResourceGroupId"].asString();
		if(!valueInstancesInstance["InternetChargeType"].isNull())
			instancesObject.internetChargeType = valueInstancesInstance["InternetChargeType"].asString();
		if(!valueInstancesInstance["ZoneId"].isNull())
			instancesObject.zoneId = valueInstancesInstance["ZoneId"].asString();
		if(!valueInstancesInstance["Recyclable"].isNull())
			instancesObject.recyclable = valueInstancesInstance["Recyclable"].asString() == "true";
		if(!valueInstancesInstance["ISP"].isNull())
			instancesObject.iSP = valueInstancesInstance["ISP"].asString();
		if(!valueInstancesInstance["CreditSpecification"].isNull())
			instancesObject.creditSpecification = valueInstancesInstance["CreditSpecification"].asString();
		if(!valueInstancesInstance["InstanceTypeFamily"].isNull())
			instancesObject.instanceTypeFamily = valueInstancesInstance["InstanceTypeFamily"].asString();
		if(!valueInstancesInstance["OSType"].isNull())
			instancesObject.oSType = valueInstancesInstance["OSType"].asString();
		if(!valueInstancesInstance["SpotInterruptionBehavior"].isNull())
			instancesObject.spotInterruptionBehavior = valueInstancesInstance["SpotInterruptionBehavior"].asString();
		if(!valueInstancesInstance["EnableNVS"].isNull())
			instancesObject.enableNVS = valueInstancesInstance["EnableNVS"].asString() == "true";
		auto allNetworkInterfacesNode = valueInstancesInstance["NetworkInterfaces"]["NetworkInterface"];
		for (auto valueInstancesInstanceNetworkInterfacesNetworkInterface : allNetworkInterfacesNode)
		{
			Instance::NetworkInterface networkInterfacesObject;
			if(!valueInstancesInstanceNetworkInterfacesNetworkInterface["Type"].isNull())
				networkInterfacesObject.type = valueInstancesInstanceNetworkInterfacesNetworkInterface["Type"].asString();
			if(!valueInstancesInstanceNetworkInterfacesNetworkInterface["MacAddress"].isNull())
				networkInterfacesObject.macAddress = valueInstancesInstanceNetworkInterfacesNetworkInterface["MacAddress"].asString();
			if(!valueInstancesInstanceNetworkInterfacesNetworkInterface["PrimaryIpAddress"].isNull())
				networkInterfacesObject.primaryIpAddress = valueInstancesInstanceNetworkInterfacesNetworkInterface["PrimaryIpAddress"].asString();
			if(!valueInstancesInstanceNetworkInterfacesNetworkInterface["NetworkInterfaceId"].isNull())
				networkInterfacesObject.networkInterfaceId = valueInstancesInstanceNetworkInterfacesNetworkInterface["NetworkInterfaceId"].asString();
			auto allPrivateIpSetsNode = valueInstancesInstanceNetworkInterfacesNetworkInterface["PrivateIpSets"]["PrivateIpSet"];
			for (auto valueInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSetsPrivateIpSet : allPrivateIpSetsNode)
			{
				Instance::NetworkInterface::PrivateIpSet privateIpSetsObject;
				if(!valueInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSetsPrivateIpSet["PrivateIpAddress"].isNull())
					privateIpSetsObject.privateIpAddress = valueInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSetsPrivateIpSet["PrivateIpAddress"].asString();
				if(!valueInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSetsPrivateIpSet["Primary"].isNull())
					privateIpSetsObject.primary = valueInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSetsPrivateIpSet["Primary"].asString() == "true";
				if(!valueInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSetsPrivateIpSet["PrivateDnsName"].isNull())
					privateIpSetsObject.privateDnsName = valueInstancesInstanceNetworkInterfacesNetworkInterfacePrivateIpSetsPrivateIpSet["PrivateDnsName"].asString();
				networkInterfacesObject.privateIpSets.push_back(privateIpSetsObject);
			}
			auto allIpv6SetsNode = valueInstancesInstanceNetworkInterfacesNetworkInterface["Ipv6Sets"]["Ipv6Set"];
			for (auto valueInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6SetsIpv6Set : allIpv6SetsNode)
			{
				Instance::NetworkInterface::Ipv6Set ipv6SetsObject;
				if(!valueInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6SetsIpv6Set["Ipv6Address"].isNull())
					ipv6SetsObject.ipv6Address = valueInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6SetsIpv6Set["Ipv6Address"].asString();
				networkInterfacesObject.ipv6Sets.push_back(ipv6SetsObject);
			}
			auto allIpv4PrefixSetsNode = valueInstancesInstanceNetworkInterfacesNetworkInterface["Ipv4PrefixSets"]["Ipv4PrefixSet"];
			for (auto valueInstancesInstanceNetworkInterfacesNetworkInterfaceIpv4PrefixSetsIpv4PrefixSet : allIpv4PrefixSetsNode)
			{
				Instance::NetworkInterface::Ipv4PrefixSet ipv4PrefixSetsObject;
				if(!valueInstancesInstanceNetworkInterfacesNetworkInterfaceIpv4PrefixSetsIpv4PrefixSet["Ipv4Prefix"].isNull())
					ipv4PrefixSetsObject.ipv4Prefix = valueInstancesInstanceNetworkInterfacesNetworkInterfaceIpv4PrefixSetsIpv4PrefixSet["Ipv4Prefix"].asString();
				networkInterfacesObject.ipv4PrefixSets.push_back(ipv4PrefixSetsObject);
			}
			auto allIpv6PrefixSetsNode = valueInstancesInstanceNetworkInterfacesNetworkInterface["Ipv6PrefixSets"]["Ipv6PrefixSet"];
			for (auto valueInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6PrefixSetsIpv6PrefixSet : allIpv6PrefixSetsNode)
			{
				Instance::NetworkInterface::Ipv6PrefixSet ipv6PrefixSetsObject;
				if(!valueInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6PrefixSetsIpv6PrefixSet["Ipv6Prefix"].isNull())
					ipv6PrefixSetsObject.ipv6Prefix = valueInstancesInstanceNetworkInterfacesNetworkInterfaceIpv6PrefixSetsIpv6PrefixSet["Ipv6Prefix"].asString();
				networkInterfacesObject.ipv6PrefixSets.push_back(ipv6PrefixSetsObject);
			}
			instancesObject.networkInterfaces.push_back(networkInterfacesObject);
		}
		auto allOperationLocksNode = valueInstancesInstance["OperationLocks"]["LockReason"];
		for (auto valueInstancesInstanceOperationLocksLockReason : allOperationLocksNode)
		{
			Instance::LockReason operationLocksObject;
			if(!valueInstancesInstanceOperationLocksLockReason["LockMsg"].isNull())
				operationLocksObject.lockMsg = valueInstancesInstanceOperationLocksLockReason["LockMsg"].asString();
			if(!valueInstancesInstanceOperationLocksLockReason["LockReason"].isNull())
				operationLocksObject.lockReason = valueInstancesInstanceOperationLocksLockReason["LockReason"].asString();
			instancesObject.operationLocks.push_back(operationLocksObject);
		}
		auto allTagsNode = valueInstancesInstance["Tags"]["Tag"];
		for (auto valueInstancesInstanceTagsTag : allTagsNode)
		{
			Instance::Tag tagsObject;
			if(!valueInstancesInstanceTagsTag["TagValue"].isNull())
				tagsObject.tagValue = valueInstancesInstanceTagsTag["TagValue"].asString();
			if(!valueInstancesInstanceTagsTag["TagKey"].isNull())
				tagsObject.tagKey = valueInstancesInstanceTagsTag["TagKey"].asString();
			instancesObject.tags.push_back(tagsObject);
		}
		auto vpcAttributesNode = value["VpcAttributes"];
		if(!vpcAttributesNode["VpcId"].isNull())
			instancesObject.vpcAttributes.vpcId = vpcAttributesNode["VpcId"].asString();
		if(!vpcAttributesNode["NatIpAddress"].isNull())
			instancesObject.vpcAttributes.natIpAddress = vpcAttributesNode["NatIpAddress"].asString();
		if(!vpcAttributesNode["VSwitchId"].isNull())
			instancesObject.vpcAttributes.vSwitchId = vpcAttributesNode["VSwitchId"].asString();
			auto allPrivateIpAddress = vpcAttributesNode["PrivateIpAddress"]["IpAddress"];
			for (auto value : allPrivateIpAddress)
				instancesObject.vpcAttributes.privateIpAddress.push_back(value.asString());
		auto eipAddressNode = value["EipAddress"];
		if(!eipAddressNode["IsSupportUnassociate"].isNull())
			instancesObject.eipAddress.isSupportUnassociate = eipAddressNode["IsSupportUnassociate"].asString() == "true";
		if(!eipAddressNode["InternetChargeType"].isNull())
			instancesObject.eipAddress.internetChargeType = eipAddressNode["InternetChargeType"].asString();
		if(!eipAddressNode["IpAddress"].isNull())
			instancesObject.eipAddress.ipAddress = eipAddressNode["IpAddress"].asString();
		if(!eipAddressNode["Bandwidth"].isNull())
			instancesObject.eipAddress.bandwidth = std::stoi(eipAddressNode["Bandwidth"].asString());
		if(!eipAddressNode["AllocationId"].isNull())
			instancesObject.eipAddress.allocationId = eipAddressNode["AllocationId"].asString();
		auto hibernationOptionsNode = value["HibernationOptions"];
		if(!hibernationOptionsNode["Configured"].isNull())
			instancesObject.hibernationOptions.configured = hibernationOptionsNode["Configured"].asString() == "true";
		auto dedicatedHostAttributeNode = value["DedicatedHostAttribute"];
		if(!dedicatedHostAttributeNode["DedicatedHostId"].isNull())
			instancesObject.dedicatedHostAttribute.dedicatedHostId = dedicatedHostAttributeNode["DedicatedHostId"].asString();
		if(!dedicatedHostAttributeNode["DedicatedHostName"].isNull())
			instancesObject.dedicatedHostAttribute.dedicatedHostName = dedicatedHostAttributeNode["DedicatedHostName"].asString();
		if(!dedicatedHostAttributeNode["DedicatedHostClusterId"].isNull())
			instancesObject.dedicatedHostAttribute.dedicatedHostClusterId = dedicatedHostAttributeNode["DedicatedHostClusterId"].asString();
		auto ecsCapacityReservationAttrNode = value["EcsCapacityReservationAttr"];
		if(!ecsCapacityReservationAttrNode["CapacityReservationPreference"].isNull())
			instancesObject.ecsCapacityReservationAttr.capacityReservationPreference = ecsCapacityReservationAttrNode["CapacityReservationPreference"].asString();
		if(!ecsCapacityReservationAttrNode["CapacityReservationId"].isNull())
			instancesObject.ecsCapacityReservationAttr.capacityReservationId = ecsCapacityReservationAttrNode["CapacityReservationId"].asString();
		auto dedicatedInstanceAttributeNode = value["DedicatedInstanceAttribute"];
		if(!dedicatedInstanceAttributeNode["Affinity"].isNull())
			instancesObject.dedicatedInstanceAttribute.affinity = dedicatedInstanceAttributeNode["Affinity"].asString();
		if(!dedicatedInstanceAttributeNode["Tenancy"].isNull())
			instancesObject.dedicatedInstanceAttribute.tenancy = dedicatedInstanceAttributeNode["Tenancy"].asString();
		auto cpuOptionsNode = value["CpuOptions"];
		if(!cpuOptionsNode["Numa"].isNull())
			instancesObject.cpuOptions.numa = cpuOptionsNode["Numa"].asString();
		if(!cpuOptionsNode["CoreCount"].isNull())
			instancesObject.cpuOptions.coreCount = std::stoi(cpuOptionsNode["CoreCount"].asString());
		if(!cpuOptionsNode["ThreadsPerCore"].isNull())
			instancesObject.cpuOptions.threadsPerCore = std::stoi(cpuOptionsNode["ThreadsPerCore"].asString());
		if(!cpuOptionsNode["TopologyType"].isNull())
			instancesObject.cpuOptions.topologyType = cpuOptionsNode["TopologyType"].asString();
		if(!cpuOptionsNode["EnableVISST"].isNull())
			instancesObject.cpuOptions.enableVISST = cpuOptionsNode["EnableVISST"].asString() == "true";
		if(!cpuOptionsNode["TurboMode"].isNull())
			instancesObject.cpuOptions.turboMode = cpuOptionsNode["TurboMode"].asString();
		if(!cpuOptionsNode["EnableVRDT"].isNull())
			instancesObject.cpuOptions.enableVRDT = cpuOptionsNode["EnableVRDT"].asString() == "true";
		auto metadataOptionsNode = value["MetadataOptions"];
		if(!metadataOptionsNode["HttpEndpoint"].isNull())
			instancesObject.metadataOptions.httpEndpoint = metadataOptionsNode["HttpEndpoint"].asString();
		if(!metadataOptionsNode["HttpPutResponseHopLimit"].isNull())
			instancesObject.metadataOptions.httpPutResponseHopLimit = std::stoi(metadataOptionsNode["HttpPutResponseHopLimit"].asString());
		if(!metadataOptionsNode["HttpTokens"].isNull())
			instancesObject.metadataOptions.httpTokens = metadataOptionsNode["HttpTokens"].asString();
		auto imageOptionsNode = value["ImageOptions"];
		if(!imageOptionsNode["LoginAsNonRoot"].isNull())
			instancesObject.imageOptions.loginAsNonRoot = imageOptionsNode["LoginAsNonRoot"].asString() == "true";
		if(!imageOptionsNode["CurrentOSNVMeSupported"].isNull())
			instancesObject.imageOptions.currentOSNVMeSupported = imageOptionsNode["CurrentOSNVMeSupported"].asString() == "true";
		auto privateDnsNameOptionsNode = value["PrivateDnsNameOptions"];
		if(!privateDnsNameOptionsNode["EnableInstanceIdDnsARecord"].isNull())
			instancesObject.privateDnsNameOptions.enableInstanceIdDnsARecord = privateDnsNameOptionsNode["EnableInstanceIdDnsARecord"].asString() == "true";
		if(!privateDnsNameOptionsNode["EnableInstanceIdDnsAAAARecord"].isNull())
			instancesObject.privateDnsNameOptions.enableInstanceIdDnsAAAARecord = privateDnsNameOptionsNode["EnableInstanceIdDnsAAAARecord"].asString() == "true";
		if(!privateDnsNameOptionsNode["EnableIpDnsARecord"].isNull())
			instancesObject.privateDnsNameOptions.enableIpDnsARecord = privateDnsNameOptionsNode["EnableIpDnsARecord"].asString() == "true";
		if(!privateDnsNameOptionsNode["EnableIpDnsPtrRecord"].isNull())
			instancesObject.privateDnsNameOptions.enableIpDnsPtrRecord = privateDnsNameOptionsNode["EnableIpDnsPtrRecord"].asString() == "true";
		if(!privateDnsNameOptionsNode["HostnameType"].isNull())
			instancesObject.privateDnsNameOptions.hostnameType = privateDnsNameOptionsNode["HostnameType"].asString();
		auto additionalInfoNode = value["AdditionalInfo"];
		if(!additionalInfoNode["EnableHighDensityMode"].isNull())
			instancesObject.additionalInfo.enableHighDensityMode = additionalInfoNode["EnableHighDensityMode"].asString() == "true";
		auto allRdmaIpAddress = value["RdmaIpAddress"]["IpAddress"];
		for (auto value : allRdmaIpAddress)
			instancesObject.rdmaIpAddress.push_back(value.asString());
		auto allSecurityGroupIds = value["SecurityGroupIds"]["SecurityGroupId"];
		for (auto value : allSecurityGroupIds)
			instancesObject.securityGroupIds.push_back(value.asString());
		auto allPublicIpAddress = value["PublicIpAddress"]["IpAddress"];
		for (auto value : allPublicIpAddress)
			instancesObject.publicIpAddress.push_back(value.asString());
		auto allInnerIpAddress = value["InnerIpAddress"]["IpAddress"];
		for (auto value : allInnerIpAddress)
			instancesObject.innerIpAddress.push_back(value.asString());
		instances_.push_back(instancesObject);
	}
	if(!value["NextToken"].isNull())
		nextToken_ = value["NextToken"].asString();
	if(!value["PageSize"].isNull())
		pageSize_ = std::stoi(value["PageSize"].asString());
	if(!value["PageNumber"].isNull())
		pageNumber_ = std::stoi(value["PageNumber"].asString());
	if(!value["TotalCount"].isNull())
		totalCount_ = std::stoi(value["TotalCount"].asString());

}