import { K8sResourceAction, KubernetesResource, DaemonSet, Deployment, StatefulSet, WorkloadStatusEnum } from '@alauda-fe/common'; import { OamAppOriginalStatusEnum } from './status'; export type Workload = Deployment | StatefulSet | DaemonSet; export declare enum WorkloadKind { Deployment = "Deployment", StatefulSet = "StatefulSet", DaemonSet = "DaemonSet" } export interface K8sResourceWithActions { kubernetes: T; resource_actions?: string[]; } /** * application address * refers to: http://confluence.alaudatech.com/pages/viewpage.action?pageId=44663323#id-%E6%96%B0%E5%BA%94%E7%94%A8API-1.1.6GET/acp/v1/kubernetes/%3Ccluster_name%3E/namespaces/%3Cnamespace%3E/applications/%3Cname%3E/address */ export interface ApplicationAddress { workloads?: { [key: string]: { [key: string]: WorkloadAddress[]; }; }; } export interface WorkloadAddress { name?: string; protocol?: string; host?: string; frontend?: number; port?: number; url?: string; } export interface AlbRules extends KubernetesResource { spec: AlbRulesSpec; } export interface AlbRulesSpec { address: string; rules: AlbRule[]; } export interface AlbRule { name: string; namespace: string; url?: string; port: number; protocol: string; } /** * API resource types * refers to: http://confluence.alaudatech.com/pages/viewpage.action?pageId=44663323#id-%E6%96%B0%E5%BA%94%E7%94%A8API-1.2.0GET/acp/v1/resources/{cluster}/resourcetypes */ export interface APIResource { kind: string; name: string; singularName?: string; shortNames?: string[]; namespaced: boolean; verbs: K8sResourceAction[]; groupVersion?: string; } export interface APIResourceList { kind: 'APIResourceList'; apiVersion?: string; groupVersion: string; resources: APIResource[]; } export interface Workloads { Deployment?: Deployment[]; DaemonSet?: DaemonSet[]; StatefulSet?: StatefulSet[]; } /** * Container Log * refers to: http://confluence.alaudatech.com/pages/viewpage.action?pageId=44663323#id-%E6%96%B0%E5%BA%94%E7%94%A8API-1.2.1GET/acp/v1/kubernetes/{cluster}/namespace/{namespace}/pods/{podName}/{containerName}/log */ export interface ContainerLogParams { previous?: string; logFilePosition?: string; referenceTimestamp?: string; referenceLineNum?: string; offsetFrom?: string; offsetTo?: string; } export interface LogInfo { podName: string; containerName: string; initContainerName: string; fromDate: string; toDate: string; truncated: boolean; } export interface LogLine { timestamp: string; content: string; } export interface LogSelection { logFilePosition: string; referencePoint: LogLineReference; offsetFrom: number; offsetTo: number; } export interface LogLineReference { timestamp: string; lineNum: number; } export interface ContainerLog { info: LogInfo; logs: LogLine[]; selection: LogSelection; } export interface Certificate { name: string; namespace: string; notBefore: string; notAfter: string; dnsNames: string[]; valid: boolean; reasonCode?: 1 | 2 | 3; } /** * 应用拓扑api 文档:https://confluence.alauda.cn/pages/viewpage.action?pageId=115527477 */ export interface TopologyEdge { type: string; from?: string; to?: string; } export interface TopologyResponse { nodes: { [key: string]: KubernetesResource; }; edges: TopologyEdge[]; } export interface AppTopologyApplication { kind: string; name: string; uuid: string; state: string; edges?: TopologyEdge[]; } export interface AppBaseTopology { workloads?: Record>; services?: Record; configmaps?: Record; secrets?: Record; pvcs?: Record; albs?: Record; ingresses?: Record; startstopscalertraits?: Record; statistics?: { wcounts: number; wlimit: number; }; } export interface AppTopology extends AppBaseTopology { application?: AppTopologyApplication; others?: Record; } export interface ArgocdApplicationSetTopology { applicationSet: AppTopologyNode; applications: Record; } export interface ArgocdApplicationTopology { application: AppTopologyNode; applications: Record; oamapps: Record; } export interface AppTopologyNode { uid: string; name: string; namespace?: string; cluster?: string; apiVersion?: string; kind: string; displayName?: string; edges?: TopologyEdge[]; component?: string; originalResource?: KubernetesResource; state?: string; syncStatus?: string; restricted?: boolean; } export interface AppTopologyPodNode extends AppTopologyNode { current: number; desired: number; state: WorkloadStatusEnum; podIP: string; } export interface AppTopologyWorkloadNode extends AppTopologyNode { current: number; desired: number; state: WorkloadStatusEnum; pods: AppTopologyPodNode[]; } export interface AppTopologyComponentNode extends AppTopologyNode { current: number; desired: number; state: WorkloadStatusEnum; pods: AppTopologyPodNode[]; } export interface AppTopologyExtraResourceNode extends AppTopologyNode { namespace: string; apiVersion: string; } export interface OamAppTopology extends AppTopology { components?: OamAppTopologyComponentNode[]; startstopscalertraits?: Record; } export interface OamAppTopologyComponentNode extends AppTopologyNode { state: OamAppOriginalStatusEnum; type: string; } export interface OamAppTopologyTraitNode extends AppTopologyNode { state: WorkloadStatusEnum; component: string; } export type Pagination = { total: number; items: T[]; } & O;