节点在线、应用在线、配置在线使用令牌查询
大石头 authored at 2021-12-16 19:49:30
1.63 KiB
Stardust
using Stardust.Data.Configs;

namespace Stardust.Mcp;

/// <summary>宿主写操作适配器。实现放在 Web/WebApi,复用已注册的 ConfigService、DeployService、PipelineService 与 StarFactory。</summary>
public interface IMcpOperations
{
    Task<Int32> SetConfigAsync(Int32 configId, IDictionary<String, Object> configs);
    Task<Int32> PublishConfigAsync(Int32 configId);

    /// <summary>回滚到指定发布历史。复用 ConfigService 的回滚与通知逻辑,不在 MCP 内直接操作实体。</summary>
    Task<ConfigRollbackResult> RollbackConfigAsync(Int32 historyId);
    /// <summary>切换部署集当前版本。publishEnabledNodes 为 true 时按自动发布向启用节点下发安装,与 MVC/API UseVersion 相同。</summary>
    Task<String> UseVersionAsync(Int32 versionId, String ip, Boolean publishEnabledNodes = true);
    Task<Int32> ControlDeployAsync(Int32 deployId, Int32 deployNodeId, String action, String ip);
    Task<Object> TriggerPipelineAsync(Int32 pipelineId, String ip);
    Task<Object> SendNodeCommandAsync(String nodeCode, String command, String args);
    Task<Object> SendAppCommandAsync(String appName, String clientId, String command, String args);

    /// <summary>列出部署节点配置目录下的日志文件(节点指令 deploy/log/list,经 DeployService 合并日志配置)。</summary>
    Task<Object> ReadDeployLogFilesAsync(Int32 deployNodeId);

    /// <summary>读取部署节点日志文件尾部(节点指令 deploy/log/tail,offset 支持增量追新)。</summary>
    Task<Object> ReadDeployLogTailAsync(Int32 deployNodeId, String file, Int64 offset, Int32 maxBytes);
}