diff --git a/conf/db/zsv/V5.1.0__schema.sql b/conf/db/zsv/V5.1.0__schema.sql
index f2302d4e9d4..796e4135c4f 100644
--- a/conf/db/zsv/V5.1.0__schema.sql
+++ b/conf/db/zsv/V5.1.0__schema.sql
@@ -36,3 +36,19 @@ SET src.`type` = IF(ldap.serverType IN ('OpenLdap', 'WindowsAD'), ldap.serverTyp
WHERE src.`type` = 'ldap';
CALL INSERT_COLUMN('ThirdPartyAccountSourceVO', 'updateAccountStrategies', 'varchar(255)', 0, '', 'createAccountStrategy');
+
+-- Feature: Log Server | ZSV-12254
+
+CREATE TABLE IF NOT EXISTS `zstack`.`LogServerVO` (
+ `uuid` varchar(32) NOT NULL UNIQUE,
+ `name` varchar(255) NOT NULL,
+ `description` varchar(2048) NULL,
+ `category` varchar(255) NOT NULL,
+ `type` varchar(255) NOT NULL,
+ `level` varchar(255) NULL,
+ `state` varchar(255) NOT NULL DEFAULT 'Enabled',
+ `configuration` text NOT NULL,
+ `lastOpDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `createDate` timestamp NOT NULL DEFAULT '1999-12-31 23:59:59',
+ PRIMARY KEY (`uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
diff --git a/conf/persistence.xml b/conf/persistence.xml
index 97fa6edff1c..bb95abb9228 100755
--- a/conf/persistence.xml
+++ b/conf/persistence.xml
@@ -224,5 +224,6 @@
org.zstack.softwarePackage.header.SoftwarePackageVO
org.zstack.header.vm.metadata.VmMetadataDirtyVO
org.zstack.header.vm.metadata.VmMetadataFlushStateVO
+ org.zstack.log.server.LogServerVO
diff --git a/core/src/main/java/org/zstack/core/log/LogGlobalConfig.java b/core/src/main/java/org/zstack/core/log/LogGlobalConfig.java
index a368ed1fbcc..041124abe33 100644
--- a/core/src/main/java/org/zstack/core/log/LogGlobalConfig.java
+++ b/core/src/main/java/org/zstack/core/log/LogGlobalConfig.java
@@ -1,6 +1,7 @@
package org.zstack.core.log;
import org.zstack.core.config.GlobalConfig;
+import org.zstack.core.config.GlobalConfigDef;
import org.zstack.core.config.GlobalConfigDefinition;
import org.zstack.core.config.GlobalConfigValidation;
@@ -13,4 +14,8 @@ public class LogGlobalConfig {
@GlobalConfigValidation
public static GlobalConfig LOG_DELETE_ACCUMULATED_FILE_SIZE = new GlobalConfig(CATEGORY, "log.delete.accumulatedFileSize");
+
+ @GlobalConfigValidation(numberGreaterThan = 1)
+ @GlobalConfigDef(defaultValue = "30", type = Long.class, description = "sync custom log configuration interval")
+ public static GlobalConfig SYNC_CUSTOM_LOG_CONFIGURATION_TASK_INTERVAL = new GlobalConfig(CATEGORY, "log.syncCustomLogConfigurationTaskInterval");
}
diff --git a/rest/src/main/resources/scripts/SdkDataStructureGenerator.groovy b/rest/src/main/resources/scripts/SdkDataStructureGenerator.groovy
index 30736cef780..0a9927b2601 100755
--- a/rest/src/main/resources/scripts/SdkDataStructureGenerator.groovy
+++ b/rest/src/main/resources/scripts/SdkDataStructureGenerator.groovy
@@ -71,6 +71,7 @@ class SdkDataStructureGenerator implements SdkTemplate {
dstToSrc.sort()
SdkFile f = new SdkFile()
+ f.subPath = "org/zstack/sdk"
f.fileName = "SourceClassMap.java"
f.content = """package org.zstack.sdk;
diff --git a/sdk/src/main/java/org/zstack/sdk/AddLogConfigurationAction.java b/sdk/src/main/java/org/zstack/sdk/AddLogConfigurationAction.java
index 86a11aa953d..8538477d4e9 100644
--- a/sdk/src/main/java/org/zstack/sdk/AddLogConfigurationAction.java
+++ b/sdk/src/main/java/org/zstack/sdk/AddLogConfigurationAction.java
@@ -34,6 +34,9 @@ public Result throwExceptionIfError() {
@Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
public java.lang.String type;
+ @Param(required = false, validValues = {"OFF","FATAL","ERROR","WARN","INFO","DEBUG","TRACE","ALL"}, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
+ public java.lang.String level;
+
@Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
public java.lang.String configuration;
diff --git a/sdk/src/main/java/org/zstack/sdk/AddLogServerAction.java b/sdk/src/main/java/org/zstack/sdk/AddLogServerAction.java
new file mode 100644
index 00000000000..63616a924c1
--- /dev/null
+++ b/sdk/src/main/java/org/zstack/sdk/AddLogServerAction.java
@@ -0,0 +1,122 @@
+package org.zstack.sdk;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.zstack.sdk.*;
+
+public class AddLogServerAction extends AbstractAction {
+
+ private static final HashMap parameterMap = new HashMap<>();
+
+ private static final HashMap nonAPIParameterMap = new HashMap<>();
+
+ public static class Result {
+ public ErrorCode error;
+ public org.zstack.sdk.AddLogServerResult value;
+
+ public Result throwExceptionIfError() {
+ if (error != null) {
+ throw new ApiException(
+ String.format("error[code: %s, description: %s, details: %s]", error.code, error.description, error.details)
+ );
+ }
+
+ return this;
+ }
+ }
+
+ @Param(required = true, maxLength = 255, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
+ public java.lang.String name;
+
+ @Param(required = false, maxLength = 2048, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
+ public java.lang.String description;
+
+ @Param(required = true, validValues = {"ManagementNodeLog","PlatformOperationLog"}, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
+ public java.lang.String category;
+
+ @Param(required = true, validValues = {"Log4j2","FluentBit"}, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
+ public java.lang.String type;
+
+ @Param(required = false, validValues = {"OFF","FATAL","ERROR","WARN","INFO","DEBUG","TRACE","ALL"}, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
+ public java.lang.String level;
+
+ @Param(required = true, maxLength = 8192, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
+ public java.lang.String configuration;
+
+ @Param(required = false)
+ public java.lang.String resourceUuid;
+
+ @Param(required = false, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
+ public java.util.List tagUuids;
+
+ @Param(required = false)
+ public java.util.List systemTags;
+
+ @Param(required = false)
+ public java.util.List userTags;
+
+ @Param(required = false)
+ public String sessionId;
+
+ @Param(required = false)
+ public String accessKeyId;
+
+ @Param(required = false)
+ public String accessKeySecret;
+
+ @Param(required = false)
+ public String requestIp;
+
+ @NonAPIParam
+ public long timeout = -1;
+
+ @NonAPIParam
+ public long pollingInterval = -1;
+
+
+ private Result makeResult(ApiResult res) {
+ Result ret = new Result();
+ if (res.error != null) {
+ ret.error = res.error;
+ return ret;
+ }
+
+ org.zstack.sdk.AddLogServerResult value = res.getResult(org.zstack.sdk.AddLogServerResult.class);
+ ret.value = value == null ? new org.zstack.sdk.AddLogServerResult() : value;
+
+ return ret;
+ }
+
+ public Result call() {
+ ApiResult res = ZSClient.call(this);
+ return makeResult(res);
+ }
+
+ public void call(final Completion completion) {
+ ZSClient.call(this, new InternalCompletion() {
+ @Override
+ public void complete(ApiResult res) {
+ completion.complete(makeResult(res));
+ }
+ });
+ }
+
+ protected Map getParameterMap() {
+ return parameterMap;
+ }
+
+ protected Map getNonAPIParameterMap() {
+ return nonAPIParameterMap;
+ }
+
+ protected RestInfo getRestInfo() {
+ RestInfo info = new RestInfo();
+ info.httpMethod = "POST";
+ info.path = "/log/servers";
+ info.needSession = true;
+ info.needPoll = true;
+ info.parameterName = "params";
+ return info;
+ }
+
+}
diff --git a/sdk/src/main/java/org/zstack/sdk/AddLogServerResult.java b/sdk/src/main/java/org/zstack/sdk/AddLogServerResult.java
new file mode 100644
index 00000000000..fe40b3b9c2c
--- /dev/null
+++ b/sdk/src/main/java/org/zstack/sdk/AddLogServerResult.java
@@ -0,0 +1,14 @@
+package org.zstack.sdk;
+
+import org.zstack.sdk.LogServerInventory;
+
+public class AddLogServerResult {
+ public LogServerInventory inventory;
+ public void setInventory(LogServerInventory inventory) {
+ this.inventory = inventory;
+ }
+ public LogServerInventory getInventory() {
+ return this.inventory;
+ }
+
+}
diff --git a/sdk/src/main/java/org/zstack/sdk/DeleteLogServerAction.java b/sdk/src/main/java/org/zstack/sdk/DeleteLogServerAction.java
new file mode 100644
index 00000000000..57fbf96daad
--- /dev/null
+++ b/sdk/src/main/java/org/zstack/sdk/DeleteLogServerAction.java
@@ -0,0 +1,101 @@
+package org.zstack.sdk;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.zstack.sdk.*;
+
+public class DeleteLogServerAction extends AbstractAction {
+
+ private static final HashMap parameterMap = new HashMap<>();
+
+ private static final HashMap nonAPIParameterMap = new HashMap<>();
+
+ public static class Result {
+ public ErrorCode error;
+ public org.zstack.sdk.DeleteLogServerResult value;
+
+ public Result throwExceptionIfError() {
+ if (error != null) {
+ throw new ApiException(
+ String.format("error[code: %s, description: %s, details: %s]", error.code, error.description, error.details)
+ );
+ }
+
+ return this;
+ }
+ }
+
+ @Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
+ public java.lang.String uuid;
+
+ @Param(required = false)
+ public java.util.List systemTags;
+
+ @Param(required = false)
+ public java.util.List userTags;
+
+ @Param(required = false)
+ public String sessionId;
+
+ @Param(required = false)
+ public String accessKeyId;
+
+ @Param(required = false)
+ public String accessKeySecret;
+
+ @Param(required = false)
+ public String requestIp;
+
+ @NonAPIParam
+ public long timeout = -1;
+
+ @NonAPIParam
+ public long pollingInterval = -1;
+
+
+ private Result makeResult(ApiResult res) {
+ Result ret = new Result();
+ if (res.error != null) {
+ ret.error = res.error;
+ return ret;
+ }
+
+ org.zstack.sdk.DeleteLogServerResult value = res.getResult(org.zstack.sdk.DeleteLogServerResult.class);
+ ret.value = value == null ? new org.zstack.sdk.DeleteLogServerResult() : value;
+
+ return ret;
+ }
+
+ public Result call() {
+ ApiResult res = ZSClient.call(this);
+ return makeResult(res);
+ }
+
+ public void call(final Completion completion) {
+ ZSClient.call(this, new InternalCompletion() {
+ @Override
+ public void complete(ApiResult res) {
+ completion.complete(makeResult(res));
+ }
+ });
+ }
+
+ protected Map getParameterMap() {
+ return parameterMap;
+ }
+
+ protected Map getNonAPIParameterMap() {
+ return nonAPIParameterMap;
+ }
+
+ protected RestInfo getRestInfo() {
+ RestInfo info = new RestInfo();
+ info.httpMethod = "DELETE";
+ info.path = "/log/servers";
+ info.needSession = true;
+ info.needPoll = true;
+ info.parameterName = "";
+ return info;
+ }
+
+}
diff --git a/sdk/src/main/java/org/zstack/sdk/DeleteLogServerResult.java b/sdk/src/main/java/org/zstack/sdk/DeleteLogServerResult.java
new file mode 100644
index 00000000000..87a8349b0b0
--- /dev/null
+++ b/sdk/src/main/java/org/zstack/sdk/DeleteLogServerResult.java
@@ -0,0 +1,7 @@
+package org.zstack.sdk;
+
+
+
+public class DeleteLogServerResult {
+
+}
diff --git a/sdk/src/main/java/org/zstack/sdk/LogCategory.java b/sdk/src/main/java/org/zstack/sdk/LogCategory.java
new file mode 100644
index 00000000000..96662c4bfb3
--- /dev/null
+++ b/sdk/src/main/java/org/zstack/sdk/LogCategory.java
@@ -0,0 +1,6 @@
+package org.zstack.sdk;
+
+public enum LogCategory {
+ ManagementNodeLog,
+ PlatformOperationLog,
+}
diff --git a/sdk/src/main/java/org/zstack/sdk/LogLevel.java b/sdk/src/main/java/org/zstack/sdk/LogLevel.java
new file mode 100644
index 00000000000..3c184fb2820
--- /dev/null
+++ b/sdk/src/main/java/org/zstack/sdk/LogLevel.java
@@ -0,0 +1,12 @@
+package org.zstack.sdk;
+
+public enum LogLevel {
+ OFF,
+ FATAL,
+ ERROR,
+ WARN,
+ INFO,
+ DEBUG,
+ TRACE,
+ ALL,
+}
diff --git a/sdk/src/main/java/org/zstack/sdk/LogServerInventory.java b/sdk/src/main/java/org/zstack/sdk/LogServerInventory.java
new file mode 100644
index 00000000000..fab7139f4b3
--- /dev/null
+++ b/sdk/src/main/java/org/zstack/sdk/LogServerInventory.java
@@ -0,0 +1,98 @@
+package org.zstack.sdk;
+
+import org.zstack.sdk.LogCategory;
+import org.zstack.sdk.LogType;
+import org.zstack.sdk.LogLevel;
+import org.zstack.sdk.LogServerState;
+
+public class LogServerInventory {
+
+ public java.lang.String uuid;
+ public void setUuid(java.lang.String uuid) {
+ this.uuid = uuid;
+ }
+ public java.lang.String getUuid() {
+ return this.uuid;
+ }
+
+ public java.lang.String name;
+ public void setName(java.lang.String name) {
+ this.name = name;
+ }
+ public java.lang.String getName() {
+ return this.name;
+ }
+
+ public java.lang.String description;
+ public void setDescription(java.lang.String description) {
+ this.description = description;
+ }
+ public java.lang.String getDescription() {
+ return this.description;
+ }
+
+ public LogCategory category;
+ public void setCategory(LogCategory category) {
+ this.category = category;
+ }
+ public LogCategory getCategory() {
+ return this.category;
+ }
+
+ public LogType type;
+ public void setType(LogType type) {
+ this.type = type;
+ }
+ public LogType getType() {
+ return this.type;
+ }
+
+ public LogLevel level;
+ public void setLevel(LogLevel level) {
+ this.level = level;
+ }
+ public LogLevel getLevel() {
+ return this.level;
+ }
+
+ public LogServerState state;
+ public void setState(LogServerState state) {
+ this.state = state;
+ }
+ public LogServerState getState() {
+ return this.state;
+ }
+
+ public java.lang.String configuration;
+ public void setConfiguration(java.lang.String configuration) {
+ this.configuration = configuration;
+ }
+ public java.lang.String getConfiguration() {
+ return this.configuration;
+ }
+
+ public java.lang.String accountUuid;
+ public void setAccountUuid(java.lang.String accountUuid) {
+ this.accountUuid = accountUuid;
+ }
+ public java.lang.String getAccountUuid() {
+ return this.accountUuid;
+ }
+
+ public java.sql.Timestamp createDate;
+ public void setCreateDate(java.sql.Timestamp createDate) {
+ this.createDate = createDate;
+ }
+ public java.sql.Timestamp getCreateDate() {
+ return this.createDate;
+ }
+
+ public java.sql.Timestamp lastOpDate;
+ public void setLastOpDate(java.sql.Timestamp lastOpDate) {
+ this.lastOpDate = lastOpDate;
+ }
+ public java.sql.Timestamp getLastOpDate() {
+ return this.lastOpDate;
+ }
+
+}
diff --git a/sdk/src/main/java/org/zstack/sdk/LogServerState.java b/sdk/src/main/java/org/zstack/sdk/LogServerState.java
new file mode 100644
index 00000000000..4d5d06f5f3f
--- /dev/null
+++ b/sdk/src/main/java/org/zstack/sdk/LogServerState.java
@@ -0,0 +1,6 @@
+package org.zstack.sdk;
+
+public enum LogServerState {
+ Enabled,
+ Disabled,
+}
diff --git a/sdk/src/main/java/org/zstack/sdk/LogType.java b/sdk/src/main/java/org/zstack/sdk/LogType.java
new file mode 100644
index 00000000000..9ab0dd45333
--- /dev/null
+++ b/sdk/src/main/java/org/zstack/sdk/LogType.java
@@ -0,0 +1,6 @@
+package org.zstack.sdk;
+
+public enum LogType {
+ Log4j2,
+ FluentBit,
+}
diff --git a/sdk/src/main/java/org/zstack/sdk/QueryLogServerAction.java b/sdk/src/main/java/org/zstack/sdk/QueryLogServerAction.java
new file mode 100644
index 00000000000..7c0b3dc9563
--- /dev/null
+++ b/sdk/src/main/java/org/zstack/sdk/QueryLogServerAction.java
@@ -0,0 +1,75 @@
+package org.zstack.sdk;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.zstack.sdk.*;
+
+public class QueryLogServerAction extends QueryAction {
+
+ private static final HashMap parameterMap = new HashMap<>();
+
+ private static final HashMap nonAPIParameterMap = new HashMap<>();
+
+ public static class Result {
+ public ErrorCode error;
+ public org.zstack.sdk.QueryLogServerResult value;
+
+ public Result throwExceptionIfError() {
+ if (error != null) {
+ throw new ApiException(
+ String.format("error[code: %s, description: %s, details: %s]", error.code, error.description, error.details)
+ );
+ }
+
+ return this;
+ }
+ }
+
+
+
+ private Result makeResult(ApiResult res) {
+ Result ret = new Result();
+ if (res.error != null) {
+ ret.error = res.error;
+ return ret;
+ }
+
+ org.zstack.sdk.QueryLogServerResult value = res.getResult(org.zstack.sdk.QueryLogServerResult.class);
+ ret.value = value == null ? new org.zstack.sdk.QueryLogServerResult() : value;
+
+ return ret;
+ }
+
+ public Result call() {
+ ApiResult res = ZSClient.call(this);
+ return makeResult(res);
+ }
+
+ public void call(final Completion completion) {
+ ZSClient.call(this, new InternalCompletion() {
+ @Override
+ public void complete(ApiResult res) {
+ completion.complete(makeResult(res));
+ }
+ });
+ }
+
+ protected Map getParameterMap() {
+ return parameterMap;
+ }
+
+ protected Map getNonAPIParameterMap() {
+ return nonAPIParameterMap;
+ }
+
+ protected RestInfo getRestInfo() {
+ RestInfo info = new RestInfo();
+ info.httpMethod = "GET";
+ info.path = "/log/servers";
+ info.needSession = true;
+ info.needPoll = false;
+ info.parameterName = "";
+ return info;
+ }
+
+}
diff --git a/sdk/src/main/java/org/zstack/sdk/QueryLogServerResult.java b/sdk/src/main/java/org/zstack/sdk/QueryLogServerResult.java
new file mode 100644
index 00000000000..957fadbefd6
--- /dev/null
+++ b/sdk/src/main/java/org/zstack/sdk/QueryLogServerResult.java
@@ -0,0 +1,22 @@
+package org.zstack.sdk;
+
+
+
+public class QueryLogServerResult {
+ public java.util.List inventories;
+ public void setInventories(java.util.List inventories) {
+ this.inventories = inventories;
+ }
+ public java.util.List getInventories() {
+ return this.inventories;
+ }
+
+ public java.lang.Long total;
+ public void setTotal(java.lang.Long total) {
+ this.total = total;
+ }
+ public java.lang.Long getTotal() {
+ return this.total;
+ }
+
+}
diff --git a/sdk/src/main/java/SourceClassMap.java b/sdk/src/main/java/org/zstack/sdk/SourceClassMap.java
similarity index 99%
rename from sdk/src/main/java/SourceClassMap.java
rename to sdk/src/main/java/org/zstack/sdk/SourceClassMap.java
index fc0be01aa3a..6b2c54dc13a 100644
--- a/sdk/src/main/java/SourceClassMap.java
+++ b/sdk/src/main/java/org/zstack/sdk/SourceClassMap.java
@@ -368,6 +368,11 @@ public class SourceClassMap {
put("org.zstack.license.entity.LicenseUsageResult", "org.zstack.sdk.license.entity.LicenseUsageResult");
put("org.zstack.license.entity.LicenseUsageView", "org.zstack.sdk.license.entity.LicenseUsageView");
put("org.zstack.license.entity.UpdateLicenseView", "org.zstack.sdk.license.entity.UpdateLicenseView");
+ put("org.zstack.log.server.LogCategory", "org.zstack.sdk.LogCategory");
+ put("org.zstack.log.server.LogLevel", "org.zstack.sdk.LogLevel");
+ put("org.zstack.log.server.LogServerInventory", "org.zstack.sdk.LogServerInventory");
+ put("org.zstack.log.server.LogServerState", "org.zstack.sdk.LogServerState");
+ put("org.zstack.log.server.LogType", "org.zstack.sdk.LogType");
put("org.zstack.loginControl.entity.AccessControlRuleInventory", "org.zstack.sdk.AccessControlRuleInventory");
put("org.zstack.loginControl.entity.ControlStrategy", "org.zstack.sdk.ControlStrategy");
put("org.zstack.managements.entity.common.ManagementNodeStatusView", "org.zstack.sdk.managements.common.ManagementNodeStatusView");
@@ -925,6 +930,11 @@ public class SourceClassMap {
put("org.zstack.sdk.LoadBalancerServerGroupVmNicRefInventory", "org.zstack.network.service.lb.LoadBalancerServerGroupVmNicRefInventory");
put("org.zstack.sdk.LocalStorageResourceRefInventory", "org.zstack.storage.primary.local.LocalStorageResourceRefInventory");
put("org.zstack.sdk.LocateStatus", "org.zstack.storage.device.localRaid.LocateStatus");
+ put("org.zstack.sdk.LogCategory", "org.zstack.log.server.LogCategory");
+ put("org.zstack.sdk.LogLevel", "org.zstack.log.server.LogLevel");
+ put("org.zstack.sdk.LogServerInventory", "org.zstack.log.server.LogServerInventory");
+ put("org.zstack.sdk.LogServerState", "org.zstack.log.server.LogServerState");
+ put("org.zstack.sdk.LogType", "org.zstack.log.server.LogType");
put("org.zstack.sdk.LoginAuthenticationProcedureDesc", "org.zstack.header.identity.login.LoginAuthenticationProcedureDesc");
put("org.zstack.sdk.LongJobInventory", "org.zstack.header.longjob.LongJobInventory");
put("org.zstack.sdk.LongJobState", "org.zstack.header.longjob.LongJobState");
diff --git a/sdk/src/main/java/org/zstack/sdk/UpdateLogServerAction.java b/sdk/src/main/java/org/zstack/sdk/UpdateLogServerAction.java
new file mode 100644
index 00000000000..e2853cb1f16
--- /dev/null
+++ b/sdk/src/main/java/org/zstack/sdk/UpdateLogServerAction.java
@@ -0,0 +1,107 @@
+package org.zstack.sdk;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.zstack.sdk.*;
+
+public class UpdateLogServerAction extends AbstractAction {
+
+ private static final HashMap parameterMap = new HashMap<>();
+
+ private static final HashMap nonAPIParameterMap = new HashMap<>();
+
+ public static class Result {
+ public ErrorCode error;
+ public org.zstack.sdk.UpdateLogServerResult value;
+
+ public Result throwExceptionIfError() {
+ if (error != null) {
+ throw new ApiException(
+ String.format("error[code: %s, description: %s, details: %s]", error.code, error.description, error.details)
+ );
+ }
+
+ return this;
+ }
+ }
+
+ @Param(required = true, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
+ public java.lang.String uuid;
+
+ @Param(required = false, maxLength = 255, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
+ public java.lang.String name;
+
+ @Param(required = false, maxLength = 2048, nonempty = false, nullElements = false, emptyString = true, noTrim = false)
+ public java.lang.String description;
+
+ @Param(required = false)
+ public java.util.List systemTags;
+
+ @Param(required = false)
+ public java.util.List userTags;
+
+ @Param(required = false)
+ public String sessionId;
+
+ @Param(required = false)
+ public String accessKeyId;
+
+ @Param(required = false)
+ public String accessKeySecret;
+
+ @Param(required = false)
+ public String requestIp;
+
+ @NonAPIParam
+ public long timeout = -1;
+
+ @NonAPIParam
+ public long pollingInterval = -1;
+
+
+ private Result makeResult(ApiResult res) {
+ Result ret = new Result();
+ if (res.error != null) {
+ ret.error = res.error;
+ return ret;
+ }
+
+ org.zstack.sdk.UpdateLogServerResult value = res.getResult(org.zstack.sdk.UpdateLogServerResult.class);
+ ret.value = value == null ? new org.zstack.sdk.UpdateLogServerResult() : value;
+
+ return ret;
+ }
+
+ public Result call() {
+ ApiResult res = ZSClient.call(this);
+ return makeResult(res);
+ }
+
+ public void call(final Completion completion) {
+ ZSClient.call(this, new InternalCompletion() {
+ @Override
+ public void complete(ApiResult res) {
+ completion.complete(makeResult(res));
+ }
+ });
+ }
+
+ protected Map getParameterMap() {
+ return parameterMap;
+ }
+
+ protected Map getNonAPIParameterMap() {
+ return nonAPIParameterMap;
+ }
+
+ protected RestInfo getRestInfo() {
+ RestInfo info = new RestInfo();
+ info.httpMethod = "PUT";
+ info.path = "/log/servers";
+ info.needSession = true;
+ info.needPoll = true;
+ info.parameterName = "updateLogServer";
+ return info;
+ }
+
+}
diff --git a/sdk/src/main/java/org/zstack/sdk/UpdateLogServerResult.java b/sdk/src/main/java/org/zstack/sdk/UpdateLogServerResult.java
new file mode 100644
index 00000000000..d32b9f98f2e
--- /dev/null
+++ b/sdk/src/main/java/org/zstack/sdk/UpdateLogServerResult.java
@@ -0,0 +1,14 @@
+package org.zstack.sdk;
+
+import org.zstack.sdk.LogServerInventory;
+
+public class UpdateLogServerResult {
+ public LogServerInventory inventory;
+ public void setInventory(LogServerInventory inventory) {
+ this.inventory = inventory;
+ }
+ public LogServerInventory getInventory() {
+ return this.inventory;
+ }
+
+}