Skip to main content
Glama
yjiace

AlibabaCloud DevOps MCP Server

by yjiace
deploymentResources.ts16 kB
import { z } from 'zod'; import { yunxiaoRequest, buildUrl } from '../../common/utils.js'; // Define the referenced schemas based on their definitions in appstack.swagger.json const DeployMachineLogSchema = z.object({ aliyunRegion: z.string().optional(), deployBeginTime: z.number().optional(), deployEndTime: z.number().optional(), deployLog: z.string().optional(), deployLogPath: z.string().optional(), }).describe("主机部署日志"); const ResourceClaimSchema = z.object({ instanceName: z.string().describe("所引用的资源示例唯一名"), itemSnList: z.array(z.string()).describe("资源子项序列号列表"), refId: z.string().optional().describe("外部系统封装过的云资源唯一标识"), refType: z.enum(["FLOW"]).optional().describe("外部系统封装过的云资源类型"), sn: z.string().optional().describe("资源申请对象序列号"), specMap: z.record(z.object({}).passthrough()).describe("资源申请详情数据"), type: z.string().describe("资源子类型"), }).describe("资源申请模型"); // Schema for the GetMachineDeployLog API export const GetMachineDeployLogRequestSchema = z.object({ organizationId: z.string().describe("组织ID"), tunnelId: z.number().describe("隧道ID"), machineSn: z.string().describe("主机序列号"), }); export const GetMachineDeployLogResponseSchema = z.object({ data: DeployMachineLogSchema.optional(), errorAdvice: z.string().optional(), errorCode: z.string().optional(), errorMap: z.record(z.object({}).passthrough()).optional(), errorMessage: z.string().optional(), showType: z.number().optional(), success: z.boolean().optional(), traceId: z.string().optional(), }); // Schema for the AddHostListToHostGroup API export const AddHostListToHostGroupRequestSchema = z.object({ organizationId: z.string().describe("组织ID"), instanceName: z.string().describe("主机集群名称(非主机集群显示名)"), hostSns: z.array(z.string()).describe("ecs主机实例id列表(主机类型暂只支持ecs)"), }); export const AddHostListToHostGroupResponseSchema = z.boolean().describe("是否成功"); // Schema for the AddHostListToDeployGroup API export const AddHostListToDeployGroupRequestSchema = z.object({ organizationId: z.string().describe("组织ID"), instanceName: z.string().describe("主机集群名称(非主机集群显示名)"), groupName: z.string().describe("部署组名称(非部署组显示名)"), hostSns: z.array(z.string()).describe("ecs主机实例id列表(主机类型暂只支持ecs)"), }); export const AddHostListToDeployGroupResponseSchema = z.boolean().describe("是否成功"); // Schema for the DeleteHostListFromDeployGroup API export const DeleteHostListFromDeployGroupRequestSchema = z.object({ organizationId: z.string().describe("组织ID"), instanceName: z.string().describe("主机集群名称(非主机集群显示名)"), groupName: z.string().describe("部署组名称(非部署组显示名)"), hostSns: z.array(z.string()).describe("ecs主机实例id列表(主机类型暂只支持ecs)"), }); export const DeleteHostListFromDeployGroupResponseSchema = z.boolean().describe("是否成功"); // Schema for the DeleteHostListFromHostGroup API export const DeleteHostListFromHostGroupRequestSchema = z.object({ organizationId: z.string().describe("组织ID"), instanceName: z.string().describe("主机集群名称(非主机集群显示名)"), hostSns: z.array(z.string()).describe("ecs主机实例id列表(主机类型暂只支持ecs)"), }); export const DeleteHostListFromHostGroupResponseSchema = z.boolean().describe("是否成功"); // Schema for the GetDeployGroup API export const GetDeployGroupRequestSchema = z.object({ organizationId: z.string().describe("组织ID"), poolName: z.string().describe("资源池名称"), deployGroupName: z.string().describe("部署组名称"), }); export const GetDeployGroupResponseSchema = z.object({ claimList: z.array(ResourceClaimSchema).optional().describe("部署组下辖的资源申请详情列表"), creatorId: z.string().optional().describe("资源实例创建者 ID"), description: z.string().optional().describe("部署组描述"), displayName: z.string().optional().describe("部署组的展示名"), name: z.string().optional().describe("部署组的唯一名,仅允许包含小写字母、中划线和数字,且开头、结尾均为小写字母或数字"), poolName: z.string().optional().describe("隶属资源池的唯一名"), }); // Schema for the ListResourceInstances API export const ListResourceInstancesRequestSchema = z.object({ organizationId: z.string().describe("组织ID"), poolName: z.string().describe("资源池名称"), pagination: z.enum(["keyset"]).optional().describe("分页模式参数,目前只支持键集分页 keyset 模式"), perPage: z.number().min(1).max(100).default(20).optional().describe("分页尺寸参数,决定一页最多返回多少对象"), orderBy: z.enum(["id", "gmtCreate"]).optional().describe("分页排序属性,决定根据何种属性进行记录排序;推荐在实现严格遍历时,使用 id 属性"), sort: z.enum(["asc", "desc"]).optional().describe("分页排序升降序,asc 为升序,desc 为降序;推荐在实现严格遍历时,使用升序"), nextToken: z.string().optional().describe("键集分页 token,获取第一页数据时无需传入,否则需要传入前一页查询结果中的 nextToken 字段"), page: z.number().default(1).optional().describe("页码分页时使用,用于获取下一页内容"), }); export const ListResourceInstancesResponseSchema = z.object({ current: z.number().optional().describe("页码分页时存在该字段,表示当前页"), data: z.array(z.object({ category: z.enum(["COMPUTE"]).optional().describe("资源类别(如计算、存储、网络等)"), cloudMetadata: z.string().optional().describe("云产品元数据"), cloudProvider: z.string().optional().describe("云产品提供方"), contextMap: z.record(z.string()).optional().describe("资源详情数据"), creatorId: z.string().optional().describe("资源实例创建者 ID"), description: z.string().optional().describe("资源描述"), displayName: z.string().optional().describe("资源展示名"), gmtCreate: z.string().optional().describe("使用本地时区呈现的应用创建时间"), name: z.string().optional().describe("资源实例的唯一名,仅允许包含小写字母、中划线和数字,且开头、结尾均为小写字母或数字"), poolName: z.string().optional().describe("资源池唯一名"), region: z.string().optional().describe("资源所处区域"), resourceGroupId: z.string().optional().describe("云产品提供方所使用的资源唯一 ID"), type: z.string().optional().describe("资源子类型"), })).optional().describe("分页结果数据"), nextToken: z.string().optional().describe("采用键值分页时存在该字段,用于传给分页接口,迭代获取下一页数据"), pages: z.number().optional().describe("页码分页时存在该字段,表示总页数"), perPage: z.number().optional().describe("页码分页时存在该字段,表示每页大小"), total: z.number().optional().describe("页码分页时存在该字段,表示结果总数"), }); // Schema for the GetResourceInstance API export const GetResourceInstanceRequestSchema = z.object({ organizationId: z.string().describe("组织ID"), poolName: z.string().describe("资源池名称"), instanceName: z.string().describe("资源实例名称"), }); export const GetResourceInstanceResponseSchema = z.object({ category: z.enum(["COMPUTE"]).optional().describe("资源类别(如计算、存储、网络等)"), cloudMetadata: z.string().optional().describe("云产品元数据"), cloudProvider: z.string().optional().describe("云产品提供方"), contextMap: z.record(z.string()).optional().describe("资源详情数据"), creatorId: z.string().optional().describe("资源实例创建者 ID"), description: z.string().optional().describe("资源描述"), displayName: z.string().optional().describe("资源展示名"), gmtCreate: z.string().optional().describe("使用本地时区呈现的应用创建时间"), name: z.string().optional().describe("资源实例的唯一名,仅允许包含小写字母、中划线和数字,且开头、结尾均为小写字母或数字"), poolName: z.string().optional().describe("资源池唯一名"), region: z.string().optional().describe("资源所处区域"), resourceGroupId: z.string().optional().describe("云产品提供方所使用的资源唯一 ID"), type: z.string().optional().describe("资源子类型"), }); // Schema for the UpdateResourceInstance API export const UpdateResourceInstanceRequestSchema = z.object({ organizationId: z.string().describe("组织ID"), name: z.string().describe("资源实例的唯一名,仅允许包含小写字母、中划线和数字,且开头、结尾均为小写字母或数字"), kubeconfig: z.string().describe("kubeconfig配置"), }); export const UpdateResourceInstanceResponseSchema = z.object({ data: z.object({ instanceId: z.string().optional().describe("资源实例 ID"), name: z.string().optional().describe("资源实例的唯一名,仅允许包含小写字母、中划线和数字,且开头、结尾均为小写字母或数字"), displayName: z.string().optional().describe("资源展示名"), poolName: z.string().optional().describe("资源池唯一名"), category: z.enum(["COMPUTE"]).optional().describe("资源类别(如计算、存储、网络等)"), type: z.string().optional().describe("资源子类型"), cloudMetadata: z.string().optional().describe("云产品元数据"), cloudProvider: z.string().optional().describe("云产品提供方"), contextMap: z.record(z.string()).optional().describe("资源详情数据"), description: z.string().optional().describe("资源描述"), region: z.string().optional().describe("资源所处区域"), resourceItemList: z.array(z.object({}).passthrough()).optional().describe("资源项列表"), k8s: z.boolean().optional().describe("是否k8s"), host: z.boolean().optional().describe(""), }).optional().describe("资源实例"), errorAdvice: z.string().optional(), errorCode: z.string().optional(), errorMap: z.record(z.object({}).passthrough()).optional(), errorMessage: z.string().optional(), showType: z.number().optional(), success: z.boolean().optional(), traceId: z.string().optional(), }); export type GetMachineDeployLogRequest = z.infer<typeof GetMachineDeployLogRequestSchema>; export type GetMachineDeployLogResponse = z.infer<typeof GetMachineDeployLogResponseSchema>; export type AddHostListToHostGroupRequest = z.infer<typeof AddHostListToHostGroupRequestSchema>; export type AddHostListToHostGroupResponse = z.infer<typeof AddHostListToHostGroupResponseSchema>; export type AddHostListToDeployGroupRequest = z.infer<typeof AddHostListToDeployGroupRequestSchema>; export type AddHostListToDeployGroupResponse = z.infer<typeof AddHostListToDeployGroupResponseSchema>; export type DeleteHostListFromDeployGroupRequest = z.infer<typeof DeleteHostListFromDeployGroupRequestSchema>; export type DeleteHostListFromDeployGroupResponse = z.infer<typeof DeleteHostListFromDeployGroupResponseSchema>; export type DeleteHostListFromHostGroupRequest = z.infer<typeof DeleteHostListFromHostGroupRequestSchema>; export type DeleteHostListFromHostGroupResponse = z.infer<typeof DeleteHostListFromHostGroupResponseSchema>; export type GetDeployGroupRequest = z.infer<typeof GetDeployGroupRequestSchema>; export type GetDeployGroupResponse = z.infer<typeof GetDeployGroupResponseSchema>; export type ListResourceInstancesRequest = z.infer<typeof ListResourceInstancesRequestSchema>; export type ListResourceInstancesResponse = z.infer<typeof ListResourceInstancesResponseSchema>; export type GetResourceInstanceRequest = z.infer<typeof GetResourceInstanceRequestSchema>; export type GetResourceInstanceResponse = z.infer<typeof GetResourceInstanceResponseSchema>; export type UpdateResourceInstanceRequest = z.infer<typeof UpdateResourceInstanceRequestSchema>; export type UpdateResourceInstanceResponse = z.infer<typeof UpdateResourceInstanceResponseSchema>; /** * Get machine deployment log * * @param params - The request parameters * @returns The deployment log */ export async function getMachineDeployLog(params: GetMachineDeployLogRequest): Promise<GetMachineDeployLogResponse> { const { organizationId, tunnelId, machineSn } = params; // Build query string properly const query: Record<string, string | number> = {}; if (tunnelId) query.tunnelId = tunnelId; if (machineSn) query.machineSn = machineSn; try { const url = buildUrl(`/oapi/v1/appstack/organizations/${organizationId}/host/deployLog`, query); const response = await yunxiaoRequest( url, { method: 'GET', } ); return GetMachineDeployLogResponseSchema.parse(response); } catch (error) { throw error; } } /** * Add host list to host group * * @param params - The request parameters * @returns Whether the operation was successful */ export async function addHostListToHostGroup(params: AddHostListToHostGroupRequest): Promise<AddHostListToHostGroupResponse> { const { organizationId, instanceName, ...body } = params; try { const response = await yunxiaoRequest( `/oapi/v1/appstack/organizations/${organizationId}/pools/instances/${instanceName}/addHostList`, { method: 'PUT', body: body, } ); return AddHostListToHostGroupResponseSchema.parse(response); } catch (error) { throw error; } } /** * Add host list to deploy group * * @param params - The request parameters * @returns Whether the operation was successful */ export async function addHostListToDeployGroup(params: AddHostListToDeployGroupRequest): Promise<AddHostListToDeployGroupResponse> { const { organizationId, instanceName, groupName, ...body } = params; try { const response = await yunxiaoRequest( `/oapi/v1/appstack/organizations/${organizationId}/pools/instances/${instanceName}/deployGroup/${groupName}/addHostList`, { method: 'PUT', body: body, } ); return AddHostListToDeployGroupResponseSchema.parse(response); } catch (error) { throw error; } } /** * Delete host list from deploy group * * @param params - The request parameters * @returns Whether the operation was successful */ export async function deleteHostListFromDeployGroup(params: DeleteHostListFromDeployGroupRequest): Promise<DeleteHostListFromDeployGroupResponse> { const { organizationId, instanceName, groupName, ...body } = params; try { const response = await yunxiaoRequest( `/oapi/v1/appstack/organizations/${organizationId}/pools/instances/${instanceName}/deployGroup/${groupName}/removeHostList`, { method: 'PUT', body: body, } ); return DeleteHostListFromDeployGroupResponseSchema.parse(response); } catch (error) { throw error; } } /** * Delete host list from host group * * @param params - The request parameters * @returns Whether the operation was successful */ export async function deleteHostListFromHostGroup(params: DeleteHostListFromHostGroupRequest): Promise<DeleteHostListFromHostGroupResponse> { const {organizationId, instanceName, ...body} = params; try { const response = await yunxiaoRequest( `/oapi/v1/appstack/organizations/${organizationId}/pools/instances/${instanceName}/removeHostList`, { method: 'PUT', body: body, } ); return DeleteHostListFromHostGroupResponseSchema.parse(response); } catch (error) { throw error; } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yjiace/alibabacloud-devops-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server