UNPKG

@atomist/sdm

Version:

Atomist Software Delivery Machine SDK

73 lines 3.71 kB
import { File as ProjectFile } from "@atomist/automation-client/lib/project/File"; import { GitProject } from "@atomist/automation-client/lib/project/git/GitProject"; import { Project } from "@atomist/automation-client/lib/project/Project"; import * as k8s from "@kubernetes/client-node"; import { KubernetesSyncOptions } from "../config"; import { KubernetesDelete } from "../kubernetes/request"; export declare type SyncAction = "upsert" | "delete"; /** * Synchronize changes from deploying app to the configured syncRepo. * If no syncRepo is configured, do nothing. * * @param app Kubernetes application change that triggered the sync * @param resources Kubernetes resource objects to synchronize * @param action Action performed, "upsert" or "delete" */ export declare function syncApplication(app: KubernetesDelete, resources: k8s.KubernetesObject[], action?: SyncAction): Promise<void>; export interface ProjectFileSpec { file: ProjectFile; spec: k8s.KubernetesObject; } /** * Update the sync repo with the changed resources from a * KubernetesApplication. For each changed resource in `resources`, * loop through all the existing Kubernetes spec files, i.e., those * that match [[k8sSpecGlob]], to see if the apiVersion, kind, name, * and namespace, which may be undefined, match. If a match is found, * update that spec file. If no match is found, create a unique file * name and store the resource spec in it. If changes are made, * commit and push the changes. * * @param app Kubernetes application object * @param resources Resources that were upserted as part of this application * @param action Action performed, "upsert" or "delete" * @param opts Repo sync options, passed to the sync action * @return Function that updates the sync repo with the resource specs */ export declare function syncResources(app: KubernetesDelete, resources: k8s.KubernetesObject[], action: SyncAction, opts: KubernetesSyncOptions): (p: GitProject) => Promise<void>; /** * Determine if two Kubernetes resource specifications represent the * same object. When determining if they are the same, only the kind, * name, and namespace, which may be `undefined`, must match. The * apiVersion is not considered when matching because the same * resource can appear under different API versions. Other object * properties are not considered. * * @param a First Kubernetes object spec to match * @param b Second Kubernetes object spec to match * @return `true` if specs match, `false` otherwise */ export declare function sameObject(a: k8s.KubernetesObject, b: k8s.KubernetesObject): boolean; /** * Search `fileSpecs` for a spec that matches `spec`. To be * considered a match, the kind, name, and namespace, which may be * undefined, must match. The apiVersion is not considered when * matching because the same resource can appear under different API * versions. * * @param spec Kubernetes object spec to match * @param fileSpecs Array of spec and file objects to search * @return First file and spec object to match spec or `undefined` if no match is found */ export declare function matchSpec(spec: k8s.KubernetesObject, fileSpecs: ProjectFileSpec[]): ProjectFileSpec | undefined; /** * Return a unique name for a resource spec that lexically sorts so * resources that should be created earlier than others sort earlier * than others. * * @param resource Kubernetes object spec * @param p Kubernetes spec project * @return Unique spec file name that sorts properly */ export declare function uniqueSpecFile(resource: k8s.KubernetesObject, p: Project, format: KubernetesSyncOptions["specFormat"]): Promise<string>; //# sourceMappingURL=application.d.ts.map