Browse Source

Add no data alarm processing.

sdk-team 4 years ago
parent
commit
1044402e1d
37 changed files with 497 additions and 252 deletions
  1. 3 0
      CHANGELOG
  2. 1 1
      VERSION
  3. 2 0
      cms/include/alibabacloud/cms/model/CreateDynamicTagGroupResult.h
  4. 5 3
      cms/include/alibabacloud/cms/model/CreateGroupMetricRulesRequest.h
  5. 1 1
      cms/include/alibabacloud/cms/model/CreateGroupMetricRulesResult.h
  6. 2 0
      cms/include/alibabacloud/cms/model/CreateMonitorGroupByResourceGroupIdResult.h
  7. 19 0
      cms/include/alibabacloud/cms/model/DescribeAlertLogListResult.h
  8. 0 1
      cms/include/alibabacloud/cms/model/DescribeExporterOutputListResult.h
  9. 1 1
      cms/include/alibabacloud/cms/model/DescribeHostAvailabilityListResult.h
  10. 1 1
      cms/include/alibabacloud/cms/model/DescribeMetricMetaListResult.h
  11. 21 2
      cms/include/alibabacloud/cms/model/DescribeMetricRuleListResult.h
  12. 7 0
      cms/include/alibabacloud/cms/model/DescribeMonitorResourceQuotaAttributeResult.h
  13. 15 12
      cms/include/alibabacloud/cms/model/DescribeSiteMonitorAttributeResult.h
  14. 2 0
      cms/include/alibabacloud/cms/model/DescribeSiteMonitorISPCityListResult.h
  15. 4 1
      cms/include/alibabacloud/cms/model/DescribeSiteMonitorListResult.h
  16. 6 0
      cms/include/alibabacloud/cms/model/PutGroupMetricRuleRequest.h
  17. 12 0
      cms/include/alibabacloud/cms/model/PutResourceMetricRuleRequest.h
  18. 6 3
      cms/include/alibabacloud/cms/model/PutResourceMetricRulesRequest.h
  19. 7 0
      cms/src/model/CreateDynamicTagGroupResult.cc
  20. 5 3
      cms/src/model/CreateGroupMetricRulesRequest.cc
  21. 8 8
      cms/src/model/CreateGroupMetricRulesResult.cc
  22. 7 0
      cms/src/model/CreateMonitorGroupByResourceGroupIdResult.cc
  23. 28 0
      cms/src/model/DescribeAlertLogListResult.cc
  24. 0 2
      cms/src/model/DescribeExporterOutputListResult.cc
  25. 28 28
      cms/src/model/DescribeHostAvailabilityListResult.cc
  26. 10 10
      cms/src/model/DescribeMetricMetaListResult.cc
  27. 73 44
      cms/src/model/DescribeMetricRuleListResult.cc
  28. 11 4
      cms/src/model/DescribeMonitorResourceQuotaAttributeResult.cc
  29. 66 60
      cms/src/model/DescribeSiteMonitorAttributeResult.cc
  30. 22 18
      cms/src/model/DescribeSiteMonitorISPCityListResult.cc
  31. 46 40
      cms/src/model/DescribeSiteMonitorListResult.cc
  32. 22 0
      cms/src/model/PutGroupMetricRuleRequest.cc
  33. 2 2
      cms/src/model/PutGroupMetricRuleResult.cc
  34. 44 0
      cms/src/model/PutResourceMetricRuleRequest.cc
  35. 2 2
      cms/src/model/PutResourceMetricRuleResult.cc
  36. 6 3
      cms/src/model/PutResourceMetricRulesRequest.cc
  37. 2 2
      cms/src/model/PutResourceMetricRulesResult.cc

+ 3 - 0
CHANGELOG

@@ -1,3 +1,6 @@
+2021-10-28 Version: 1.36.914
+- Add no data alarm processing.
+
 2021-10-28 Version: 1.36.913
 - Updated tag api.
 - Updated DescribeTask api to get relatedResourceId info.

+ 1 - 1
VERSION

@@ -1 +1 @@
-1.36.913
+1.36.914

+ 2 - 0
cms/include/alibabacloud/cms/model/CreateDynamicTagGroupResult.h

@@ -38,6 +38,7 @@ namespace AlibabaCloud
 				explicit CreateDynamicTagGroupResult(const std::string &payload);
 				~CreateDynamicTagGroupResult();
 				std::string getMessage()const;
+				std::string getId()const;
 				std::string getCode()const;
 				bool getSuccess()const;
 
@@ -45,6 +46,7 @@ namespace AlibabaCloud
 				void parse(const std::string &payload);
 			private:
 				std::string message_;
+				std::string id_;
 				std::string code_;
 				bool success_;
 

+ 5 - 3
cms/include/alibabacloud/cms/model/CreateGroupMetricRulesRequest.h

@@ -39,22 +39,24 @@ namespace AlibabaCloud
 					std::string escalationsInfoStatistics;
 					std::string effectiveInterval;
 					std::string escalationsInfoComparisonOperator;
+					std::string noDataPolicy;
 					std::string noEffectiveInterval;
 					std::string emailSubject;
 					int silenceTime;
 					std::string metricName;
 					int escalationsWarnTimes;
-					std::string period;
+					std::string compositeExpression;
 					std::string escalationsWarnThreshold;
+					std::string period;
 					std::string escalationsCriticalStatistics;
 					int escalationsInfoTimes;
 					int escalationsCriticalTimes;
-					std::string escalationsWarnStatistics;
 					std::string escalationsInfoThreshold;
+					std::string escalationsWarnStatistics;
 					std::string _namespace;
 					std::string interval;
-					std::string category;
 					std::string ruleId;
+					std::string category;
 					std::string escalationsCriticalComparisonOperator;
 					std::string escalationsCriticalThreshold;
 					std::string dimensions;

+ 1 - 1
cms/include/alibabacloud/cms/model/CreateGroupMetricRulesResult.h

@@ -37,8 +37,8 @@ namespace AlibabaCloud
 					std::string message;
 					std::string ruleId;
 					int code;
-					std::string ruleName;
 					bool success;
+					std::string ruleName;
 				};
 
 

+ 2 - 0
cms/include/alibabacloud/cms/model/CreateMonitorGroupByResourceGroupIdResult.h

@@ -38,6 +38,7 @@ namespace AlibabaCloud
 				explicit CreateMonitorGroupByResourceGroupIdResult(const std::string &payload);
 				~CreateMonitorGroupByResourceGroupIdResult();
 				std::string getMessage()const;
+				long getId()const;
 				std::string getCode()const;
 				bool getSuccess()const;
 
@@ -45,6 +46,7 @@ namespace AlibabaCloud
 				void parse(const std::string &payload);
 			private:
 				std::string message_;
+				long id_;
 				std::string code_;
 				bool success_;
 

+ 19 - 0
cms/include/alibabacloud/cms/model/DescribeAlertLogListResult.h

@@ -34,6 +34,24 @@ namespace AlibabaCloud
 			public:
 				struct Alarm
 				{
+					struct SendDetail
+					{
+						struct ChannelResult
+						{
+							struct Result
+							{
+								std::string requestId;
+								std::vector<std::string> notifyTargetList;
+								std::string code;
+								std::string detail;
+								bool success;
+							};
+							std::vector<ChannelResult::Result> resultList;
+							std::string channel;
+						};
+						std::vector<ChannelResult> channelResultList;
+						std::string resultCode;
+					};
 					struct Escalation
 					{
 						std::string expression;
@@ -65,6 +83,7 @@ namespace AlibabaCloud
 					std::string product;
 					std::string metricName;
 					std::vector<std::string> contactSMSList;
+					SendDetail sendDetail;
 					std::string ruleName;
 					std::vector<std::string> contactGroups;
 					std::vector<std::string> dingdingWebhookList;

+ 0 - 1
cms/include/alibabacloud/cms/model/DescribeExporterOutputListResult.h

@@ -37,7 +37,6 @@ namespace AlibabaCloud
 					struct ConfigJson
 					{
 						std::string project;
-						std::string as;
 						std::string endpoint;
 						std::string logstore;
 						std::string ak;

+ 1 - 1
cms/include/alibabacloud/cms/model/DescribeHostAvailabilityListResult.h

@@ -55,8 +55,8 @@ namespace AlibabaCloud
 							std::string _operator;
 							std::string aggregate;
 						};
-						int notifyType;
 						int silenceTime;
+						int notifyType;
 						int endTime;
 						int startTime;
 						std::string webHook;

+ 1 - 1
cms/include/alibabacloud/cms/model/DescribeMetricMetaListResult.h

@@ -38,8 +38,8 @@ namespace AlibabaCloud
 					std::string periods;
 					std::string description;
 					std::string dimensions;
-					std::string _namespace;
 					std::string labels;
+					std::string _namespace;
 					std::string unit;
 					std::string statistics;
 				};

+ 21 - 2
cms/include/alibabacloud/cms/model/DescribeMetricRuleListResult.h

@@ -64,23 +64,42 @@ namespace AlibabaCloud
 						Info info;
 						Warn warn;
 					};
+					struct CompositeExpression
+					{
+						struct ExpressionListItem
+						{
+							std::string metricName;
+							std::string comparisonOperator;
+							int period;
+							std::string id;
+							std::string statistics;
+							std::string threshold;
+						};
+						int times;
+						std::string expressionRaw;
+						std::string level;
+						std::string expressionListJoin;
+						std::vector<ExpressionListItem> expressionList;
+					};
 					std::string groupName;
-					std::string noEffectiveInterval;
 					int silenceTime;
 					std::string contactGroups;
+					std::string noEffectiveInterval;
 					std::string groupBy;
 					std::string mailSubject;
-					std::string ruleId;
 					std::string sourceType;
+					std::string ruleId;
 					std::string period;
 					std::string dimensions;
 					std::string _namespace;
 					std::string effectiveInterval;
+					std::string noDataPolicy;
 					std::string alertState;
 					std::string groupId;
 					std::string metricName;
 					Escalations escalations;
 					bool enableState;
+					CompositeExpression compositeExpression;
 					std::string webhook;
 					std::string resources;
 					std::string ruleName;

+ 7 - 0
cms/include/alibabacloud/cms/model/DescribeMonitorResourceQuotaAttributeResult.h

@@ -93,6 +93,12 @@ namespace AlibabaCloud
 						std::string instanceId;
 						std::string suitInfo;
 					};
+					struct NAAM
+					{
+						std::string instanceId;
+						std::string suitInfo;
+						std::string effectTime;
+					};
 					SiteMonitorOperatorProbe siteMonitorOperatorProbe;
 					std::string instanceId;
 					LogMonitor logMonitor;
@@ -103,6 +109,7 @@ namespace AlibabaCloud
 					SiteMonitorTask siteMonitorTask;
 					SMS sMS;
 					Api api;
+					NAAM nAAM;
 					SiteMonitorEcsProbe siteMonitorEcsProbe;
 					std::string expireTime;
 					CustomMonitor customMonitor;

+ 15 - 12
cms/include/alibabacloud/cms/model/DescribeSiteMonitorAttributeResult.h

@@ -36,42 +36,45 @@ namespace AlibabaCloud
 				{
 					struct OptionJson
 					{
-						std::string cookie;
-						int ping_num;
 						std::string ipv6_task;
-						bool proxy_protocol;
+						int ping_num;
 						bool unfollow_redirect;
 						long traceroute;
-						float failure_rate;
 						int port;
+						std::string expect_value;
+						std::string http_method;
+						std::string response_content;
+						long attempts;
+						std::string dns_type;
+						std::string protocol;
+						std::string password;
+						std::string cookie;
+						bool enable_operator_dns;
+						bool proxy_protocol;
+						float failure_rate;
 						int match_rule;
 						std::string acceptable_response_code;
 						std::string response_format;
-						std::string expect_value;
-						std::string http_method;
 						long time_out;
 						bool cert_verify;
 						std::string header;
-						std::string response_content;
 						std::string username;
 						int authentication;
 						std::string request_content;
 						std::string dns_server;
-						std::string dns_type;
 						std::string request_format;
-						std::string password;
 					};
 					struct IspCity
 					{
 						std::string ispName;
 						std::string isp;
-						std::string cityName;
 						std::string city;
+						std::string cityName;
 					};
 					OptionJson optionJson;
 					std::string taskId;
-					std::string address;
 					std::string endTime;
+					std::string address;
 					std::string taskName;
 					std::string taskType;
 					std::vector<IspCity> ispCities;
@@ -82,8 +85,8 @@ namespace AlibabaCloud
 				{
 					std::string comparisonOperator;
 					std::string ruleId;
-					std::string period;
 					std::string evaluationCount;
+					std::string period;
 					std::string dimensions;
 					std::string _namespace;
 					std::string statistics;

+ 2 - 0
cms/include/alibabacloud/cms/model/DescribeSiteMonitorISPCityListResult.h

@@ -35,6 +35,7 @@ namespace AlibabaCloud
 				struct IspCity
 				{
 					std::string iPV4ProbeCount;
+					std::string areazh_CN;
 					std::string isp;
 					std::string regionzh_CN;
 					std::string regionen;
@@ -45,6 +46,7 @@ namespace AlibabaCloud
 					std::string ispNameen;
 					std::string cityNamezh_CN;
 					std::string aPIProbeCount;
+					std::string areaen;
 					std::string cityNameen;
 					std::string countryzh_CN;
 					std::string region;

+ 4 - 1
cms/include/alibabacloud/cms/model/DescribeSiteMonitorListResult.h

@@ -38,6 +38,7 @@ namespace AlibabaCloud
 					{
 						std::string cookie;
 						int ping_num;
+						bool enable_operator_dns;
 						long traceroute;
 						float failure_rate;
 						int port;
@@ -50,16 +51,18 @@ namespace AlibabaCloud
 						std::string header;
 						std::string response_content;
 						std::string username;
+						long attempts;
 						int authentication;
 						std::string request_content;
 						std::string dns_server;
 						std::string dns_type;
 						std::string request_format;
+						std::string protocol;
 						std::string password;
 					};
 					std::string taskId;
-					std::string address;
 					std::string endTime;
+					std::string address;
 					OptionsJson optionsJson;
 					std::string taskName;
 					std::string taskType;

+ 6 - 0
cms/include/alibabacloud/cms/model/PutGroupMetricRuleRequest.h

@@ -47,6 +47,8 @@ namespace AlibabaCloud
 				void setEffectiveInterval(const std::string& effectiveInterval);
 				std::string getEscalationsInfoComparisonOperator()const;
 				void setEscalationsInfoComparisonOperator(const std::string& escalationsInfoComparisonOperator);
+				std::string getNoDataPolicy()const;
+				void setNoDataPolicy(const std::string& noDataPolicy);
 				std::string getNoEffectiveInterval()const;
 				void setNoEffectiveInterval(const std::string& noEffectiveInterval);
 				std::string getEmailSubject()const;
@@ -57,6 +59,8 @@ namespace AlibabaCloud
 				void setMetricName(const std::string& metricName);
 				int getEscalationsWarnTimes()const;
 				void setEscalationsWarnTimes(int escalationsWarnTimes);
+				Struct getCompositeExpression()const;
+				void setCompositeExpression(const Struct& compositeExpression);
 				std::string getPeriod()const;
 				void setPeriod(const std::string& period);
 				std::string getEscalationsWarnThreshold()const;
@@ -99,11 +103,13 @@ namespace AlibabaCloud
 				std::string escalationsInfoStatistics_;
 				std::string effectiveInterval_;
 				std::string escalationsInfoComparisonOperator_;
+				std::string noDataPolicy_;
 				std::string noEffectiveInterval_;
 				std::string emailSubject_;
 				int silenceTime_;
 				std::string metricName_;
 				int escalationsWarnTimes_;
+				Struct compositeExpression_;
 				std::string period_;
 				std::string escalationsWarnThreshold_;
 				std::string contactGroups_;

+ 12 - 0
cms/include/alibabacloud/cms/model/PutResourceMetricRuleRequest.h

@@ -47,6 +47,8 @@ namespace AlibabaCloud
 				void setEffectiveInterval(const std::string& effectiveInterval);
 				std::string getEscalationsInfoComparisonOperator()const;
 				void setEscalationsInfoComparisonOperator(const std::string& escalationsInfoComparisonOperator);
+				std::string getNoDataPolicy()const;
+				void setNoDataPolicy(const std::string& noDataPolicy);
 				std::string getNoEffectiveInterval()const;
 				void setNoEffectiveInterval(const std::string& noEffectiveInterval);
 				std::string getEmailSubject()const;
@@ -57,6 +59,8 @@ namespace AlibabaCloud
 				void setMetricName(const std::string& metricName);
 				int getEscalationsWarnTimes()const;
 				void setEscalationsWarnTimes(int escalationsWarnTimes);
+				Struct getCompositeExpression()const;
+				void setCompositeExpression(const Struct& compositeExpression);
 				std::string getPeriod()const;
 				void setPeriod(const std::string& period);
 				std::string getEscalationsWarnThreshold()const;
@@ -65,12 +69,16 @@ namespace AlibabaCloud
 				void setContactGroups(const std::string& contactGroups);
 				std::string getEscalationsCriticalStatistics()const;
 				void setEscalationsCriticalStatistics(const std::string& escalationsCriticalStatistics);
+				std::string getGroupId()const;
+				void setGroupId(const std::string& groupId);
 				std::string getResources()const;
 				void setResources(const std::string& resources);
 				int getEscalationsInfoTimes()const;
 				void setEscalationsInfoTimes(int escalationsInfoTimes);
 				std::string getGroupBy()const;
 				void setGroupBy(const std::string& groupBy);
+				std::string getGroupName()const;
+				void setGroupName(const std::string& groupName);
 				int getEscalationsCriticalTimes()const;
 				void setEscalationsCriticalTimes(int escalationsCriticalTimes);
 				std::string getEscalationsWarnStatistics()const;
@@ -95,18 +103,22 @@ namespace AlibabaCloud
 				std::string escalationsInfoStatistics_;
 				std::string effectiveInterval_;
 				std::string escalationsInfoComparisonOperator_;
+				std::string noDataPolicy_;
 				std::string noEffectiveInterval_;
 				std::string emailSubject_;
 				int silenceTime_;
 				std::string metricName_;
 				int escalationsWarnTimes_;
+				Struct compositeExpression_;
 				std::string period_;
 				std::string escalationsWarnThreshold_;
 				std::string contactGroups_;
 				std::string escalationsCriticalStatistics_;
+				std::string groupId_;
 				std::string resources_;
 				int escalationsInfoTimes_;
 				std::string groupBy_;
+				std::string groupName_;
 				int escalationsCriticalTimes_;
 				std::string escalationsWarnStatistics_;
 				std::string escalationsInfoThreshold_;

+ 6 - 3
cms/include/alibabacloud/cms/model/PutResourceMetricRulesRequest.h

@@ -39,20 +39,23 @@ namespace AlibabaCloud
 					std::string escalationsInfoStatistics;
 					std::string effectiveInterval;
 					std::string escalationsInfoComparisonOperator;
+					std::string noDataPolicy;
 					std::string noEffectiveInterval;
 					std::string emailSubject;
 					int silenceTime;
 					std::string metricName;
 					int escalationsWarnTimes;
-					std::string period;
+					std::string compositeExpression;
 					std::string escalationsWarnThreshold;
+					std::string period;
 					std::string contactGroups;
 					std::string escalationsCriticalStatistics;
-					std::string resources;
+					std::string groupId;
 					int escalationsInfoTimes;
+					std::string resources;
 					int escalationsCriticalTimes;
-					std::string escalationsWarnStatistics;
 					std::string escalationsInfoThreshold;
+					std::string escalationsWarnStatistics;
 					std::string _namespace;
 					std::string interval;
 					std::string ruleId;

+ 7 - 0
cms/src/model/CreateDynamicTagGroupResult.cc

@@ -45,6 +45,8 @@ void CreateDynamicTagGroupResult::parse(const std::string &payload)
 		message_ = value["Message"].asString();
 	if(!value["Success"].isNull())
 		success_ = value["Success"].asString() == "true";
+	if(!value["Id"].isNull())
+		id_ = value["Id"].asString();
 
 }
 
@@ -53,6 +55,11 @@ std::string CreateDynamicTagGroupResult::getMessage()const
 	return message_;
 }
 
+std::string CreateDynamicTagGroupResult::getId()const
+{
+	return id_;
+}
+
 std::string CreateDynamicTagGroupResult::getCode()const
 {
 	return code_;

+ 5 - 3
cms/src/model/CreateGroupMetricRulesRequest.cc

@@ -55,22 +55,24 @@ void CreateGroupMetricRulesRequest::setGroupMetricRules(const std::vector<GroupM
 		setParameter(groupMetricRulesObjStr + ".EscalationsInfoStatistics", groupMetricRulesObj.escalationsInfoStatistics);
 		setParameter(groupMetricRulesObjStr + ".EffectiveInterval", groupMetricRulesObj.effectiveInterval);
 		setParameter(groupMetricRulesObjStr + ".EscalationsInfoComparisonOperator", groupMetricRulesObj.escalationsInfoComparisonOperator);
+		setParameter(groupMetricRulesObjStr + ".NoDataPolicy", groupMetricRulesObj.noDataPolicy);
 		setParameter(groupMetricRulesObjStr + ".NoEffectiveInterval", groupMetricRulesObj.noEffectiveInterval);
 		setParameter(groupMetricRulesObjStr + ".EmailSubject", groupMetricRulesObj.emailSubject);
 		setParameter(groupMetricRulesObjStr + ".SilenceTime", std::to_string(groupMetricRulesObj.silenceTime));
 		setParameter(groupMetricRulesObjStr + ".MetricName", groupMetricRulesObj.metricName);
 		setParameter(groupMetricRulesObjStr + ".EscalationsWarnTimes", std::to_string(groupMetricRulesObj.escalationsWarnTimes));
-		setParameter(groupMetricRulesObjStr + ".Period", groupMetricRulesObj.period);
+		setParameter(groupMetricRulesObjStr + ".CompositeExpression", groupMetricRulesObj.compositeExpression);
 		setParameter(groupMetricRulesObjStr + ".EscalationsWarnThreshold", groupMetricRulesObj.escalationsWarnThreshold);
+		setParameter(groupMetricRulesObjStr + ".Period", groupMetricRulesObj.period);
 		setParameter(groupMetricRulesObjStr + ".EscalationsCriticalStatistics", groupMetricRulesObj.escalationsCriticalStatistics);
 		setParameter(groupMetricRulesObjStr + ".EscalationsInfoTimes", std::to_string(groupMetricRulesObj.escalationsInfoTimes));
 		setParameter(groupMetricRulesObjStr + ".EscalationsCriticalTimes", std::to_string(groupMetricRulesObj.escalationsCriticalTimes));
-		setParameter(groupMetricRulesObjStr + ".EscalationsWarnStatistics", groupMetricRulesObj.escalationsWarnStatistics);
 		setParameter(groupMetricRulesObjStr + ".EscalationsInfoThreshold", groupMetricRulesObj.escalationsInfoThreshold);
+		setParameter(groupMetricRulesObjStr + ".EscalationsWarnStatistics", groupMetricRulesObj.escalationsWarnStatistics);
 		setParameter(groupMetricRulesObjStr + "._Namespace", groupMetricRulesObj._namespace);
 		setParameter(groupMetricRulesObjStr + ".Interval", groupMetricRulesObj.interval);
-		setParameter(groupMetricRulesObjStr + ".Category", groupMetricRulesObj.category);
 		setParameter(groupMetricRulesObjStr + ".RuleId", groupMetricRulesObj.ruleId);
+		setParameter(groupMetricRulesObjStr + ".Category", groupMetricRulesObj.category);
 		setParameter(groupMetricRulesObjStr + ".EscalationsCriticalComparisonOperator", groupMetricRulesObj.escalationsCriticalComparisonOperator);
 		setParameter(groupMetricRulesObjStr + ".EscalationsCriticalThreshold", groupMetricRulesObj.escalationsCriticalThreshold);
 		setParameter(groupMetricRulesObjStr + ".Dimensions", groupMetricRulesObj.dimensions);

+ 8 - 8
cms/src/model/CreateGroupMetricRulesResult.cc

@@ -43,24 +43,24 @@ void CreateGroupMetricRulesResult::parse(const std::string &payload)
 	for (auto valueResourcesAlertResult : allResourcesNode)
 	{
 		AlertResult resourcesObject;
-		if(!valueResourcesAlertResult["RuleId"].isNull())
-			resourcesObject.ruleId = valueResourcesAlertResult["RuleId"].asString();
-		if(!valueResourcesAlertResult["RuleName"].isNull())
-			resourcesObject.ruleName = valueResourcesAlertResult["RuleName"].asString();
-		if(!valueResourcesAlertResult["Message"].isNull())
-			resourcesObject.message = valueResourcesAlertResult["Message"].asString();
 		if(!valueResourcesAlertResult["Code"].isNull())
 			resourcesObject.code = std::stoi(valueResourcesAlertResult["Code"].asString());
+		if(!valueResourcesAlertResult["Message"].isNull())
+			resourcesObject.message = valueResourcesAlertResult["Message"].asString();
 		if(!valueResourcesAlertResult["Success"].isNull())
 			resourcesObject.success = valueResourcesAlertResult["Success"].asString() == "true";
+		if(!valueResourcesAlertResult["RuleName"].isNull())
+			resourcesObject.ruleName = valueResourcesAlertResult["RuleName"].asString();
+		if(!valueResourcesAlertResult["RuleId"].isNull())
+			resourcesObject.ruleId = valueResourcesAlertResult["RuleId"].asString();
 		resources_.push_back(resourcesObject);
 	}
-	if(!value["Success"].isNull())
-		success_ = value["Success"].asString() == "true";
 	if(!value["Code"].isNull())
 		code_ = std::stoi(value["Code"].asString());
 	if(!value["Message"].isNull())
 		message_ = value["Message"].asString();
+	if(!value["Success"].isNull())
+		success_ = value["Success"].asString() == "true";
 
 }
 

+ 7 - 0
cms/src/model/CreateMonitorGroupByResourceGroupIdResult.cc

@@ -45,6 +45,8 @@ void CreateMonitorGroupByResourceGroupIdResult::parse(const std::string &payload
 		message_ = value["Message"].asString();
 	if(!value["Success"].isNull())
 		success_ = value["Success"].asString() == "true";
+	if(!value["Id"].isNull())
+		id_ = std::stol(value["Id"].asString());
 
 }
 
@@ -53,6 +55,11 @@ std::string CreateMonitorGroupByResourceGroupIdResult::getMessage()const
 	return message_;
 }
 
+long CreateMonitorGroupByResourceGroupIdResult::getId()const
+{
+	return id_;
+}
+
 std::string CreateMonitorGroupByResourceGroupIdResult::getCode()const
 {
 	return code_;

+ 28 - 0
cms/src/model/DescribeAlertLogListResult.cc

@@ -111,6 +111,34 @@ void DescribeAlertLogListResult::parse(const std::string &payload)
 				webhookListObject.message = valueAlertLogListAlarmWebhookListWebhookListItem["message"].asString();
 			alertLogListObject.webhookList.push_back(webhookListObject);
 		}
+		auto sendDetailNode = value["SendDetail"];
+		if(!sendDetailNode["ResultCode"].isNull())
+			alertLogListObject.sendDetail.resultCode = sendDetailNode["ResultCode"].asString();
+		auto allChannelResultListNode = sendDetailNode["ChannelResultList"]["ChannelResult"];
+		for (auto sendDetailNodeChannelResultListChannelResult : allChannelResultListNode)
+		{
+			Alarm::SendDetail::ChannelResult channelResultObject;
+			if(!sendDetailNodeChannelResultListChannelResult["Channel"].isNull())
+				channelResultObject.channel = sendDetailNodeChannelResultListChannelResult["Channel"].asString();
+			auto allResultListNode = sendDetailNodeChannelResultListChannelResult["ResultList"]["Result"];
+			for (auto sendDetailNodeChannelResultListChannelResultResultListResult : allResultListNode)
+			{
+				Alarm::SendDetail::ChannelResult::Result resultListObject;
+				if(!sendDetailNodeChannelResultListChannelResultResultListResult["Code"].isNull())
+					resultListObject.code = sendDetailNodeChannelResultListChannelResultResultListResult["Code"].asString();
+				if(!sendDetailNodeChannelResultListChannelResultResultListResult["Detail"].isNull())
+					resultListObject.detail = sendDetailNodeChannelResultListChannelResultResultListResult["Detail"].asString();
+				if(!sendDetailNodeChannelResultListChannelResultResultListResult["Success"].isNull())
+					resultListObject.success = sendDetailNodeChannelResultListChannelResultResultListResult["Success"].asString() == "true";
+				if(!sendDetailNodeChannelResultListChannelResultResultListResult["RequestId"].isNull())
+					resultListObject.requestId = sendDetailNodeChannelResultListChannelResultResultListResult["RequestId"].asString();
+				auto allNotifyTargetList = value["notifyTargetList"]["NotifyTarget"];
+				for (auto value : allNotifyTargetList)
+					resultListObject.notifyTargetList.push_back(value.asString());
+				channelResultObject.resultList.push_back(resultListObject);
+			}
+			alertLogListObject.sendDetail.channelResultList.push_back(channelResultObject);
+		}
 		auto escalationNode = value["Escalation"];
 		if(!escalationNode["Times"].isNull())
 			alertLogListObject.escalation.times = std::stoi(escalationNode["Times"].asString());

+ 0 - 2
cms/src/model/DescribeExporterOutputListResult.cc

@@ -56,8 +56,6 @@ void DescribeExporterOutputListResult::parse(const std::string &payload)
 			datapointsObject.configJson.project = configJsonNode["project"].asString();
 		if(!configJsonNode["endpoint"].isNull())
 			datapointsObject.configJson.endpoint = configJsonNode["endpoint"].asString();
-		if(!configJsonNode["as"].isNull())
-			datapointsObject.configJson.as = configJsonNode["as"].asString();
 		if(!configJsonNode["ak"].isNull())
 			datapointsObject.configJson.ak = configJsonNode["ak"].asString();
 		datapoints_.push_back(datapointsObject);

+ 28 - 28
cms/src/model/DescribeHostAvailabilityListResult.cc

@@ -43,21 +43,25 @@ void DescribeHostAvailabilityListResult::parse(const std::string &payload)
 	for (auto valueTaskListNodeTaskConfig : allTaskListNode)
 	{
 		NodeTaskConfig taskListObject;
-		if(!valueTaskListNodeTaskConfig["Id"].isNull())
-			taskListObject.id = std::stol(valueTaskListNodeTaskConfig["Id"].asString());
-		if(!valueTaskListNodeTaskConfig["TaskName"].isNull())
-			taskListObject.taskName = valueTaskListNodeTaskConfig["TaskName"].asString();
 		if(!valueTaskListNodeTaskConfig["TaskType"].isNull())
 			taskListObject.taskType = valueTaskListNodeTaskConfig["TaskType"].asString();
-		if(!valueTaskListNodeTaskConfig["TaskScope"].isNull())
-			taskListObject.taskScope = valueTaskListNodeTaskConfig["TaskScope"].asString();
-		if(!valueTaskListNodeTaskConfig["Disabled"].isNull())
-			taskListObject.disabled = valueTaskListNodeTaskConfig["Disabled"].asString() == "true";
-		if(!valueTaskListNodeTaskConfig["GroupId"].isNull())
-			taskListObject.groupId = std::stol(valueTaskListNodeTaskConfig["GroupId"].asString());
 		if(!valueTaskListNodeTaskConfig["GroupName"].isNull())
 			taskListObject.groupName = valueTaskListNodeTaskConfig["GroupName"].asString();
+		if(!valueTaskListNodeTaskConfig["GroupId"].isNull())
+			taskListObject.groupId = std::stol(valueTaskListNodeTaskConfig["GroupId"].asString());
+		if(!valueTaskListNodeTaskConfig["TaskName"].isNull())
+			taskListObject.taskName = valueTaskListNodeTaskConfig["TaskName"].asString();
+		if(!valueTaskListNodeTaskConfig["Disabled"].isNull())
+			taskListObject.disabled = valueTaskListNodeTaskConfig["Disabled"].asString() == "true";
+		if(!valueTaskListNodeTaskConfig["TaskScope"].isNull())
+			taskListObject.taskScope = valueTaskListNodeTaskConfig["TaskScope"].asString();
+		if(!valueTaskListNodeTaskConfig["Id"].isNull())
+			taskListObject.id = std::stol(valueTaskListNodeTaskConfig["Id"].asString());
 		auto taskOptionNode = value["TaskOption"];
+		if(!taskOptionNode["HttpMethod"].isNull())
+			taskListObject.taskOption.httpMethod = taskOptionNode["HttpMethod"].asString();
+		if(!taskOptionNode["Interval"].isNull())
+			taskListObject.taskOption.interval = std::stoi(taskOptionNode["Interval"].asString());
 		if(!taskOptionNode["HttpURI"].isNull())
 			taskListObject.taskOption.httpURI = taskOptionNode["HttpURI"].asString();
 		if(!taskOptionNode["TelnetOrPingHost"].isNull())
@@ -66,39 +70,35 @@ void DescribeHostAvailabilityListResult::parse(const std::string &payload)
 			taskListObject.taskOption.httpResponseCharset = taskOptionNode["HttpResponseCharset"].asString();
 		if(!taskOptionNode["HttpPostContent"].isNull())
 			taskListObject.taskOption.httpPostContent = taskOptionNode["HttpPostContent"].asString();
-		if(!taskOptionNode["HttpKeyword"].isNull())
-			taskListObject.taskOption.httpKeyword = taskOptionNode["HttpKeyword"].asString();
-		if(!taskOptionNode["HttpMethod"].isNull())
-			taskListObject.taskOption.httpMethod = taskOptionNode["HttpMethod"].asString();
 		if(!taskOptionNode["HttpNegative"].isNull())
 			taskListObject.taskOption.httpNegative = taskOptionNode["HttpNegative"].asString() == "true";
-		if(!taskOptionNode["Interval"].isNull())
-			taskListObject.taskOption.interval = std::stoi(taskOptionNode["Interval"].asString());
+		if(!taskOptionNode["HttpKeyword"].isNull())
+			taskListObject.taskOption.httpKeyword = taskOptionNode["HttpKeyword"].asString();
 		auto alertConfigNode = value["AlertConfig"];
-		if(!alertConfigNode["NotifyType"].isNull())
-			taskListObject.alertConfig.notifyType = std::stoi(alertConfigNode["NotifyType"].asString());
-		if(!alertConfigNode["StartTime"].isNull())
-			taskListObject.alertConfig.startTime = std::stoi(alertConfigNode["StartTime"].asString());
-		if(!alertConfigNode["EndTime"].isNull())
-			taskListObject.alertConfig.endTime = std::stoi(alertConfigNode["EndTime"].asString());
 		if(!alertConfigNode["SilenceTime"].isNull())
 			taskListObject.alertConfig.silenceTime = std::stoi(alertConfigNode["SilenceTime"].asString());
+		if(!alertConfigNode["EndTime"].isNull())
+			taskListObject.alertConfig.endTime = std::stoi(alertConfigNode["EndTime"].asString());
+		if(!alertConfigNode["StartTime"].isNull())
+			taskListObject.alertConfig.startTime = std::stoi(alertConfigNode["StartTime"].asString());
 		if(!alertConfigNode["WebHook"].isNull())
 			taskListObject.alertConfig.webHook = alertConfigNode["WebHook"].asString();
+		if(!alertConfigNode["NotifyType"].isNull())
+			taskListObject.alertConfig.notifyType = std::stoi(alertConfigNode["NotifyType"].asString());
 		auto allEscalationListNode = alertConfigNode["EscalationList"]["escalationListItem"];
 		for (auto alertConfigNodeEscalationListescalationListItem : allEscalationListNode)
 		{
 			NodeTaskConfig::AlertConfig::EscalationListItem escalationListItemObject;
+			if(!alertConfigNodeEscalationListescalationListItem["Value"].isNull())
+				escalationListItemObject.value = alertConfigNodeEscalationListescalationListItem["Value"].asString();
 			if(!alertConfigNodeEscalationListescalationListItem["MetricName"].isNull())
 				escalationListItemObject.metricName = alertConfigNodeEscalationListescalationListItem["MetricName"].asString();
-			if(!alertConfigNodeEscalationListescalationListItem["Aggregate"].isNull())
-				escalationListItemObject.aggregate = alertConfigNodeEscalationListescalationListItem["Aggregate"].asString();
 			if(!alertConfigNodeEscalationListescalationListItem["Operator"].isNull())
 				escalationListItemObject._operator = alertConfigNodeEscalationListescalationListItem["Operator"].asString();
-			if(!alertConfigNodeEscalationListescalationListItem["Value"].isNull())
-				escalationListItemObject.value = alertConfigNodeEscalationListescalationListItem["Value"].asString();
 			if(!alertConfigNodeEscalationListescalationListItem["Times"].isNull())
 				escalationListItemObject.times = alertConfigNodeEscalationListescalationListItem["Times"].asString();
+			if(!alertConfigNodeEscalationListescalationListItem["Aggregate"].isNull())
+				escalationListItemObject.aggregate = alertConfigNodeEscalationListescalationListItem["Aggregate"].asString();
 			taskListObject.alertConfig.escalationList.push_back(escalationListItemObject);
 		}
 		auto allInstances = value["Instances"]["Instance"];
@@ -110,10 +110,10 @@ void DescribeHostAvailabilityListResult::parse(const std::string &payload)
 		code_ = value["Code"].asString();
 	if(!value["Message"].isNull())
 		message_ = value["Message"].asString();
-	if(!value["Success"].isNull())
-		success_ = value["Success"].asString() == "true";
 	if(!value["Total"].isNull())
 		total_ = std::stoi(value["Total"].asString());
+	if(!value["Success"].isNull())
+		success_ = value["Success"].asString() == "true";
 
 }
 

+ 10 - 10
cms/src/model/DescribeMetricMetaListResult.cc

@@ -43,32 +43,32 @@ void DescribeMetricMetaListResult::parse(const std::string &payload)
 	for (auto valueResourcesResource : allResourcesNode)
 	{
 		Resource resourcesObject;
-		if(!valueResourcesResource["Namespace"].isNull())
-			resourcesObject._namespace = valueResourcesResource["Namespace"].asString();
 		if(!valueResourcesResource["MetricName"].isNull())
 			resourcesObject.metricName = valueResourcesResource["MetricName"].asString();
-		if(!valueResourcesResource["Statistics"].isNull())
-			resourcesObject.statistics = valueResourcesResource["Statistics"].asString();
-		if(!valueResourcesResource["Unit"].isNull())
-			resourcesObject.unit = valueResourcesResource["Unit"].asString();
 		if(!valueResourcesResource["Description"].isNull())
 			resourcesObject.description = valueResourcesResource["Description"].asString();
+		if(!valueResourcesResource["Labels"].isNull())
+			resourcesObject.labels = valueResourcesResource["Labels"].asString();
+		if(!valueResourcesResource["Unit"].isNull())
+			resourcesObject.unit = valueResourcesResource["Unit"].asString();
 		if(!valueResourcesResource["Dimensions"].isNull())
 			resourcesObject.dimensions = valueResourcesResource["Dimensions"].asString();
+		if(!valueResourcesResource["Namespace"].isNull())
+			resourcesObject._namespace = valueResourcesResource["Namespace"].asString();
 		if(!valueResourcesResource["Periods"].isNull())
 			resourcesObject.periods = valueResourcesResource["Periods"].asString();
-		if(!valueResourcesResource["Labels"].isNull())
-			resourcesObject.labels = valueResourcesResource["Labels"].asString();
+		if(!valueResourcesResource["Statistics"].isNull())
+			resourcesObject.statistics = valueResourcesResource["Statistics"].asString();
 		resources_.push_back(resourcesObject);
 	}
-	if(!value["Success"].isNull())
-		success_ = value["Success"].asString() == "true";
 	if(!value["Code"].isNull())
 		code_ = value["Code"].asString();
 	if(!value["Message"].isNull())
 		message_ = value["Message"].asString();
 	if(!value["TotalCount"].isNull())
 		totalCount_ = value["TotalCount"].asString();
+	if(!value["Success"].isNull())
+		success_ = value["Success"].asString() == "true";
 
 }
 

+ 73 - 44
cms/src/model/DescribeMetricRuleListResult.cc

@@ -43,88 +43,117 @@ void DescribeMetricRuleListResult::parse(const std::string &payload)
 	for (auto valueAlarmsAlarm : allAlarmsNode)
 	{
 		Alarm alarmsObject;
-		if(!valueAlarmsAlarm["RuleId"].isNull())
-			alarmsObject.ruleId = valueAlarmsAlarm["RuleId"].asString();
-		if(!valueAlarmsAlarm["Namespace"].isNull())
-			alarmsObject._namespace = valueAlarmsAlarm["Namespace"].asString();
-		if(!valueAlarmsAlarm["MetricName"].isNull())
-			alarmsObject.metricName = valueAlarmsAlarm["MetricName"].asString();
-		if(!valueAlarmsAlarm["Period"].isNull())
-			alarmsObject.period = valueAlarmsAlarm["Period"].asString();
-		if(!valueAlarmsAlarm["EffectiveInterval"].isNull())
-			alarmsObject.effectiveInterval = valueAlarmsAlarm["EffectiveInterval"].asString();
-		if(!valueAlarmsAlarm["NoEffectiveInterval"].isNull())
-			alarmsObject.noEffectiveInterval = valueAlarmsAlarm["NoEffectiveInterval"].asString();
 		if(!valueAlarmsAlarm["SilenceTime"].isNull())
 			alarmsObject.silenceTime = std::stoi(valueAlarmsAlarm["SilenceTime"].asString());
-		if(!valueAlarmsAlarm["EnableState"].isNull())
-			alarmsObject.enableState = valueAlarmsAlarm["EnableState"].asString() == "true";
-		if(!valueAlarmsAlarm["AlertState"].isNull())
-			alarmsObject.alertState = valueAlarmsAlarm["AlertState"].asString();
-		if(!valueAlarmsAlarm["ContactGroups"].isNull())
-			alarmsObject.contactGroups = valueAlarmsAlarm["ContactGroups"].asString();
+		if(!valueAlarmsAlarm["MetricName"].isNull())
+			alarmsObject.metricName = valueAlarmsAlarm["MetricName"].asString();
 		if(!valueAlarmsAlarm["Webhook"].isNull())
 			alarmsObject.webhook = valueAlarmsAlarm["Webhook"].asString();
+		if(!valueAlarmsAlarm["ContactGroups"].isNull())
+			alarmsObject.contactGroups = valueAlarmsAlarm["ContactGroups"].asString();
+		if(!valueAlarmsAlarm["SourceType"].isNull())
+			alarmsObject.sourceType = valueAlarmsAlarm["SourceType"].asString();
+		if(!valueAlarmsAlarm["Namespace"].isNull())
+			alarmsObject._namespace = valueAlarmsAlarm["Namespace"].asString();
 		if(!valueAlarmsAlarm["MailSubject"].isNull())
 			alarmsObject.mailSubject = valueAlarmsAlarm["MailSubject"].asString();
+		if(!valueAlarmsAlarm["NoEffectiveInterval"].isNull())
+			alarmsObject.noEffectiveInterval = valueAlarmsAlarm["NoEffectiveInterval"].asString();
+		if(!valueAlarmsAlarm["EffectiveInterval"].isNull())
+			alarmsObject.effectiveInterval = valueAlarmsAlarm["EffectiveInterval"].asString();
 		if(!valueAlarmsAlarm["RuleName"].isNull())
 			alarmsObject.ruleName = valueAlarmsAlarm["RuleName"].asString();
-		if(!valueAlarmsAlarm["Resources"].isNull())
-			alarmsObject.resources = valueAlarmsAlarm["Resources"].asString();
-		if(!valueAlarmsAlarm["GroupId"].isNull())
-			alarmsObject.groupId = valueAlarmsAlarm["GroupId"].asString();
+		if(!valueAlarmsAlarm["AlertState"].isNull())
+			alarmsObject.alertState = valueAlarmsAlarm["AlertState"].asString();
+		if(!valueAlarmsAlarm["Period"].isNull())
+			alarmsObject.period = valueAlarmsAlarm["Period"].asString();
+		if(!valueAlarmsAlarm["RuleId"].isNull())
+			alarmsObject.ruleId = valueAlarmsAlarm["RuleId"].asString();
 		if(!valueAlarmsAlarm["GroupName"].isNull())
 			alarmsObject.groupName = valueAlarmsAlarm["GroupName"].asString();
+		if(!valueAlarmsAlarm["GroupId"].isNull())
+			alarmsObject.groupId = valueAlarmsAlarm["GroupId"].asString();
 		if(!valueAlarmsAlarm["Dimensions"].isNull())
 			alarmsObject.dimensions = valueAlarmsAlarm["Dimensions"].asString();
-		if(!valueAlarmsAlarm["SourceType"].isNull())
-			alarmsObject.sourceType = valueAlarmsAlarm["SourceType"].asString();
+		if(!valueAlarmsAlarm["EnableState"].isNull())
+			alarmsObject.enableState = valueAlarmsAlarm["EnableState"].asString() == "true";
 		if(!valueAlarmsAlarm["GroupBy"].isNull())
 			alarmsObject.groupBy = valueAlarmsAlarm["GroupBy"].asString();
+		if(!valueAlarmsAlarm["Resources"].isNull())
+			alarmsObject.resources = valueAlarmsAlarm["Resources"].asString();
+		if(!valueAlarmsAlarm["NoDataPolicy"].isNull())
+			alarmsObject.noDataPolicy = valueAlarmsAlarm["NoDataPolicy"].asString();
 		auto escalationsNode = value["Escalations"];
 		auto infoNode = escalationsNode["Info"];
 		if(!infoNode["ComparisonOperator"].isNull())
 			alarmsObject.escalations.info.comparisonOperator = infoNode["ComparisonOperator"].asString();
-		if(!infoNode["Statistics"].isNull())
-			alarmsObject.escalations.info.statistics = infoNode["Statistics"].asString();
-		if(!infoNode["Threshold"].isNull())
-			alarmsObject.escalations.info.threshold = infoNode["Threshold"].asString();
-		if(!infoNode["Times"].isNull())
-			alarmsObject.escalations.info.times = std::stoi(infoNode["Times"].asString());
 		if(!infoNode["PreCondition"].isNull())
 			alarmsObject.escalations.info.preCondition = infoNode["PreCondition"].asString();
+		if(!infoNode["Times"].isNull())
+			alarmsObject.escalations.info.times = std::stoi(infoNode["Times"].asString());
+		if(!infoNode["Threshold"].isNull())
+			alarmsObject.escalations.info.threshold = infoNode["Threshold"].asString();
+		if(!infoNode["Statistics"].isNull())
+			alarmsObject.escalations.info.statistics = infoNode["Statistics"].asString();
 		auto warnNode = escalationsNode["Warn"];
 		if(!warnNode["ComparisonOperator"].isNull())
 			alarmsObject.escalations.warn.comparisonOperator = warnNode["ComparisonOperator"].asString();
-		if(!warnNode["Statistics"].isNull())
-			alarmsObject.escalations.warn.statistics = warnNode["Statistics"].asString();
-		if(!warnNode["Threshold"].isNull())
-			alarmsObject.escalations.warn.threshold = warnNode["Threshold"].asString();
-		if(!warnNode["Times"].isNull())
-			alarmsObject.escalations.warn.times = std::stoi(warnNode["Times"].asString());
 		if(!warnNode["PreCondition"].isNull())
 			alarmsObject.escalations.warn.preCondition = warnNode["PreCondition"].asString();
+		if(!warnNode["Times"].isNull())
+			alarmsObject.escalations.warn.times = std::stoi(warnNode["Times"].asString());
+		if(!warnNode["Threshold"].isNull())
+			alarmsObject.escalations.warn.threshold = warnNode["Threshold"].asString();
+		if(!warnNode["Statistics"].isNull())
+			alarmsObject.escalations.warn.statistics = warnNode["Statistics"].asString();
 		auto criticalNode = escalationsNode["Critical"];
 		if(!criticalNode["ComparisonOperator"].isNull())
 			alarmsObject.escalations.critical.comparisonOperator = criticalNode["ComparisonOperator"].asString();
-		if(!criticalNode["Statistics"].isNull())
-			alarmsObject.escalations.critical.statistics = criticalNode["Statistics"].asString();
-		if(!criticalNode["Threshold"].isNull())
-			alarmsObject.escalations.critical.threshold = criticalNode["Threshold"].asString();
-		if(!criticalNode["Times"].isNull())
-			alarmsObject.escalations.critical.times = std::stoi(criticalNode["Times"].asString());
 		if(!criticalNode["PreCondition"].isNull())
 			alarmsObject.escalations.critical.preCondition = criticalNode["PreCondition"].asString();
+		if(!criticalNode["Times"].isNull())
+			alarmsObject.escalations.critical.times = std::stoi(criticalNode["Times"].asString());
+		if(!criticalNode["Threshold"].isNull())
+			alarmsObject.escalations.critical.threshold = criticalNode["Threshold"].asString();
+		if(!criticalNode["Statistics"].isNull())
+			alarmsObject.escalations.critical.statistics = criticalNode["Statistics"].asString();
+		auto compositeExpressionNode = value["CompositeExpression"];
+		if(!compositeExpressionNode["Level"].isNull())
+			alarmsObject.compositeExpression.level = compositeExpressionNode["Level"].asString();
+		if(!compositeExpressionNode["ExpressionListJoin"].isNull())
+			alarmsObject.compositeExpression.expressionListJoin = compositeExpressionNode["ExpressionListJoin"].asString();
+		if(!compositeExpressionNode["ExpressionRaw"].isNull())
+			alarmsObject.compositeExpression.expressionRaw = compositeExpressionNode["ExpressionRaw"].asString();
+		if(!compositeExpressionNode["Times"].isNull())
+			alarmsObject.compositeExpression.times = std::stoi(compositeExpressionNode["Times"].asString());
+		auto allExpressionListNode = compositeExpressionNode["ExpressionList"]["ExpressionListItem"];
+		for (auto compositeExpressionNodeExpressionListExpressionListItem : allExpressionListNode)
+		{
+			Alarm::CompositeExpression::ExpressionListItem expressionListItemObject;
+			if(!compositeExpressionNodeExpressionListExpressionListItem["MetricName"].isNull())
+				expressionListItemObject.metricName = compositeExpressionNodeExpressionListExpressionListItem["MetricName"].asString();
+			if(!compositeExpressionNodeExpressionListExpressionListItem["ComparisonOperator"].isNull())
+				expressionListItemObject.comparisonOperator = compositeExpressionNodeExpressionListExpressionListItem["ComparisonOperator"].asString();
+			if(!compositeExpressionNodeExpressionListExpressionListItem["Statistics"].isNull())
+				expressionListItemObject.statistics = compositeExpressionNodeExpressionListExpressionListItem["Statistics"].asString();
+			if(!compositeExpressionNodeExpressionListExpressionListItem["Threshold"].isNull())
+				expressionListItemObject.threshold = compositeExpressionNodeExpressionListExpressionListItem["Threshold"].asString();
+			if(!compositeExpressionNodeExpressionListExpressionListItem["Period"].isNull())
+				expressionListItemObject.period = std::stoi(compositeExpressionNodeExpressionListExpressionListItem["Period"].asString());
+			if(!compositeExpressionNodeExpressionListExpressionListItem["Id"].isNull())
+				expressionListItemObject.id = compositeExpressionNodeExpressionListExpressionListItem["Id"].asString();
+			alarmsObject.compositeExpression.expressionList.push_back(expressionListItemObject);
+		}
 		alarms_.push_back(alarmsObject);
 	}
-	if(!value["Success"].isNull())
-		success_ = value["Success"].asString() == "true";
 	if(!value["Code"].isNull())
 		code_ = std::stoi(value["Code"].asString());
 	if(!value["Message"].isNull())
 		message_ = value["Message"].asString();
 	if(!value["Total"].isNull())
 		total_ = value["Total"].asString();
+	if(!value["Success"].isNull())
+		success_ = value["Success"].asString() == "true";
 
 }
 

+ 11 - 4
cms/src/model/DescribeMonitorResourceQuotaAttributeResult.cc

@@ -40,14 +40,14 @@ void DescribeMonitorResourceQuotaAttributeResult::parse(const std::string &paylo
 	reader.parse(payload, value);
 	setRequestId(value["RequestId"].asString());
 	auto resourceQuotaNode = value["ResourceQuota"];
-	if(!resourceQuotaNode["ExpireTime"].isNull())
-		resourceQuota_.expireTime = resourceQuotaNode["ExpireTime"].asString();
 	if(!resourceQuotaNode["SuitInfo"].isNull())
 		resourceQuota_.suitInfo = resourceQuotaNode["SuitInfo"].asString();
-	if(!resourceQuotaNode["CRMType"].isNull())
-		resourceQuota_.cRMType = resourceQuotaNode["CRMType"].asString();
 	if(!resourceQuotaNode["InstanceId"].isNull())
 		resourceQuota_.instanceId = resourceQuotaNode["InstanceId"].asString();
+	if(!resourceQuotaNode["ExpireTime"].isNull())
+		resourceQuota_.expireTime = resourceQuotaNode["ExpireTime"].asString();
+	if(!resourceQuotaNode["CRMType"].isNull())
+		resourceQuota_.cRMType = resourceQuotaNode["CRMType"].asString();
 	auto siteMonitorEcsProbeNode = resourceQuotaNode["SiteMonitorEcsProbe"];
 	if(!siteMonitorEcsProbeNode["QuotaLimit"].isNull())
 		resourceQuota_.siteMonitorEcsProbe.quotaLimit = std::stoi(siteMonitorEcsProbeNode["QuotaLimit"].asString());
@@ -116,6 +116,13 @@ void DescribeMonitorResourceQuotaAttributeResult::parse(const std::string &paylo
 		resourceQuota_.enterpriseQuota.suitInfo = enterpriseQuotaNode["SuitInfo"].asString();
 	if(!enterpriseQuotaNode["InstanceId"].isNull())
 		resourceQuota_.enterpriseQuota.instanceId = enterpriseQuotaNode["InstanceId"].asString();
+	auto nAAMNode = resourceQuotaNode["NAAM"];
+	if(!nAAMNode["EffectTime"].isNull())
+		resourceQuota_.nAAM.effectTime = nAAMNode["EffectTime"].asString();
+	if(!nAAMNode["InstanceId"].isNull())
+		resourceQuota_.nAAM.instanceId = nAAMNode["InstanceId"].asString();
+	if(!nAAMNode["SuitInfo"].isNull())
+		resourceQuota_.nAAM.suitInfo = nAAMNode["SuitInfo"].asString();
 	if(!value["Code"].isNull())
 		code_ = value["Code"].asString();
 	if(!value["Message"].isNull())

+ 66 - 60
cms/src/model/DescribeSiteMonitorAttributeResult.cc

@@ -43,118 +43,124 @@ void DescribeSiteMonitorAttributeResult::parse(const std::string &payload)
 	for (auto valueMetricRulesMetricRule : allMetricRulesNode)
 	{
 		MetricRule metricRulesObject;
-		if(!valueMetricRulesMetricRule["RuleId"].isNull())
-			metricRulesObject.ruleId = valueMetricRulesMetricRule["RuleId"].asString();
-		if(!valueMetricRulesMetricRule["RuleName"].isNull())
-			metricRulesObject.ruleName = valueMetricRulesMetricRule["RuleName"].asString();
-		if(!valueMetricRulesMetricRule["Namespace"].isNull())
-			metricRulesObject._namespace = valueMetricRulesMetricRule["Namespace"].asString();
 		if(!valueMetricRulesMetricRule["MetricName"].isNull())
 			metricRulesObject.metricName = valueMetricRulesMetricRule["MetricName"].asString();
+		if(!valueMetricRulesMetricRule["EvaluationCount"].isNull())
+			metricRulesObject.evaluationCount = valueMetricRulesMetricRule["EvaluationCount"].asString();
+		if(!valueMetricRulesMetricRule["Namespace"].isNull())
+			metricRulesObject._namespace = valueMetricRulesMetricRule["Namespace"].asString();
 		if(!valueMetricRulesMetricRule["OkActions"].isNull())
 			metricRulesObject.okActions = valueMetricRulesMetricRule["OkActions"].asString();
 		if(!valueMetricRulesMetricRule["AlarmActions"].isNull())
 			metricRulesObject.alarmActions = valueMetricRulesMetricRule["AlarmActions"].asString();
-		if(!valueMetricRulesMetricRule["Statistics"].isNull())
-			metricRulesObject.statistics = valueMetricRulesMetricRule["Statistics"].asString();
-		if(!valueMetricRulesMetricRule["ActionEnable"].isNull())
-			metricRulesObject.actionEnable = valueMetricRulesMetricRule["ActionEnable"].asString();
+		if(!valueMetricRulesMetricRule["RuleId"].isNull())
+			metricRulesObject.ruleId = valueMetricRulesMetricRule["RuleId"].asString();
+		if(!valueMetricRulesMetricRule["RuleName"].isNull())
+			metricRulesObject.ruleName = valueMetricRulesMetricRule["RuleName"].asString();
 		if(!valueMetricRulesMetricRule["Period"].isNull())
 			metricRulesObject.period = valueMetricRulesMetricRule["Period"].asString();
 		if(!valueMetricRulesMetricRule["ComparisonOperator"].isNull())
 			metricRulesObject.comparisonOperator = valueMetricRulesMetricRule["ComparisonOperator"].asString();
-		if(!valueMetricRulesMetricRule["Threshold"].isNull())
-			metricRulesObject.threshold = valueMetricRulesMetricRule["Threshold"].asString();
-		if(!valueMetricRulesMetricRule["EvaluationCount"].isNull())
-			metricRulesObject.evaluationCount = valueMetricRulesMetricRule["EvaluationCount"].asString();
-		if(!valueMetricRulesMetricRule["Level"].isNull())
-			metricRulesObject.level = valueMetricRulesMetricRule["Level"].asString();
 		if(!valueMetricRulesMetricRule["Expression"].isNull())
 			metricRulesObject.expression = valueMetricRulesMetricRule["Expression"].asString();
-		if(!valueMetricRulesMetricRule["StateValue"].isNull())
-			metricRulesObject.stateValue = valueMetricRulesMetricRule["StateValue"].asString();
 		if(!valueMetricRulesMetricRule["Dimensions"].isNull())
 			metricRulesObject.dimensions = valueMetricRulesMetricRule["Dimensions"].asString();
+		if(!valueMetricRulesMetricRule["StateValue"].isNull())
+			metricRulesObject.stateValue = valueMetricRulesMetricRule["StateValue"].asString();
+		if(!valueMetricRulesMetricRule["ActionEnable"].isNull())
+			metricRulesObject.actionEnable = valueMetricRulesMetricRule["ActionEnable"].asString();
+		if(!valueMetricRulesMetricRule["Level"].isNull())
+			metricRulesObject.level = valueMetricRulesMetricRule["Level"].asString();
+		if(!valueMetricRulesMetricRule["Threshold"].isNull())
+			metricRulesObject.threshold = valueMetricRulesMetricRule["Threshold"].asString();
+		if(!valueMetricRulesMetricRule["Statistics"].isNull())
+			metricRulesObject.statistics = valueMetricRulesMetricRule["Statistics"].asString();
 		metricRules_.push_back(metricRulesObject);
 	}
 	auto siteMonitorsNode = value["SiteMonitors"];
+	if(!siteMonitorsNode["EndTime"].isNull())
+		siteMonitors_.endTime = siteMonitorsNode["EndTime"].asString();
 	if(!siteMonitorsNode["TaskType"].isNull())
 		siteMonitors_.taskType = siteMonitorsNode["TaskType"].asString();
-	if(!siteMonitorsNode["Address"].isNull())
-		siteMonitors_.address = siteMonitorsNode["Address"].asString();
+	if(!siteMonitorsNode["Interval"].isNull())
+		siteMonitors_.interval = siteMonitorsNode["Interval"].asString();
 	if(!siteMonitorsNode["TaskState"].isNull())
 		siteMonitors_.taskState = siteMonitorsNode["TaskState"].asString();
 	if(!siteMonitorsNode["TaskName"].isNull())
 		siteMonitors_.taskName = siteMonitorsNode["TaskName"].asString();
-	if(!siteMonitorsNode["Interval"].isNull())
-		siteMonitors_.interval = siteMonitorsNode["Interval"].asString();
+	if(!siteMonitorsNode["Address"].isNull())
+		siteMonitors_.address = siteMonitorsNode["Address"].asString();
 	if(!siteMonitorsNode["TaskId"].isNull())
 		siteMonitors_.taskId = siteMonitorsNode["TaskId"].asString();
-	if(!siteMonitorsNode["EndTime"].isNull())
-		siteMonitors_.endTime = siteMonitorsNode["EndTime"].asString();
 	auto allIspCitiesNode = siteMonitorsNode["IspCities"]["IspCity"];
 	for (auto siteMonitorsNodeIspCitiesIspCity : allIspCitiesNode)
 	{
 		SiteMonitors::IspCity ispCityObject;
-		if(!siteMonitorsNodeIspCitiesIspCity["CityName"].isNull())
-			ispCityObject.cityName = siteMonitorsNodeIspCitiesIspCity["CityName"].asString();
-		if(!siteMonitorsNodeIspCitiesIspCity["IspName"].isNull())
-			ispCityObject.ispName = siteMonitorsNodeIspCitiesIspCity["IspName"].asString();
 		if(!siteMonitorsNodeIspCitiesIspCity["City"].isNull())
 			ispCityObject.city = siteMonitorsNodeIspCitiesIspCity["City"].asString();
+		if(!siteMonitorsNodeIspCitiesIspCity["IspName"].isNull())
+			ispCityObject.ispName = siteMonitorsNodeIspCitiesIspCity["IspName"].asString();
 		if(!siteMonitorsNodeIspCitiesIspCity["Isp"].isNull())
 			ispCityObject.isp = siteMonitorsNodeIspCitiesIspCity["Isp"].asString();
+		if(!siteMonitorsNodeIspCitiesIspCity["CityName"].isNull())
+			ispCityObject.cityName = siteMonitorsNodeIspCitiesIspCity["CityName"].asString();
 		siteMonitors_.ispCities.push_back(ispCityObject);
 	}
 	auto optionJsonNode = siteMonitorsNode["OptionJson"];
-	if(!optionJsonNode["dns_type"].isNull())
-		siteMonitors_.optionJson.dns_type = optionJsonNode["dns_type"].asString();
-	if(!optionJsonNode["dns_server"].isNull())
-		siteMonitors_.optionJson.dns_server = optionJsonNode["dns_server"].asString();
-	if(!optionJsonNode["expect_value"].isNull())
-		siteMonitors_.optionJson.expect_value = optionJsonNode["expect_value"].asString();
-	if(!optionJsonNode["http_method"].isNull())
-		siteMonitors_.optionJson.http_method = optionJsonNode["http_method"].asString();
+	if(!optionJsonNode["request_format"].isNull())
+		siteMonitors_.optionJson.request_format = optionJsonNode["request_format"].asString();
 	if(!optionJsonNode["response_content"].isNull())
 		siteMonitors_.optionJson.response_content = optionJsonNode["response_content"].asString();
+	if(!optionJsonNode["port"].isNull())
+		siteMonitors_.optionJson.port = std::stoi(optionJsonNode["port"].asString());
+	if(!optionJsonNode["proxy_protocol"].isNull())
+		siteMonitors_.optionJson.proxy_protocol = optionJsonNode["proxy_protocol"].asString() == "true";
+	if(!optionJsonNode["authentication"].isNull())
+		siteMonitors_.optionJson.authentication = std::stoi(optionJsonNode["authentication"].asString());
 	if(!optionJsonNode["match_rule"].isNull())
 		siteMonitors_.optionJson.match_rule = std::stoi(optionJsonNode["match_rule"].asString());
+	if(!optionJsonNode["ipv6_task"].isNull())
+		siteMonitors_.optionJson.ipv6_task = optionJsonNode["ipv6_task"].asString();
 	if(!optionJsonNode["request_content"].isNull())
 		siteMonitors_.optionJson.request_content = optionJsonNode["request_content"].asString();
-	if(!optionJsonNode["cookie"].isNull())
-		siteMonitors_.optionJson.cookie = optionJsonNode["cookie"].asString();
-	if(!optionJsonNode["header"].isNull())
-		siteMonitors_.optionJson.header = optionJsonNode["header"].asString();
+	if(!optionJsonNode["acceptable_response_code"].isNull())
+		siteMonitors_.optionJson.acceptable_response_code = optionJsonNode["acceptable_response_code"].asString();
 	if(!optionJsonNode["username"].isNull())
 		siteMonitors_.optionJson.username = optionJsonNode["username"].asString();
+	if(!optionJsonNode["traceroute"].isNull())
+		siteMonitors_.optionJson.traceroute = std::stol(optionJsonNode["traceroute"].asString());
+	if(!optionJsonNode["dns_type"].isNull())
+		siteMonitors_.optionJson.dns_type = optionJsonNode["dns_type"].asString();
+	if(!optionJsonNode["response_format"].isNull())
+		siteMonitors_.optionJson.response_format = optionJsonNode["response_format"].asString();
 	if(!optionJsonNode["password"].isNull())
 		siteMonitors_.optionJson.password = optionJsonNode["password"].asString();
+	if(!optionJsonNode["expect_value"].isNull())
+		siteMonitors_.optionJson.expect_value = optionJsonNode["expect_value"].asString();
 	if(!optionJsonNode["time_out"].isNull())
 		siteMonitors_.optionJson.time_out = std::stol(optionJsonNode["time_out"].asString());
-	if(!optionJsonNode["ping_num"].isNull())
-		siteMonitors_.optionJson.ping_num = std::stoi(optionJsonNode["ping_num"].asString());
 	if(!optionJsonNode["failure_rate"].isNull())
 		siteMonitors_.optionJson.failure_rate = std::stof(optionJsonNode["failure_rate"].asString());
-	if(!optionJsonNode["request_format"].isNull())
-		siteMonitors_.optionJson.request_format = optionJsonNode["request_format"].asString();
-	if(!optionJsonNode["response_format"].isNull())
-		siteMonitors_.optionJson.response_format = optionJsonNode["response_format"].asString();
-	if(!optionJsonNode["port"].isNull())
-		siteMonitors_.optionJson.port = std::stoi(optionJsonNode["port"].asString());
-	if(!optionJsonNode["authentication"].isNull())
-		siteMonitors_.optionJson.authentication = std::stoi(optionJsonNode["authentication"].asString());
-	if(!optionJsonNode["traceroute"].isNull())
-		siteMonitors_.optionJson.traceroute = std::stol(optionJsonNode["traceroute"].asString());
-	if(!optionJsonNode["cert_verify"].isNull())
-		siteMonitors_.optionJson.cert_verify = optionJsonNode["cert_verify"].asString() == "true";
+	if(!optionJsonNode["header"].isNull())
+		siteMonitors_.optionJson.header = optionJsonNode["header"].asString();
+	if(!optionJsonNode["cookie"].isNull())
+		siteMonitors_.optionJson.cookie = optionJsonNode["cookie"].asString();
+	if(!optionJsonNode["ping_num"].isNull())
+		siteMonitors_.optionJson.ping_num = std::stoi(optionJsonNode["ping_num"].asString());
+	if(!optionJsonNode["http_method"].isNull())
+		siteMonitors_.optionJson.http_method = optionJsonNode["http_method"].asString();
 	if(!optionJsonNode["unfollow_redirect"].isNull())
 		siteMonitors_.optionJson.unfollow_redirect = optionJsonNode["unfollow_redirect"].asString() == "true";
-	if(!optionJsonNode["proxy_protocol"].isNull())
-		siteMonitors_.optionJson.proxy_protocol = optionJsonNode["proxy_protocol"].asString() == "true";
-	if(!optionJsonNode["acceptable_response_code"].isNull())
-		siteMonitors_.optionJson.acceptable_response_code = optionJsonNode["acceptable_response_code"].asString();
-	if(!optionJsonNode["ipv6_task"].isNull())
-		siteMonitors_.optionJson.ipv6_task = optionJsonNode["ipv6_task"].asString();
+	if(!optionJsonNode["cert_verify"].isNull())
+		siteMonitors_.optionJson.cert_verify = optionJsonNode["cert_verify"].asString() == "true";
+	if(!optionJsonNode["dns_server"].isNull())
+		siteMonitors_.optionJson.dns_server = optionJsonNode["dns_server"].asString();
+	if(!optionJsonNode["enable_operator_dns"].isNull())
+		siteMonitors_.optionJson.enable_operator_dns = optionJsonNode["enable_operator_dns"].asString() == "true";
+	if(!optionJsonNode["attempts"].isNull())
+		siteMonitors_.optionJson.attempts = std::stol(optionJsonNode["attempts"].asString());
+	if(!optionJsonNode["protocol"].isNull())
+		siteMonitors_.optionJson.protocol = optionJsonNode["protocol"].asString();
 	if(!value["Code"].isNull())
 		code_ = value["Code"].asString();
 	if(!value["Message"].isNull())

+ 22 - 18
cms/src/model/DescribeSiteMonitorISPCityListResult.cc

@@ -43,36 +43,40 @@ void DescribeSiteMonitorISPCityListResult::parse(const std::string &payload)
 	for (auto valueIspCityListIspCity : allIspCityListNode)
 	{
 		IspCity ispCityListObject;
-		if(!valueIspCityListIspCity["Isp"].isNull())
-			ispCityListObject.isp = valueIspCityListIspCity["Isp"].asString();
+		if(!valueIspCityListIspCity["CityName.en"].isNull())
+			ispCityListObject.cityNameen = valueIspCityListIspCity["CityName.en"].asString();
+		if(!valueIspCityListIspCity["IPV4ProbeCount"].isNull())
+			ispCityListObject.iPV4ProbeCount = valueIspCityListIspCity["IPV4ProbeCount"].asString();
 		if(!valueIspCityListIspCity["City"].isNull())
 			ispCityListObject.city = valueIspCityListIspCity["City"].asString();
+		if(!valueIspCityListIspCity["Isp"].isNull())
+			ispCityListObject.isp = valueIspCityListIspCity["Isp"].asString();
+		if(!valueIspCityListIspCity["CityName.zh_CN"].isNull())
+			ispCityListObject.cityNamezh_CN = valueIspCityListIspCity["CityName.zh_CN"].asString();
+		if(!valueIspCityListIspCity["Region.zh_CN"].isNull())
+			ispCityListObject.regionzh_CN = valueIspCityListIspCity["Region.zh_CN"].asString();
+		if(!valueIspCityListIspCity["IspName.zh_CN"].isNull())
+			ispCityListObject.ispNamezh_CN = valueIspCityListIspCity["IspName.zh_CN"].asString();
+		if(!valueIspCityListIspCity["Country.en"].isNull())
+			ispCityListObject.countryen = valueIspCityListIspCity["Country.en"].asString();
+		if(!valueIspCityListIspCity["APIProbeCount"].isNull())
+			ispCityListObject.aPIProbeCount = valueIspCityListIspCity["APIProbeCount"].asString();
+		if(!valueIspCityListIspCity["IPV6ProbeCount"].isNull())
+			ispCityListObject.iPV6ProbeCount = valueIspCityListIspCity["IPV6ProbeCount"].asString();
 		if(!valueIspCityListIspCity["Region"].isNull())
 			ispCityListObject.region = valueIspCityListIspCity["Region"].asString();
 		if(!valueIspCityListIspCity["Country"].isNull())
 			ispCityListObject.country = valueIspCityListIspCity["Country"].asString();
 		if(!valueIspCityListIspCity["IspName.en"].isNull())
 			ispCityListObject.ispNameen = valueIspCityListIspCity["IspName.en"].asString();
-		if(!valueIspCityListIspCity["IspName.zh_CN"].isNull())
-			ispCityListObject.ispNamezh_CN = valueIspCityListIspCity["IspName.zh_CN"].asString();
-		if(!valueIspCityListIspCity["CityName.en"].isNull())
-			ispCityListObject.cityNameen = valueIspCityListIspCity["CityName.en"].asString();
-		if(!valueIspCityListIspCity["CityName.zh_CN"].isNull())
-			ispCityListObject.cityNamezh_CN = valueIspCityListIspCity["CityName.zh_CN"].asString();
 		if(!valueIspCityListIspCity["Region.en"].isNull())
 			ispCityListObject.regionen = valueIspCityListIspCity["Region.en"].asString();
-		if(!valueIspCityListIspCity["Region.zh_CN"].isNull())
-			ispCityListObject.regionzh_CN = valueIspCityListIspCity["Region.zh_CN"].asString();
-		if(!valueIspCityListIspCity["Country.en"].isNull())
-			ispCityListObject.countryen = valueIspCityListIspCity["Country.en"].asString();
 		if(!valueIspCityListIspCity["Country.zh_CN"].isNull())
 			ispCityListObject.countryzh_CN = valueIspCityListIspCity["Country.zh_CN"].asString();
-		if(!valueIspCityListIspCity["IPV4ProbeCount"].isNull())
-			ispCityListObject.iPV4ProbeCount = valueIspCityListIspCity["IPV4ProbeCount"].asString();
-		if(!valueIspCityListIspCity["IPV6ProbeCount"].isNull())
-			ispCityListObject.iPV6ProbeCount = valueIspCityListIspCity["IPV6ProbeCount"].asString();
-		if(!valueIspCityListIspCity["APIProbeCount"].isNull())
-			ispCityListObject.aPIProbeCount = valueIspCityListIspCity["APIProbeCount"].asString();
+		if(!valueIspCityListIspCity["Area.zh_CN"].isNull())
+			ispCityListObject.areazh_CN = valueIspCityListIspCity["Area.zh_CN"].asString();
+		if(!valueIspCityListIspCity["Area.en"].isNull())
+			ispCityListObject.areaen = valueIspCityListIspCity["Area.en"].asString();
 		auto allIPPool = value["IPPool"]["IPPool"];
 		for (auto value : allIPPool)
 			ispCityListObject.iPPool.push_back(value.asString());

+ 46 - 40
cms/src/model/DescribeSiteMonitorListResult.cc

@@ -43,73 +43,79 @@ void DescribeSiteMonitorListResult::parse(const std::string &payload)
 	for (auto valueSiteMonitorsSiteMonitor : allSiteMonitorsNode)
 	{
 		SiteMonitor siteMonitorsObject;
-		if(!valueSiteMonitorsSiteMonitor["TaskId"].isNull())
-			siteMonitorsObject.taskId = valueSiteMonitorsSiteMonitor["TaskId"].asString();
+		if(!valueSiteMonitorsSiteMonitor["EndTime"].isNull())
+			siteMonitorsObject.endTime = valueSiteMonitorsSiteMonitor["EndTime"].asString();
 		if(!valueSiteMonitorsSiteMonitor["TaskType"].isNull())
 			siteMonitorsObject.taskType = valueSiteMonitorsSiteMonitor["TaskType"].asString();
-		if(!valueSiteMonitorsSiteMonitor["Address"].isNull())
-			siteMonitorsObject.address = valueSiteMonitorsSiteMonitor["Address"].asString();
+		if(!valueSiteMonitorsSiteMonitor["UpdateTime"].isNull())
+			siteMonitorsObject.updateTime = valueSiteMonitorsSiteMonitor["UpdateTime"].asString();
+		if(!valueSiteMonitorsSiteMonitor["Interval"].isNull())
+			siteMonitorsObject.interval = valueSiteMonitorsSiteMonitor["Interval"].asString();
 		if(!valueSiteMonitorsSiteMonitor["TaskState"].isNull())
 			siteMonitorsObject.taskState = valueSiteMonitorsSiteMonitor["TaskState"].asString();
 		if(!valueSiteMonitorsSiteMonitor["CreateTime"].isNull())
 			siteMonitorsObject.createTime = valueSiteMonitorsSiteMonitor["CreateTime"].asString();
 		if(!valueSiteMonitorsSiteMonitor["TaskName"].isNull())
 			siteMonitorsObject.taskName = valueSiteMonitorsSiteMonitor["TaskName"].asString();
-		if(!valueSiteMonitorsSiteMonitor["Interval"].isNull())
-			siteMonitorsObject.interval = valueSiteMonitorsSiteMonitor["Interval"].asString();
-		if(!valueSiteMonitorsSiteMonitor["UpdateTime"].isNull())
-			siteMonitorsObject.updateTime = valueSiteMonitorsSiteMonitor["UpdateTime"].asString();
-		if(!valueSiteMonitorsSiteMonitor["EndTime"].isNull())
-			siteMonitorsObject.endTime = valueSiteMonitorsSiteMonitor["EndTime"].asString();
+		if(!valueSiteMonitorsSiteMonitor["Address"].isNull())
+			siteMonitorsObject.address = valueSiteMonitorsSiteMonitor["Address"].asString();
+		if(!valueSiteMonitorsSiteMonitor["TaskId"].isNull())
+			siteMonitorsObject.taskId = valueSiteMonitorsSiteMonitor["TaskId"].asString();
 		auto optionsJsonNode = value["OptionsJson"];
-		if(!optionsJsonNode["dns_type"].isNull())
-			siteMonitorsObject.optionsJson.dns_type = optionsJsonNode["dns_type"].asString();
-		if(!optionsJsonNode["dns_server"].isNull())
-			siteMonitorsObject.optionsJson.dns_server = optionsJsonNode["dns_server"].asString();
-		if(!optionsJsonNode["group_id"].isNull())
-			siteMonitorsObject.optionsJson.group_id = optionsJsonNode["group_id"].asString();
+		if(!optionsJsonNode["password"].isNull())
+			siteMonitorsObject.optionsJson.password = optionsJsonNode["password"].asString();
+		if(!optionsJsonNode["request_format"].isNull())
+			siteMonitorsObject.optionsJson.request_format = optionsJsonNode["request_format"].asString();
 		if(!optionsJsonNode["expect_value"].isNull())
 			siteMonitorsObject.optionsJson.expect_value = optionsJsonNode["expect_value"].asString();
-		if(!optionsJsonNode["http_method"].isNull())
-			siteMonitorsObject.optionsJson.http_method = optionsJsonNode["http_method"].asString();
 		if(!optionsJsonNode["response_content"].isNull())
 			siteMonitorsObject.optionsJson.response_content = optionsJsonNode["response_content"].asString();
-		if(!optionsJsonNode["match_rule"].isNull())
-			siteMonitorsObject.optionsJson.match_rule = std::stoi(optionsJsonNode["match_rule"].asString());
-		if(!optionsJsonNode["request_content"].isNull())
-			siteMonitorsObject.optionsJson.request_content = optionsJsonNode["request_content"].asString();
-		if(!optionsJsonNode["cookie"].isNull())
-			siteMonitorsObject.optionsJson.cookie = optionsJsonNode["cookie"].asString();
-		if(!optionsJsonNode["header"].isNull())
-			siteMonitorsObject.optionsJson.header = optionsJsonNode["header"].asString();
-		if(!optionsJsonNode["username"].isNull())
-			siteMonitorsObject.optionsJson.username = optionsJsonNode["username"].asString();
-		if(!optionsJsonNode["password"].isNull())
-			siteMonitorsObject.optionsJson.password = optionsJsonNode["password"].asString();
-		if(!optionsJsonNode["time_out"].isNull())
-			siteMonitorsObject.optionsJson.time_out = std::stol(optionsJsonNode["time_out"].asString());
-		if(!optionsJsonNode["ping_num"].isNull())
-			siteMonitorsObject.optionsJson.ping_num = std::stoi(optionsJsonNode["ping_num"].asString());
 		if(!optionsJsonNode["failure_rate"].isNull())
 			siteMonitorsObject.optionsJson.failure_rate = std::stof(optionsJsonNode["failure_rate"].asString());
-		if(!optionsJsonNode["request_format"].isNull())
-			siteMonitorsObject.optionsJson.request_format = optionsJsonNode["request_format"].asString();
-		if(!optionsJsonNode["response_format"].isNull())
-			siteMonitorsObject.optionsJson.response_format = optionsJsonNode["response_format"].asString();
+		if(!optionsJsonNode["time_out"].isNull())
+			siteMonitorsObject.optionsJson.time_out = std::stol(optionsJsonNode["time_out"].asString());
+		if(!optionsJsonNode["header"].isNull())
+			siteMonitorsObject.optionsJson.header = optionsJsonNode["header"].asString();
+		if(!optionsJsonNode["cookie"].isNull())
+			siteMonitorsObject.optionsJson.cookie = optionsJsonNode["cookie"].asString();
 		if(!optionsJsonNode["port"].isNull())
 			siteMonitorsObject.optionsJson.port = std::stoi(optionsJsonNode["port"].asString());
+		if(!optionsJsonNode["ping_num"].isNull())
+			siteMonitorsObject.optionsJson.ping_num = std::stoi(optionsJsonNode["ping_num"].asString());
 		if(!optionsJsonNode["authentication"].isNull())
 			siteMonitorsObject.optionsJson.authentication = std::stoi(optionsJsonNode["authentication"].asString());
+		if(!optionsJsonNode["http_method"].isNull())
+			siteMonitorsObject.optionsJson.http_method = optionsJsonNode["http_method"].asString();
+		if(!optionsJsonNode["match_rule"].isNull())
+			siteMonitorsObject.optionsJson.match_rule = std::stoi(optionsJsonNode["match_rule"].asString());
+		if(!optionsJsonNode["request_content"].isNull())
+			siteMonitorsObject.optionsJson.request_content = optionsJsonNode["request_content"].asString();
+		if(!optionsJsonNode["username"].isNull())
+			siteMonitorsObject.optionsJson.username = optionsJsonNode["username"].asString();
 		if(!optionsJsonNode["traceroute"].isNull())
 			siteMonitorsObject.optionsJson.traceroute = std::stol(optionsJsonNode["traceroute"].asString());
+		if(!optionsJsonNode["response_format"].isNull())
+			siteMonitorsObject.optionsJson.response_format = optionsJsonNode["response_format"].asString();
+		if(!optionsJsonNode["dns_type"].isNull())
+			siteMonitorsObject.optionsJson.dns_type = optionsJsonNode["dns_type"].asString();
+		if(!optionsJsonNode["group_id"].isNull())
+			siteMonitorsObject.optionsJson.group_id = optionsJsonNode["group_id"].asString();
+		if(!optionsJsonNode["dns_server"].isNull())
+			siteMonitorsObject.optionsJson.dns_server = optionsJsonNode["dns_server"].asString();
+		if(!optionsJsonNode["enable_operator_dns"].isNull())
+			siteMonitorsObject.optionsJson.enable_operator_dns = optionsJsonNode["enable_operator_dns"].asString() == "true";
+		if(!optionsJsonNode["attempts"].isNull())
+			siteMonitorsObject.optionsJson.attempts = std::stol(optionsJsonNode["attempts"].asString());
+		if(!optionsJsonNode["protocol"].isNull())
+			siteMonitorsObject.optionsJson.protocol = optionsJsonNode["protocol"].asString();
 		siteMonitors_.push_back(siteMonitorsObject);
 	}
+	if(!value["Success"].isNull())
+		success_ = value["Success"].asString();
 	if(!value["Code"].isNull())
 		code_ = value["Code"].asString();
 	if(!value["Message"].isNull())
 		message_ = value["Message"].asString();
-	if(!value["Success"].isNull())
-		success_ = value["Success"].asString();
 	if(!value["PageNumber"].isNull())
 		pageNumber_ = std::stoi(value["PageNumber"].asString());
 	if(!value["PageSize"].isNull())

+ 22 - 0
cms/src/model/PutGroupMetricRuleRequest.cc

@@ -93,6 +93,17 @@ void PutGroupMetricRuleRequest::setEscalationsInfoComparisonOperator(const std::
 	setParameter("EscalationsInfoComparisonOperator", escalationsInfoComparisonOperator);
 }
 
+std::string PutGroupMetricRuleRequest::getNoDataPolicy()const
+{
+	return noDataPolicy_;
+}
+
+void PutGroupMetricRuleRequest::setNoDataPolicy(const std::string& noDataPolicy)
+{
+	noDataPolicy_ = noDataPolicy;
+	setParameter("NoDataPolicy", noDataPolicy);
+}
+
 std::string PutGroupMetricRuleRequest::getNoEffectiveInterval()const
 {
 	return noEffectiveInterval_;
@@ -148,6 +159,17 @@ void PutGroupMetricRuleRequest::setEscalationsWarnTimes(int escalationsWarnTimes
 	setParameter("EscalationsWarnTimes", std::to_string(escalationsWarnTimes));
 }
 
+Struct PutGroupMetricRuleRequest::getCompositeExpression()const
+{
+	return compositeExpression_;
+}
+
+void PutGroupMetricRuleRequest::setCompositeExpression(const Struct& compositeExpression)
+{
+	compositeExpression_ = compositeExpression;
+	setParameter("CompositeExpression", std::to_string(compositeExpression));
+}
+
 std::string PutGroupMetricRuleRequest::getPeriod()const
 {
 	return period_;

+ 2 - 2
cms/src/model/PutGroupMetricRuleResult.cc

@@ -39,12 +39,12 @@ void PutGroupMetricRuleResult::parse(const std::string &payload)
 	Json::Value value;
 	reader.parse(payload, value);
 	setRequestId(value["RequestId"].asString());
-	if(!value["Success"].isNull())
-		success_ = value["Success"].asString() == "true";
 	if(!value["Code"].isNull())
 		code_ = value["Code"].asString();
 	if(!value["Message"].isNull())
 		message_ = value["Message"].asString();
+	if(!value["Success"].isNull())
+		success_ = value["Success"].asString() == "true";
 
 }
 

+ 44 - 0
cms/src/model/PutResourceMetricRuleRequest.cc

@@ -93,6 +93,17 @@ void PutResourceMetricRuleRequest::setEscalationsInfoComparisonOperator(const st
 	setParameter("EscalationsInfoComparisonOperator", escalationsInfoComparisonOperator);
 }
 
+std::string PutResourceMetricRuleRequest::getNoDataPolicy()const
+{
+	return noDataPolicy_;
+}
+
+void PutResourceMetricRuleRequest::setNoDataPolicy(const std::string& noDataPolicy)
+{
+	noDataPolicy_ = noDataPolicy;
+	setParameter("NoDataPolicy", noDataPolicy);
+}
+
 std::string PutResourceMetricRuleRequest::getNoEffectiveInterval()const
 {
 	return noEffectiveInterval_;
@@ -148,6 +159,17 @@ void PutResourceMetricRuleRequest::setEscalationsWarnTimes(int escalationsWarnTi
 	setParameter("EscalationsWarnTimes", std::to_string(escalationsWarnTimes));
 }
 
+Struct PutResourceMetricRuleRequest::getCompositeExpression()const
+{
+	return compositeExpression_;
+}
+
+void PutResourceMetricRuleRequest::setCompositeExpression(const Struct& compositeExpression)
+{
+	compositeExpression_ = compositeExpression;
+	setParameter("CompositeExpression", std::to_string(compositeExpression));
+}
+
 std::string PutResourceMetricRuleRequest::getPeriod()const
 {
 	return period_;
@@ -192,6 +214,17 @@ void PutResourceMetricRuleRequest::setEscalationsCriticalStatistics(const std::s
 	setParameter("EscalationsCriticalStatistics", escalationsCriticalStatistics);
 }
 
+std::string PutResourceMetricRuleRequest::getGroupId()const
+{
+	return groupId_;
+}
+
+void PutResourceMetricRuleRequest::setGroupId(const std::string& groupId)
+{
+	groupId_ = groupId;
+	setParameter("GroupId", groupId);
+}
+
 std::string PutResourceMetricRuleRequest::getResources()const
 {
 	return resources_;
@@ -225,6 +258,17 @@ void PutResourceMetricRuleRequest::setGroupBy(const std::string& groupBy)
 	setParameter("GroupBy", groupBy);
 }
 
+std::string PutResourceMetricRuleRequest::getGroupName()const
+{
+	return groupName_;
+}
+
+void PutResourceMetricRuleRequest::setGroupName(const std::string& groupName)
+{
+	groupName_ = groupName;
+	setParameter("GroupName", groupName);
+}
+
 int PutResourceMetricRuleRequest::getEscalationsCriticalTimes()const
 {
 	return escalationsCriticalTimes_;

+ 2 - 2
cms/src/model/PutResourceMetricRuleResult.cc

@@ -39,12 +39,12 @@ void PutResourceMetricRuleResult::parse(const std::string &payload)
 	Json::Value value;
 	reader.parse(payload, value);
 	setRequestId(value["RequestId"].asString());
-	if(!value["Success"].isNull())
-		success_ = value["Success"].asString() == "true";
 	if(!value["Code"].isNull())
 		code_ = value["Code"].asString();
 	if(!value["Message"].isNull())
 		message_ = value["Message"].asString();
+	if(!value["Success"].isNull())
+		success_ = value["Success"].asString() == "true";
 
 }
 

+ 6 - 3
cms/src/model/PutResourceMetricRulesRequest.cc

@@ -44,20 +44,23 @@ void PutResourceMetricRulesRequest::setRules(const std::vector<Rules>& rules)
 		setParameter(rulesObjStr + ".EscalationsInfoStatistics", rulesObj.escalationsInfoStatistics);
 		setParameter(rulesObjStr + ".EffectiveInterval", rulesObj.effectiveInterval);
 		setParameter(rulesObjStr + ".EscalationsInfoComparisonOperator", rulesObj.escalationsInfoComparisonOperator);
+		setParameter(rulesObjStr + ".NoDataPolicy", rulesObj.noDataPolicy);
 		setParameter(rulesObjStr + ".NoEffectiveInterval", rulesObj.noEffectiveInterval);
 		setParameter(rulesObjStr + ".EmailSubject", rulesObj.emailSubject);
 		setParameter(rulesObjStr + ".SilenceTime", std::to_string(rulesObj.silenceTime));
 		setParameter(rulesObjStr + ".MetricName", rulesObj.metricName);
 		setParameter(rulesObjStr + ".EscalationsWarnTimes", std::to_string(rulesObj.escalationsWarnTimes));
-		setParameter(rulesObjStr + ".Period", rulesObj.period);
+		setParameter(rulesObjStr + ".CompositeExpression", rulesObj.compositeExpression);
 		setParameter(rulesObjStr + ".EscalationsWarnThreshold", rulesObj.escalationsWarnThreshold);
+		setParameter(rulesObjStr + ".Period", rulesObj.period);
 		setParameter(rulesObjStr + ".ContactGroups", rulesObj.contactGroups);
 		setParameter(rulesObjStr + ".EscalationsCriticalStatistics", rulesObj.escalationsCriticalStatistics);
-		setParameter(rulesObjStr + ".Resources", rulesObj.resources);
+		setParameter(rulesObjStr + ".GroupId", rulesObj.groupId);
 		setParameter(rulesObjStr + ".EscalationsInfoTimes", std::to_string(rulesObj.escalationsInfoTimes));
+		setParameter(rulesObjStr + ".Resources", rulesObj.resources);
 		setParameter(rulesObjStr + ".EscalationsCriticalTimes", std::to_string(rulesObj.escalationsCriticalTimes));
-		setParameter(rulesObjStr + ".EscalationsWarnStatistics", rulesObj.escalationsWarnStatistics);
 		setParameter(rulesObjStr + ".EscalationsInfoThreshold", rulesObj.escalationsInfoThreshold);
+		setParameter(rulesObjStr + ".EscalationsWarnStatistics", rulesObj.escalationsWarnStatistics);
 		setParameter(rulesObjStr + "._Namespace", rulesObj._namespace);
 		setParameter(rulesObjStr + ".Interval", rulesObj.interval);
 		setParameter(rulesObjStr + ".RuleId", rulesObj.ruleId);

+ 2 - 2
cms/src/model/PutResourceMetricRulesResult.cc

@@ -54,12 +54,12 @@ void PutResourceMetricRulesResult::parse(const std::string &payload)
 			failedListResultObject.result.success = resultNode["Success"].asString() == "true";
 		failedListResult_.push_back(failedListResultObject);
 	}
-	if(!value["Success"].isNull())
-		success_ = value["Success"].asString() == "true";
 	if(!value["Code"].isNull())
 		code_ = value["Code"].asString();
 	if(!value["Message"].isNull())
 		message_ = value["Message"].asString();
+	if(!value["Success"].isNull())
+		success_ = value["Success"].asString() == "true";
 
 }