import { BaseResource } from '@gitbeaker/requester-utils'; import { RequestHelper, endpoint } from '../infrastructure'; import type { GitlabAPIResponse, ShowExpanded, Sudo } from '../infrastructure'; import type { SimpleProjectSchema } from './Projects'; export interface ClusterAgentSchema extends Record { id: number; name: string; config_project: SimpleProjectSchema; created_at: string; created_by_user_id: number; } export interface ClusterAgentTokenSchema extends Record { id: number; name: string; description: string; agent_id: number; status: string; token?: string; created_at: string; created_by_user_id: number; } export class Agents extends BaseResource { all( projectId: string | number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/cluster_agents`, options, ); } allTokens( projectId: string | number, agentId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/cluster_agents/${agentId}/tokens`, options, ); } createToken( projectId: string | number, agentId: number, name: string, options?: { description?: string } & Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/cluster_agents/${agentId}/tokens`, { name, ...options, }, ); } show( projectId: string | number, agentId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/cluster_agents/${agentId}`, options, ); } showToken( projectId: string | number, agentId: number, tokenId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.get()( this, endpoint`projects/${projectId}/cluster_agents/${agentId}/tokens/${tokenId}`, options, ); } register( projectId: string | number, name: string, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.post()( this, endpoint`projects/${projectId}/cluster_agents`, { name, ...options, }, ); } removeToken( projectId: string | number, agentId: number, tokenId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.del()( this, endpoint`projects/${projectId}/cluster_agents/${agentId}/tokens/${tokenId}`, options, ); } unregister( projectId: string | number, agentId: number, options?: Sudo & ShowExpanded, ): Promise> { return RequestHelper.del()( this, endpoint`projects/${projectId}/cluster_agents/${agentId}`, options, ); } }