diff --git a/CHANGELOG b/CHANGELOG index 0c42c8364..baf78e409 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +2020-12-04 Version: patch +- ReportInstancesStatus OpenAPI supports IssueCategory parameter. + 2020-12-03 Version: patch - Update DescribeScdnDomainCertificateInfo. diff --git a/ecs/CMakeLists.txt b/ecs/CMakeLists.txt index 72457dd66..4169045d3 100644 --- a/ecs/CMakeLists.txt +++ b/ecs/CMakeLists.txt @@ -361,6 +361,8 @@ set(ecs_public_header_model include/alibabacloud/ecs/model/DescribeSnapshotsResult.h include/alibabacloud/ecs/model/DescribeSnapshotsUsageRequest.h include/alibabacloud/ecs/model/DescribeSnapshotsUsageResult.h + include/alibabacloud/ecs/model/DescribeSpotAdviceRequest.h + include/alibabacloud/ecs/model/DescribeSpotAdviceResult.h include/alibabacloud/ecs/model/DescribeSpotPriceHistoryRequest.h include/alibabacloud/ecs/model/DescribeSpotPriceHistoryResult.h include/alibabacloud/ecs/model/DescribeStorageCapacityUnitsRequest.h @@ -966,6 +968,8 @@ set(ecs_src src/model/DescribeSnapshotsResult.cc src/model/DescribeSnapshotsUsageRequest.cc src/model/DescribeSnapshotsUsageResult.cc + src/model/DescribeSpotAdviceRequest.cc + src/model/DescribeSpotAdviceResult.cc src/model/DescribeSpotPriceHistoryRequest.cc src/model/DescribeSpotPriceHistoryResult.cc src/model/DescribeStorageCapacityUnitsRequest.cc diff --git a/ecs/include/alibabacloud/ecs/EcsClient.h b/ecs/include/alibabacloud/ecs/EcsClient.h index 9c3194463..2e0c6d3ba 100644 --- a/ecs/include/alibabacloud/ecs/EcsClient.h +++ b/ecs/include/alibabacloud/ecs/EcsClient.h @@ -362,6 +362,8 @@ #include "model/DescribeSnapshotsResult.h" #include "model/DescribeSnapshotsUsageRequest.h" #include "model/DescribeSnapshotsUsageResult.h" +#include "model/DescribeSpotAdviceRequest.h" +#include "model/DescribeSpotAdviceResult.h" #include "model/DescribeSpotPriceHistoryRequest.h" #include "model/DescribeSpotPriceHistoryResult.h" #include "model/DescribeStorageCapacityUnitsRequest.h" @@ -1143,6 +1145,9 @@ namespace AlibabaCloud typedef Outcome DescribeSnapshotsUsageOutcome; typedef std::future DescribeSnapshotsUsageOutcomeCallable; typedef std::function&)> DescribeSnapshotsUsageAsyncHandler; + typedef Outcome DescribeSpotAdviceOutcome; + typedef std::future DescribeSpotAdviceOutcomeCallable; + typedef std::function&)> DescribeSpotAdviceAsyncHandler; typedef Outcome DescribeSpotPriceHistoryOutcome; typedef std::future DescribeSpotPriceHistoryOutcomeCallable; typedef std::function&)> DescribeSpotPriceHistoryAsyncHandler; @@ -2051,6 +2056,9 @@ namespace AlibabaCloud DescribeSnapshotsUsageOutcome describeSnapshotsUsage(const Model::DescribeSnapshotsUsageRequest &request)const; void describeSnapshotsUsageAsync(const Model::DescribeSnapshotsUsageRequest& request, const DescribeSnapshotsUsageAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; DescribeSnapshotsUsageOutcomeCallable describeSnapshotsUsageCallable(const Model::DescribeSnapshotsUsageRequest& request) const; + DescribeSpotAdviceOutcome describeSpotAdvice(const Model::DescribeSpotAdviceRequest &request)const; + void describeSpotAdviceAsync(const Model::DescribeSpotAdviceRequest& request, const DescribeSpotAdviceAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; + DescribeSpotAdviceOutcomeCallable describeSpotAdviceCallable(const Model::DescribeSpotAdviceRequest& request) const; DescribeSpotPriceHistoryOutcome describeSpotPriceHistory(const Model::DescribeSpotPriceHistoryRequest &request)const; void describeSpotPriceHistoryAsync(const Model::DescribeSpotPriceHistoryRequest& request, const DescribeSpotPriceHistoryAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; DescribeSpotPriceHistoryOutcomeCallable describeSpotPriceHistoryCallable(const Model::DescribeSpotPriceHistoryRequest& request) const; diff --git a/ecs/include/alibabacloud/ecs/model/DescribeInvocationResultsResult.h b/ecs/include/alibabacloud/ecs/model/DescribeInvocationResultsResult.h index 570ac08ff..6ab98d56b 100644 --- a/ecs/include/alibabacloud/ecs/model/DescribeInvocationResultsResult.h +++ b/ecs/include/alibabacloud/ecs/model/DescribeInvocationResultsResult.h @@ -45,6 +45,7 @@ namespace AlibabaCloud int repeats; std::string invokeRecordStatus; std::string finishedTime; + std::string username; std::string output; std::string commandId; std::string errorCode; diff --git a/ecs/include/alibabacloud/ecs/model/DescribeInvocationsResult.h b/ecs/include/alibabacloud/ecs/model/DescribeInvocationsResult.h index 96ed5345e..0e40bc261 100644 --- a/ecs/include/alibabacloud/ecs/model/DescribeInvocationsResult.h +++ b/ecs/include/alibabacloud/ecs/model/DescribeInvocationsResult.h @@ -51,17 +51,18 @@ namespace AlibabaCloud std::string errorCode; std::string stopTime; }; - std::string commandContent; std::string invocationStatus; - std::string invokeStatus; std::string parameters; - std::string commandType; bool timed; + std::vector invokeInstances; + std::string commandContent; + std::string invokeStatus; + std::string commandType; + std::string username; std::string creationTime; std::string frequency; std::string commandId; std::string commandName; - std::vector invokeInstances; std::string invokeId; }; diff --git a/ecs/include/alibabacloud/ecs/model/DescribeSpotAdviceRequest.h b/ecs/include/alibabacloud/ecs/model/DescribeSpotAdviceRequest.h new file mode 100644 index 000000000..b3c353bb2 --- /dev/null +++ b/ecs/include/alibabacloud/ecs/model/DescribeSpotAdviceRequest.h @@ -0,0 +1,81 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ALIBABACLOUD_ECS_MODEL_DESCRIBESPOTADVICEREQUEST_H_ +#define ALIBABACLOUD_ECS_MODEL_DESCRIBESPOTADVICEREQUEST_H_ + +#include +#include +#include +#include + +namespace AlibabaCloud +{ + namespace Ecs + { + namespace Model + { + class ALIBABACLOUD_ECS_EXPORT DescribeSpotAdviceRequest : public RpcServiceRequest + { + + public: + DescribeSpotAdviceRequest(); + ~DescribeSpotAdviceRequest(); + + long getResourceOwnerId()const; + void setResourceOwnerId(long resourceOwnerId); + float getMemory()const; + void setMemory(float memory); + std::string getIoOptimized()const; + void setIoOptimized(const std::string& ioOptimized); + int getMinCores()const; + void setMinCores(int minCores); + std::string getNetworkType()const; + void setNetworkType(const std::string& networkType); + int getCores()const; + void setCores(int cores); + std::string getRegionId()const; + void setRegionId(const std::string& regionId); + std::string getResourceOwnerAccount()const; + void setResourceOwnerAccount(const std::string& resourceOwnerAccount); + std::string getOwnerAccount()const; + void setOwnerAccount(const std::string& ownerAccount); + long getOwnerId()const; + void setOwnerId(long ownerId); + std::string getZoneId()const; + void setZoneId(const std::string& zoneId); + float getMinMemory()const; + void setMinMemory(float minMemory); + + private: + long resourceOwnerId_; + float memory_; + std::string ioOptimized_; + int minCores_; + std::string networkType_; + int cores_; + std::string regionId_; + std::string resourceOwnerAccount_; + std::string ownerAccount_; + long ownerId_; + std::string zoneId_; + float minMemory_; + + }; + } + } +} +#endif // !ALIBABACLOUD_ECS_MODEL_DESCRIBESPOTADVICEREQUEST_H_ \ No newline at end of file diff --git a/ecs/include/alibabacloud/ecs/model/DescribeSpotAdviceResult.h b/ecs/include/alibabacloud/ecs/model/DescribeSpotAdviceResult.h new file mode 100644 index 000000000..43f9ac5ae --- /dev/null +++ b/ecs/include/alibabacloud/ecs/model/DescribeSpotAdviceResult.h @@ -0,0 +1,65 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ALIBABACLOUD_ECS_MODEL_DESCRIBESPOTADVICERESULT_H_ +#define ALIBABACLOUD_ECS_MODEL_DESCRIBESPOTADVICERESULT_H_ + +#include +#include +#include +#include +#include + +namespace AlibabaCloud +{ + namespace Ecs + { + namespace Model + { + class ALIBABACLOUD_ECS_EXPORT DescribeSpotAdviceResult : public ServiceResult + { + public: + struct AvailableSpotZone + { + struct AvailableSpotResource + { + std::string interruptRateDesc; + std::string instanceType; + float interruptionRate; + int averageSpotDiscount; + }; + std::string zoneId; + std::vector availableSpotResources; + }; + + + DescribeSpotAdviceResult(); + explicit DescribeSpotAdviceResult(const std::string &payload); + ~DescribeSpotAdviceResult(); + std::vector getAvailableSpotZones()const; + std::string getRegionId()const; + + protected: + void parse(const std::string &payload); + private: + std::vector availableSpotZones_; + std::string regionId_; + + }; + } + } +} +#endif // !ALIBABACLOUD_ECS_MODEL_DESCRIBESPOTADVICERESULT_H_ \ No newline at end of file diff --git a/ecs/include/alibabacloud/ecs/model/InvokeCommandRequest.h b/ecs/include/alibabacloud/ecs/model/InvokeCommandRequest.h index 2196f79f0..464fe34ae 100644 --- a/ecs/include/alibabacloud/ecs/model/InvokeCommandRequest.h +++ b/ecs/include/alibabacloud/ecs/model/InvokeCommandRequest.h @@ -55,6 +55,8 @@ namespace AlibabaCloud void setInstanceId(const std::vector& instanceId); std::map getParameters()const; void setParameters(const std::map& parameters); + std::string getUsername()const; + void setUsername(const std::string& username); private: long resourceOwnerId_; @@ -67,6 +69,7 @@ namespace AlibabaCloud long ownerId_; std::vector instanceId_; std::map parameters_; + std::string username_; }; } diff --git a/ecs/include/alibabacloud/ecs/model/ReportInstancesStatusRequest.h b/ecs/include/alibabacloud/ecs/model/ReportInstancesStatusRequest.h index 3b3119901..2fa1e4e01 100644 --- a/ecs/include/alibabacloud/ecs/model/ReportInstancesStatusRequest.h +++ b/ecs/include/alibabacloud/ecs/model/ReportInstancesStatusRequest.h @@ -43,6 +43,8 @@ namespace AlibabaCloud void setDescription(const std::string& description); std::string getStartTime()const; void setStartTime(const std::string& startTime); + std::string getIssueCategory()const; + void setIssueCategory(const std::string& issueCategory); std::string getRegionId()const; void setRegionId(const std::string& regionId); std::vector getDiskId()const; @@ -65,6 +67,7 @@ namespace AlibabaCloud long resourceOwnerId_; std::string description_; std::string startTime_; + std::string issueCategory_; std::string regionId_; std::vector diskId_; std::string resourceOwnerAccount_; diff --git a/ecs/include/alibabacloud/ecs/model/RunCommandRequest.h b/ecs/include/alibabacloud/ecs/model/RunCommandRequest.h index 898f8e301..aaa879e3f 100644 --- a/ecs/include/alibabacloud/ecs/model/RunCommandRequest.h +++ b/ecs/include/alibabacloud/ecs/model/RunCommandRequest.h @@ -71,6 +71,8 @@ namespace AlibabaCloud void setParameters(const std::map& parameters); bool getEnableParameter()const; void setEnableParameter(bool enableParameter); + std::string getUsername()const; + void setUsername(const std::string& username); private: long resourceOwnerId_; @@ -91,6 +93,7 @@ namespace AlibabaCloud std::string name_; std::map parameters_; bool enableParameter_; + std::string username_; }; } diff --git a/ecs/src/EcsClient.cc b/ecs/src/EcsClient.cc index e64210bdf..f5499b57e 100644 --- a/ecs/src/EcsClient.cc +++ b/ecs/src/EcsClient.cc @@ -31,21 +31,21 @@ EcsClient::EcsClient(const Credentials &credentials, const ClientConfiguration & RpcServiceClient(SERVICE_NAME, std::make_shared(credentials), configuration) { auto locationClient = std::make_shared(credentials, configuration); - endpointProvider_ = std::make_shared(locationClient, configuration.regionId(), SERVICE_NAME, "ecs"); + endpointProvider_ = std::make_shared(locationClient, configuration.regionId(), SERVICE_NAME, ""); } EcsClient::EcsClient(const std::shared_ptr& credentialsProvider, const ClientConfiguration & configuration) : RpcServiceClient(SERVICE_NAME, credentialsProvider, configuration) { auto locationClient = std::make_shared(credentialsProvider, configuration); - endpointProvider_ = std::make_shared(locationClient, configuration.regionId(), SERVICE_NAME, "ecs"); + endpointProvider_ = std::make_shared(locationClient, configuration.regionId(), SERVICE_NAME, ""); } EcsClient::EcsClient(const std::string & accessKeyId, const std::string & accessKeySecret, const ClientConfiguration & configuration) : RpcServiceClient(SERVICE_NAME, std::make_shared(accessKeyId, accessKeySecret), configuration) { auto locationClient = std::make_shared(accessKeyId, accessKeySecret, configuration); - endpointProvider_ = std::make_shared(locationClient, configuration.regionId(), SERVICE_NAME, "ecs"); + endpointProvider_ = std::make_shared(locationClient, configuration.regionId(), SERVICE_NAME, ""); } EcsClient::~EcsClient() @@ -6171,6 +6171,42 @@ EcsClient::DescribeSnapshotsUsageOutcomeCallable EcsClient::describeSnapshotsUsa return task->get_future(); } +EcsClient::DescribeSpotAdviceOutcome EcsClient::describeSpotAdvice(const DescribeSpotAdviceRequest &request) const +{ + auto endpointOutcome = endpointProvider_->getEndpoint(); + if (!endpointOutcome.isSuccess()) + return DescribeSpotAdviceOutcome(endpointOutcome.error()); + + auto outcome = makeRequest(endpointOutcome.result(), request); + + if (outcome.isSuccess()) + return DescribeSpotAdviceOutcome(DescribeSpotAdviceResult(outcome.result())); + else + return DescribeSpotAdviceOutcome(outcome.error()); +} + +void EcsClient::describeSpotAdviceAsync(const DescribeSpotAdviceRequest& request, const DescribeSpotAdviceAsyncHandler& handler, const std::shared_ptr& context) const +{ + auto fn = [this, request, handler, context]() + { + handler(this, request, describeSpotAdvice(request), context); + }; + + asyncExecute(new Runnable(fn)); +} + +EcsClient::DescribeSpotAdviceOutcomeCallable EcsClient::describeSpotAdviceCallable(const DescribeSpotAdviceRequest &request) const +{ + auto task = std::make_shared>( + [this, request]() + { + return this->describeSpotAdvice(request); + }); + + asyncExecute(new Runnable([task]() { (*task)(); })); + return task->get_future(); +} + EcsClient::DescribeSpotPriceHistoryOutcome EcsClient::describeSpotPriceHistory(const DescribeSpotPriceHistoryRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); diff --git a/ecs/src/model/DescribeInvocationResultsResult.cc b/ecs/src/model/DescribeInvocationResultsResult.cc index a7a498e07..a12516507 100644 --- a/ecs/src/model/DescribeInvocationResultsResult.cc +++ b/ecs/src/model/DescribeInvocationResultsResult.cc @@ -78,6 +78,8 @@ void DescribeInvocationResultsResult::parse(const std::string &payload) invocationResultObject.errorCode = invocationNodeInvocationResultsInvocationResult["ErrorCode"].asString(); if(!invocationNodeInvocationResultsInvocationResult["ErrorInfo"].isNull()) invocationResultObject.errorInfo = invocationNodeInvocationResultsInvocationResult["ErrorInfo"].asString(); + if(!invocationNodeInvocationResultsInvocationResult["Username"].isNull()) + invocationResultObject.username = invocationNodeInvocationResultsInvocationResult["Username"].asString(); invocation_.invocationResults.push_back(invocationResultObject); } diff --git a/ecs/src/model/DescribeInvocationsResult.cc b/ecs/src/model/DescribeInvocationsResult.cc index f5d0d41b8..1114b58e7 100644 --- a/ecs/src/model/DescribeInvocationsResult.cc +++ b/ecs/src/model/DescribeInvocationsResult.cc @@ -65,6 +65,8 @@ void DescribeInvocationsResult::parse(const std::string &payload) invocationsObject.invocationStatus = valueInvocationsInvocation["InvocationStatus"].asString(); if(!valueInvocationsInvocation["Parameters"].isNull()) invocationsObject.parameters = valueInvocationsInvocation["Parameters"].asString(); + if(!valueInvocationsInvocation["Username"].isNull()) + invocationsObject.username = valueInvocationsInvocation["Username"].asString(); auto allInvokeInstancesNode = valueInvocationsInvocation["InvokeInstances"]["InvokeInstance"]; for (auto valueInvocationsInvocationInvokeInstancesInvokeInstance : allInvokeInstancesNode) { diff --git a/ecs/src/model/DescribeSpotAdviceRequest.cc b/ecs/src/model/DescribeSpotAdviceRequest.cc new file mode 100644 index 000000000..b565a9e98 --- /dev/null +++ b/ecs/src/model/DescribeSpotAdviceRequest.cc @@ -0,0 +1,161 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +using AlibabaCloud::Ecs::Model::DescribeSpotAdviceRequest; + +DescribeSpotAdviceRequest::DescribeSpotAdviceRequest() : + RpcServiceRequest("ecs", "2014-05-26", "DescribeSpotAdvice") +{ + setMethod(HttpRequest::Method::Post); +} + +DescribeSpotAdviceRequest::~DescribeSpotAdviceRequest() +{} + +long DescribeSpotAdviceRequest::getResourceOwnerId()const +{ + return resourceOwnerId_; +} + +void DescribeSpotAdviceRequest::setResourceOwnerId(long resourceOwnerId) +{ + resourceOwnerId_ = resourceOwnerId; + setParameter("ResourceOwnerId", std::to_string(resourceOwnerId)); +} + +float DescribeSpotAdviceRequest::getMemory()const +{ + return memory_; +} + +void DescribeSpotAdviceRequest::setMemory(float memory) +{ + memory_ = memory; + setParameter("Memory", std::to_string(memory)); +} + +std::string DescribeSpotAdviceRequest::getIoOptimized()const +{ + return ioOptimized_; +} + +void DescribeSpotAdviceRequest::setIoOptimized(const std::string& ioOptimized) +{ + ioOptimized_ = ioOptimized; + setParameter("IoOptimized", ioOptimized); +} + +int DescribeSpotAdviceRequest::getMinCores()const +{ + return minCores_; +} + +void DescribeSpotAdviceRequest::setMinCores(int minCores) +{ + minCores_ = minCores; + setParameter("MinCores", std::to_string(minCores)); +} + +std::string DescribeSpotAdviceRequest::getNetworkType()const +{ + return networkType_; +} + +void DescribeSpotAdviceRequest::setNetworkType(const std::string& networkType) +{ + networkType_ = networkType; + setParameter("NetworkType", networkType); +} + +int DescribeSpotAdviceRequest::getCores()const +{ + return cores_; +} + +void DescribeSpotAdviceRequest::setCores(int cores) +{ + cores_ = cores; + setParameter("Cores", std::to_string(cores)); +} + +std::string DescribeSpotAdviceRequest::getRegionId()const +{ + return regionId_; +} + +void DescribeSpotAdviceRequest::setRegionId(const std::string& regionId) +{ + regionId_ = regionId; + setParameter("RegionId", regionId); +} + +std::string DescribeSpotAdviceRequest::getResourceOwnerAccount()const +{ + return resourceOwnerAccount_; +} + +void DescribeSpotAdviceRequest::setResourceOwnerAccount(const std::string& resourceOwnerAccount) +{ + resourceOwnerAccount_ = resourceOwnerAccount; + setParameter("ResourceOwnerAccount", resourceOwnerAccount); +} + +std::string DescribeSpotAdviceRequest::getOwnerAccount()const +{ + return ownerAccount_; +} + +void DescribeSpotAdviceRequest::setOwnerAccount(const std::string& ownerAccount) +{ + ownerAccount_ = ownerAccount; + setParameter("OwnerAccount", ownerAccount); +} + +long DescribeSpotAdviceRequest::getOwnerId()const +{ + return ownerId_; +} + +void DescribeSpotAdviceRequest::setOwnerId(long ownerId) +{ + ownerId_ = ownerId; + setParameter("OwnerId", std::to_string(ownerId)); +} + +std::string DescribeSpotAdviceRequest::getZoneId()const +{ + return zoneId_; +} + +void DescribeSpotAdviceRequest::setZoneId(const std::string& zoneId) +{ + zoneId_ = zoneId; + setParameter("ZoneId", zoneId); +} + +float DescribeSpotAdviceRequest::getMinMemory()const +{ + return minMemory_; +} + +void DescribeSpotAdviceRequest::setMinMemory(float minMemory) +{ + minMemory_ = minMemory; + setParameter("MinMemory", std::to_string(minMemory)); +} + diff --git a/ecs/src/model/DescribeSpotAdviceResult.cc b/ecs/src/model/DescribeSpotAdviceResult.cc new file mode 100644 index 000000000..4db6ba0d1 --- /dev/null +++ b/ecs/src/model/DescribeSpotAdviceResult.cc @@ -0,0 +1,78 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +using namespace AlibabaCloud::Ecs; +using namespace AlibabaCloud::Ecs::Model; + +DescribeSpotAdviceResult::DescribeSpotAdviceResult() : + ServiceResult() +{} + +DescribeSpotAdviceResult::DescribeSpotAdviceResult(const std::string &payload) : + ServiceResult() +{ + parse(payload); +} + +DescribeSpotAdviceResult::~DescribeSpotAdviceResult() +{} + +void DescribeSpotAdviceResult::parse(const std::string &payload) +{ + Json::Reader reader; + Json::Value value; + reader.parse(payload, value); + setRequestId(value["RequestId"].asString()); + auto allAvailableSpotZonesNode = value["AvailableSpotZones"]["AvailableSpotZone"]; + for (auto valueAvailableSpotZonesAvailableSpotZone : allAvailableSpotZonesNode) + { + AvailableSpotZone availableSpotZonesObject; + if(!valueAvailableSpotZonesAvailableSpotZone["ZoneId"].isNull()) + availableSpotZonesObject.zoneId = valueAvailableSpotZonesAvailableSpotZone["ZoneId"].asString(); + auto allAvailableSpotResourcesNode = valueAvailableSpotZonesAvailableSpotZone["AvailableSpotResources"]["AvailableSpotResource"]; + for (auto valueAvailableSpotZonesAvailableSpotZoneAvailableSpotResourcesAvailableSpotResource : allAvailableSpotResourcesNode) + { + AvailableSpotZone::AvailableSpotResource availableSpotResourcesObject; + if(!valueAvailableSpotZonesAvailableSpotZoneAvailableSpotResourcesAvailableSpotResource["InstanceType"].isNull()) + availableSpotResourcesObject.instanceType = valueAvailableSpotZonesAvailableSpotZoneAvailableSpotResourcesAvailableSpotResource["InstanceType"].asString(); + if(!valueAvailableSpotZonesAvailableSpotZoneAvailableSpotResourcesAvailableSpotResource["InterruptionRate"].isNull()) + availableSpotResourcesObject.interruptionRate = std::stof(valueAvailableSpotZonesAvailableSpotZoneAvailableSpotResourcesAvailableSpotResource["InterruptionRate"].asString()); + if(!valueAvailableSpotZonesAvailableSpotZoneAvailableSpotResourcesAvailableSpotResource["InterruptRateDesc"].isNull()) + availableSpotResourcesObject.interruptRateDesc = valueAvailableSpotZonesAvailableSpotZoneAvailableSpotResourcesAvailableSpotResource["InterruptRateDesc"].asString(); + if(!valueAvailableSpotZonesAvailableSpotZoneAvailableSpotResourcesAvailableSpotResource["AverageSpotDiscount"].isNull()) + availableSpotResourcesObject.averageSpotDiscount = std::stoi(valueAvailableSpotZonesAvailableSpotZoneAvailableSpotResourcesAvailableSpotResource["AverageSpotDiscount"].asString()); + availableSpotZonesObject.availableSpotResources.push_back(availableSpotResourcesObject); + } + availableSpotZones_.push_back(availableSpotZonesObject); + } + if(!value["RegionId"].isNull()) + regionId_ = value["RegionId"].asString(); + +} + +std::vector DescribeSpotAdviceResult::getAvailableSpotZones()const +{ + return availableSpotZones_; +} + +std::string DescribeSpotAdviceResult::getRegionId()const +{ + return regionId_; +} + diff --git a/ecs/src/model/InvokeCommandRequest.cc b/ecs/src/model/InvokeCommandRequest.cc index a6cba413a..1752b52d3 100644 --- a/ecs/src/model/InvokeCommandRequest.cc +++ b/ecs/src/model/InvokeCommandRequest.cc @@ -139,3 +139,14 @@ void InvokeCommandRequest::setParameters(const std::map