@glasskube/distr-sdk 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/client.d.ts +29 -0
- package/dist/client/client.js +101 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/config.d.ts +4 -0
- package/dist/client/config.js +2 -0
- package/dist/client/config.js.map +1 -0
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/service.d.ts +95 -0
- package/dist/client/service.js +163 -0
- package/dist/client/service.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/types/access-token.d.ts +13 -0
- package/dist/types/access-token.js +2 -0
- package/dist/types/access-token.js.map +1 -0
- package/dist/types/agent-version.d.ts +4 -0
- package/dist/types/agent-version.js +2 -0
- package/dist/types/agent-version.js.map +1 -0
- package/dist/types/application.d.ts +16 -0
- package/dist/types/application.js +2 -0
- package/dist/types/application.js.map +1 -0
- package/dist/types/base.d.ts +15 -0
- package/dist/types/base.js +2 -0
- package/dist/types/base.js.map +1 -0
- package/dist/types/deployment-target.d.ts +20 -0
- package/dist/types/deployment-target.js +2 -0
- package/dist/types/deployment-target.js.map +1 -0
- package/dist/types/deployment.d.ts +31 -0
- package/dist/types/deployment.js +2 -0
- package/dist/types/deployment.js.map +1 -0
- package/dist/types/geolocation.d.ts +4 -0
- package/dist/types/geolocation.js +2 -0
- package/dist/types/geolocation.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/organization-branding.d.ts +8 -0
- package/dist/types/organization-branding.js +2 -0
- package/dist/types/organization-branding.js.map +1 -0
- package/dist/types/uptime.d.ts +5 -0
- package/dist/types/uptime.js +2 -0
- package/dist/types/uptime.js.map +1 -0
- package/dist/types/user-account.d.ts +9 -0
- package/dist/types/user-account.js +2 -0
- package/dist/types/user-account.js.map +1 -0
- package/package.json +29 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Application, ApplicationVersion, DeploymentRequest, DeploymentTarget, DeploymentTargetAccessResponse } from '../types';
|
|
2
|
+
import { ConditionalPartial, defaultClientConfig } from './config';
|
|
3
|
+
export type ClientConfig = {
|
|
4
|
+
apiBase: string;
|
|
5
|
+
apiKey: string;
|
|
6
|
+
};
|
|
7
|
+
export type ApplicationVersionFiles = {
|
|
8
|
+
composeFile?: string;
|
|
9
|
+
baseValuesFile?: string;
|
|
10
|
+
templateFile?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare class Client {
|
|
13
|
+
private readonly config;
|
|
14
|
+
constructor(config: ConditionalPartial<ClientConfig, keyof typeof defaultClientConfig>);
|
|
15
|
+
getApplications(): Promise<Application[]>;
|
|
16
|
+
getApplication(applicationId: string): Promise<Application>;
|
|
17
|
+
createApplication(application: Application): Promise<Application>;
|
|
18
|
+
updateApplication(application: Application): Promise<Application>;
|
|
19
|
+
createApplicationVersion(applicationId: string, version: ApplicationVersion, files?: ApplicationVersionFiles): Promise<ApplicationVersion>;
|
|
20
|
+
getDeploymentTargets(): Promise<DeploymentTarget[]>;
|
|
21
|
+
getDeploymentTarget(deploymentTargetId: string): Promise<DeploymentTarget>;
|
|
22
|
+
createDeploymentTarget(deploymentTarget: DeploymentTarget): Promise<DeploymentTarget>;
|
|
23
|
+
createOrUpdateDeployment(deploymentRequest: DeploymentRequest): Promise<DeploymentRequest>;
|
|
24
|
+
createAccessForDeploymentTarget(deploymentTargetId: string): Promise<DeploymentTargetAccessResponse>;
|
|
25
|
+
private get;
|
|
26
|
+
private post;
|
|
27
|
+
private put;
|
|
28
|
+
private handleResponse;
|
|
29
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { defaultClientConfig } from './config';
|
|
2
|
+
export class Client {
|
|
3
|
+
config;
|
|
4
|
+
constructor(config) {
|
|
5
|
+
this.config = { ...defaultClientConfig, ...config };
|
|
6
|
+
if (!this.config.apiBase.endsWith('/')) {
|
|
7
|
+
this.config.apiBase += '/';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
async getApplications() {
|
|
11
|
+
return this.get('applications');
|
|
12
|
+
}
|
|
13
|
+
async getApplication(applicationId) {
|
|
14
|
+
return this.get(`applications/${applicationId}`);
|
|
15
|
+
}
|
|
16
|
+
async createApplication(application) {
|
|
17
|
+
return this.post('applications', application);
|
|
18
|
+
}
|
|
19
|
+
async updateApplication(application) {
|
|
20
|
+
return this.put(`applications/${application.id}`, application);
|
|
21
|
+
}
|
|
22
|
+
async createApplicationVersion(applicationId, version, files) {
|
|
23
|
+
const formData = new FormData();
|
|
24
|
+
formData.append('applicationversion', JSON.stringify(version));
|
|
25
|
+
if (files?.composeFile) {
|
|
26
|
+
formData.append('composefile', new Blob([files.composeFile], { type: 'application/yaml' }));
|
|
27
|
+
}
|
|
28
|
+
if (files?.baseValuesFile) {
|
|
29
|
+
formData.append('valuesfile', new Blob([files.baseValuesFile], { type: 'application/yaml' }));
|
|
30
|
+
}
|
|
31
|
+
if (files?.templateFile) {
|
|
32
|
+
formData.append('templatefile', new Blob([files.templateFile], { type: 'application/yaml' }));
|
|
33
|
+
}
|
|
34
|
+
const path = `applications/${applicationId}/versions`;
|
|
35
|
+
const response = await fetch(`${this.config.apiBase}${path}`, {
|
|
36
|
+
method: 'POST',
|
|
37
|
+
headers: {
|
|
38
|
+
Accept: 'application/json',
|
|
39
|
+
Authorization: `AccessToken ${this.config.apiKey}`,
|
|
40
|
+
},
|
|
41
|
+
body: formData,
|
|
42
|
+
});
|
|
43
|
+
return this.handleResponse(response, 'POST', path);
|
|
44
|
+
}
|
|
45
|
+
async getDeploymentTargets() {
|
|
46
|
+
return this.get('deployment-targets');
|
|
47
|
+
}
|
|
48
|
+
async getDeploymentTarget(deploymentTargetId) {
|
|
49
|
+
return this.get(`deployment-targets/${deploymentTargetId}`);
|
|
50
|
+
}
|
|
51
|
+
async createDeploymentTarget(deploymentTarget) {
|
|
52
|
+
return this.post('deployment-targets', deploymentTarget);
|
|
53
|
+
}
|
|
54
|
+
async createOrUpdateDeployment(deploymentRequest) {
|
|
55
|
+
return this.put('deployments', deploymentRequest);
|
|
56
|
+
}
|
|
57
|
+
async createAccessForDeploymentTarget(deploymentTargetId) {
|
|
58
|
+
return this.post(`deployment-targets/${deploymentTargetId}/access-request`);
|
|
59
|
+
}
|
|
60
|
+
async get(path) {
|
|
61
|
+
const response = await fetch(`${this.config.apiBase}${path}`, {
|
|
62
|
+
method: 'GET',
|
|
63
|
+
headers: {
|
|
64
|
+
Accept: 'application/json',
|
|
65
|
+
Authorization: `AccessToken ${this.config.apiKey}`,
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
return await this.handleResponse(response, 'GET', path);
|
|
69
|
+
}
|
|
70
|
+
async post(path, body) {
|
|
71
|
+
const response = await fetch(`${this.config.apiBase}${path}`, {
|
|
72
|
+
method: 'POST',
|
|
73
|
+
headers: {
|
|
74
|
+
Accept: 'application/json',
|
|
75
|
+
Authorization: `AccessToken ${this.config.apiKey}`,
|
|
76
|
+
'Content-Type': 'application/json',
|
|
77
|
+
},
|
|
78
|
+
body: JSON.stringify(body),
|
|
79
|
+
});
|
|
80
|
+
return await this.handleResponse(response, 'POST', path);
|
|
81
|
+
}
|
|
82
|
+
async put(path, body) {
|
|
83
|
+
const response = await fetch(`${this.config.apiBase}${path}`, {
|
|
84
|
+
method: 'PUT',
|
|
85
|
+
headers: {
|
|
86
|
+
Accept: 'application/json',
|
|
87
|
+
Authorization: `AccessToken ${this.config.apiKey}`,
|
|
88
|
+
'Content-Type': 'application/json',
|
|
89
|
+
},
|
|
90
|
+
body: JSON.stringify(body),
|
|
91
|
+
});
|
|
92
|
+
return await this.handleResponse(response, 'PUT', path);
|
|
93
|
+
}
|
|
94
|
+
async handleResponse(response, method, path) {
|
|
95
|
+
if (response.status < 200 || response.status >= 300) {
|
|
96
|
+
throw new Error(`${method} ${path} failed: ${response.status} ${response.statusText} "${await response.text()}"`);
|
|
97
|
+
}
|
|
98
|
+
return (await response.json());
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAOA,OAAO,EAAqB,mBAAmB,EAAC,MAAM,UAAU,CAAC;AAajE,MAAM,OAAO,MAAM;IACA,MAAM,CAAe;IAEtC,YAAY,MAA0E;QACpF,IAAI,CAAC,MAAM,GAAG,EAAC,GAAG,mBAAmB,EAAE,GAAG,MAAM,EAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;QAC7B,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAgB,cAAc,CAAC,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,aAAqB;QAC/C,OAAO,IAAI,CAAC,GAAG,CAAc,gBAAgB,aAAa,EAAE,CAAC,CAAC;IAChE,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,WAAwB;QACrD,OAAO,IAAI,CAAC,IAAI,CAAc,cAAc,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,WAAwB;QACrD,OAAO,IAAI,CAAC,GAAG,CAAc,gBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;IAC9E,CAAC;IAEM,KAAK,CAAC,wBAAwB,CACnC,aAAqB,EACrB,OAA2B,EAC3B,KAA+B;QAE/B,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,IAAI,KAAK,EAAE,WAAW,EAAE,CAAC;YACvB,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAC,IAAI,EAAE,kBAAkB,EAAC,CAAC,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,KAAK,EAAE,cAAc,EAAE,CAAC;YAC1B,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,EAAC,IAAI,EAAE,kBAAkB,EAAC,CAAC,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,KAAK,EAAE,YAAY,EAAE,CAAC;YACxB,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAC,IAAI,EAAE,kBAAkB,EAAC,CAAC,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,IAAI,GAAG,gBAAgB,aAAa,WAAW,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAC5D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,aAAa,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;aACnD;YACD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,cAAc,CAAqB,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAqB,oBAAoB,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,kBAA0B;QACzD,OAAO,IAAI,CAAC,GAAG,CAAmB,sBAAsB,kBAAkB,EAAE,CAAC,CAAC;IAChF,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,gBAAkC;QACpE,OAAO,IAAI,CAAC,IAAI,CAAmB,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;IAC7E,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,iBAAoC;QACxE,OAAO,IAAI,CAAC,GAAG,CAAoB,aAAa,EAAE,iBAAiB,CAAC,CAAC;IACvE,CAAC;IAEM,KAAK,CAAC,+BAA+B,CAAC,kBAA0B;QACrE,OAAO,IAAI,CAAC,IAAI,CAAiC,sBAAsB,kBAAkB,iBAAiB,CAAC,CAAC;IAC9G,CAAC;IAEO,KAAK,CAAC,GAAG,CAAI,IAAY;QAC/B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAC5D,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,aAAa,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;aACnD;SACF,CAAC,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,cAAc,CAAI,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAEO,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,IAAQ;QAC1C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAC5D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,aAAa,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAClD,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,cAAc,CAAI,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,GAAG,CAAI,IAAY,EAAE,IAAO;QACxC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAC5D,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,aAAa,EAAE,eAAe,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAClD,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,cAAc,CAAI,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAEO,KAAK,CAAC,cAAc,CAAI,QAAkB,EAAE,MAAc,EAAE,IAAY;QAC9E,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,IAAI,IAAI,YAAY,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,KAAK,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpH,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/client/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAC,OAAO,EAAE,8BAA8B,EAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { ClientConfig } from './client';
|
|
2
|
+
import { Application, ApplicationVersion, DeploymentTarget, DeploymentTargetAccessResponse, DeploymentTargetScope, DeploymentType, HelmChartType } from '../types';
|
|
3
|
+
import { ConditionalPartial, defaultClientConfig } from './config';
|
|
4
|
+
export type LatestVersionStrategy = 'semver' | 'chronological';
|
|
5
|
+
export type CreateDeploymentParams = {
|
|
6
|
+
target: {
|
|
7
|
+
name: string;
|
|
8
|
+
type: DeploymentType;
|
|
9
|
+
kubernetes?: {
|
|
10
|
+
namespace: string;
|
|
11
|
+
scope: DeploymentTargetScope;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
application: {
|
|
15
|
+
id?: string;
|
|
16
|
+
versionId?: string;
|
|
17
|
+
};
|
|
18
|
+
kubernetesDeployment?: {
|
|
19
|
+
releaseName: string;
|
|
20
|
+
valuesYaml?: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export type CreateDeploymentResult = {
|
|
24
|
+
deploymentTarget: DeploymentTarget;
|
|
25
|
+
access: DeploymentTargetAccessResponse;
|
|
26
|
+
};
|
|
27
|
+
export type UpdateDeploymentParams = {
|
|
28
|
+
deploymentTargetId: string;
|
|
29
|
+
applicationVersionId?: string;
|
|
30
|
+
kubernetesDeployment?: {
|
|
31
|
+
valuesYaml?: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export type IsOutdatedResult = {
|
|
35
|
+
deploymentTarget: DeploymentTarget;
|
|
36
|
+
application: Application;
|
|
37
|
+
newerVersions: ApplicationVersion[];
|
|
38
|
+
outdated: boolean;
|
|
39
|
+
};
|
|
40
|
+
export declare class DistrService {
|
|
41
|
+
private readonly latestVersionStrategy;
|
|
42
|
+
private readonly client;
|
|
43
|
+
/**
|
|
44
|
+
* Creates a new DistrService instance, which provides a higher-level API for the Distr API. A client config
|
|
45
|
+
* containing the API base URL and an API key must be provided. Optionally, a strategy for determining the latest
|
|
46
|
+
* version of an application can be specified – the default is semantic versioning.
|
|
47
|
+
* @param config
|
|
48
|
+
* @param latestVersionStrategy
|
|
49
|
+
*/
|
|
50
|
+
constructor(config: ConditionalPartial<ClientConfig, keyof typeof defaultClientConfig>, latestVersionStrategy?: LatestVersionStrategy);
|
|
51
|
+
createDockerApplicationVersion(applicationId: string, name: string, composeFile: string): Promise<ApplicationVersion>;
|
|
52
|
+
createKubernetesApplicationVersion(applicationId: string, versionName: string, data: {
|
|
53
|
+
chartName: string;
|
|
54
|
+
chartVersion: string;
|
|
55
|
+
chartType: HelmChartType;
|
|
56
|
+
chartUrl: string;
|
|
57
|
+
baseValuesFile?: string;
|
|
58
|
+
templateFile?: string;
|
|
59
|
+
}): Promise<ApplicationVersion>;
|
|
60
|
+
/**
|
|
61
|
+
* Creates a new deployment target and deploys the given application version to it.
|
|
62
|
+
* * If deployment type is 'kubernetes', the namespace and scope must be provided.
|
|
63
|
+
* * If deployment type is 'kubernetes', the helm release name and values YAML can be provided.
|
|
64
|
+
* * If no application version ID is given, the latest version of the application will be deployed.
|
|
65
|
+
* @param params
|
|
66
|
+
*/
|
|
67
|
+
createDeployment(params: CreateDeploymentParams): Promise<CreateDeploymentResult>;
|
|
68
|
+
/**
|
|
69
|
+
* Updates the deployment of an existing deployment target. If no application version ID is given, the latest version
|
|
70
|
+
* of the already deployed application will be deployed.
|
|
71
|
+
* @param params
|
|
72
|
+
*/
|
|
73
|
+
updateDeployment(params: UpdateDeploymentParams): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Checks if the given deployment target is outdated, i.e. if there is a newer version of the application available.
|
|
76
|
+
* The result additionally contains versions that are newer than the currently deployed one, ordered ascending.
|
|
77
|
+
* @param deploymentTargetId
|
|
78
|
+
*/
|
|
79
|
+
isOutdated(deploymentTargetId: string): Promise<IsOutdatedResult>;
|
|
80
|
+
/**
|
|
81
|
+
* Returns the latest version of the given application according to the specified strategy.
|
|
82
|
+
* @param appId
|
|
83
|
+
*/
|
|
84
|
+
getLatestVersion(appId: string): Promise<ApplicationVersion | undefined>;
|
|
85
|
+
/**
|
|
86
|
+
* Returns the application and all versions that are newer than the given version ID. If no version ID is given,
|
|
87
|
+
* all versions are considered. The versions are ordered ascending according to the given strategy.
|
|
88
|
+
* @param appId
|
|
89
|
+
* @param currentVersionId
|
|
90
|
+
*/
|
|
91
|
+
getNewerVersions(appId: string, currentVersionId?: string): Promise<{
|
|
92
|
+
app: Application;
|
|
93
|
+
newerVersions: ApplicationVersion[];
|
|
94
|
+
}>;
|
|
95
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { Client } from './client';
|
|
2
|
+
import semver from 'semver/preload';
|
|
3
|
+
export class DistrService {
|
|
4
|
+
latestVersionStrategy;
|
|
5
|
+
client;
|
|
6
|
+
/**
|
|
7
|
+
* Creates a new DistrService instance, which provides a higher-level API for the Distr API. A client config
|
|
8
|
+
* containing the API base URL and an API key must be provided. Optionally, a strategy for determining the latest
|
|
9
|
+
* version of an application can be specified – the default is semantic versioning.
|
|
10
|
+
* @param config
|
|
11
|
+
* @param latestVersionStrategy
|
|
12
|
+
*/
|
|
13
|
+
constructor(config, latestVersionStrategy = 'semver') {
|
|
14
|
+
this.latestVersionStrategy = latestVersionStrategy;
|
|
15
|
+
this.client = new Client(config);
|
|
16
|
+
}
|
|
17
|
+
async createDockerApplicationVersion(applicationId, name, composeFile) {
|
|
18
|
+
return this.client.createApplicationVersion(applicationId, { name }, { composeFile });
|
|
19
|
+
}
|
|
20
|
+
async createKubernetesApplicationVersion(applicationId, versionName, data) {
|
|
21
|
+
return this.client.createApplicationVersion(applicationId, {
|
|
22
|
+
name: versionName,
|
|
23
|
+
chartName: data.chartName,
|
|
24
|
+
chartVersion: data.chartVersion,
|
|
25
|
+
chartType: data.chartType,
|
|
26
|
+
chartUrl: data.chartUrl,
|
|
27
|
+
}, {
|
|
28
|
+
baseValuesFile: data.baseValuesFile,
|
|
29
|
+
templateFile: data.templateFile,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Creates a new deployment target and deploys the given application version to it.
|
|
34
|
+
* * If deployment type is 'kubernetes', the namespace and scope must be provided.
|
|
35
|
+
* * If deployment type is 'kubernetes', the helm release name and values YAML can be provided.
|
|
36
|
+
* * If no application version ID is given, the latest version of the application will be deployed.
|
|
37
|
+
* @param params
|
|
38
|
+
*/
|
|
39
|
+
async createDeployment(params) {
|
|
40
|
+
const { target, application, kubernetesDeployment } = params;
|
|
41
|
+
let versionId = application.versionId;
|
|
42
|
+
if (!versionId) {
|
|
43
|
+
if (!application.id) {
|
|
44
|
+
throw new Error('application ID or version ID must be provided');
|
|
45
|
+
}
|
|
46
|
+
const latest = await this.getLatestVersion(application.id);
|
|
47
|
+
if (!latest) {
|
|
48
|
+
throw new Error('no version available for this application');
|
|
49
|
+
}
|
|
50
|
+
versionId = latest.id;
|
|
51
|
+
}
|
|
52
|
+
const deploymentTarget = await this.client.createDeploymentTarget({
|
|
53
|
+
name: target.name,
|
|
54
|
+
type: target.type,
|
|
55
|
+
namespace: target.kubernetes?.namespace,
|
|
56
|
+
scope: target.kubernetes?.scope,
|
|
57
|
+
});
|
|
58
|
+
await this.client.createOrUpdateDeployment({
|
|
59
|
+
deploymentTargetId: deploymentTarget.id,
|
|
60
|
+
applicationVersionId: versionId,
|
|
61
|
+
releaseName: kubernetesDeployment?.releaseName,
|
|
62
|
+
valuesYaml: kubernetesDeployment?.valuesYaml ? btoa(kubernetesDeployment?.valuesYaml) : undefined,
|
|
63
|
+
});
|
|
64
|
+
return {
|
|
65
|
+
deploymentTarget: await this.client.getDeploymentTarget(deploymentTarget.id),
|
|
66
|
+
access: await this.client.createAccessForDeploymentTarget(deploymentTarget.id),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Updates the deployment of an existing deployment target. If no application version ID is given, the latest version
|
|
71
|
+
* of the already deployed application will be deployed.
|
|
72
|
+
* @param params
|
|
73
|
+
*/
|
|
74
|
+
async updateDeployment(params) {
|
|
75
|
+
const { deploymentTargetId, applicationVersionId, kubernetesDeployment } = params;
|
|
76
|
+
const existing = await this.client.getDeploymentTarget(deploymentTargetId);
|
|
77
|
+
if (!existing.deployment && !applicationVersionId) {
|
|
78
|
+
throw new Error('cannot update deployment, because nothing deployed yet');
|
|
79
|
+
}
|
|
80
|
+
let versionId = applicationVersionId;
|
|
81
|
+
if (!versionId) {
|
|
82
|
+
const res = await this.isOutdated(existing.id);
|
|
83
|
+
if (res.outdated && res.newerVersions.length > 0) {
|
|
84
|
+
versionId = res.newerVersions[res.newerVersions.length - 1].id;
|
|
85
|
+
}
|
|
86
|
+
else if (existing.deployment) {
|
|
87
|
+
// version stays the same, other params might have changed
|
|
88
|
+
versionId = existing.deployment.applicationVersionId;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
throw new Error('cannot update deployment, because nothing deployed yet');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
await this.client.createOrUpdateDeployment({
|
|
95
|
+
deploymentTargetId,
|
|
96
|
+
deploymentId: existing.deployment?.id,
|
|
97
|
+
applicationVersionId: versionId,
|
|
98
|
+
valuesYaml: kubernetesDeployment?.valuesYaml ? btoa(kubernetesDeployment?.valuesYaml) : undefined,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Checks if the given deployment target is outdated, i.e. if there is a newer version of the application available.
|
|
103
|
+
* The result additionally contains versions that are newer than the currently deployed one, ordered ascending.
|
|
104
|
+
* @param deploymentTargetId
|
|
105
|
+
*/
|
|
106
|
+
async isOutdated(deploymentTargetId) {
|
|
107
|
+
const existing = await this.client.getDeploymentTarget(deploymentTargetId);
|
|
108
|
+
if (!existing.deployment) {
|
|
109
|
+
throw new Error('nothing deployed yet');
|
|
110
|
+
}
|
|
111
|
+
const { app, newerVersions } = await this.getNewerVersions(existing.deployment.applicationId, existing.deployment.applicationVersionId);
|
|
112
|
+
return {
|
|
113
|
+
deploymentTarget: existing,
|
|
114
|
+
application: app,
|
|
115
|
+
newerVersions: newerVersions,
|
|
116
|
+
outdated: newerVersions.length > 0,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Returns the latest version of the given application according to the specified strategy.
|
|
121
|
+
* @param appId
|
|
122
|
+
*/
|
|
123
|
+
async getLatestVersion(appId) {
|
|
124
|
+
const { newerVersions } = await this.getNewerVersions(appId);
|
|
125
|
+
return newerVersions.length > 0 ? newerVersions[newerVersions.length - 1] : undefined;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Returns the application and all versions that are newer than the given version ID. If no version ID is given,
|
|
129
|
+
* all versions are considered. The versions are ordered ascending according to the given strategy.
|
|
130
|
+
* @param appId
|
|
131
|
+
* @param currentVersionId
|
|
132
|
+
*/
|
|
133
|
+
async getNewerVersions(appId, currentVersionId) {
|
|
134
|
+
const app = await this.client.getApplication(appId);
|
|
135
|
+
const currentVersion = (app.versions || []).find((it) => it.id === currentVersionId);
|
|
136
|
+
if (!currentVersion && currentVersionId) {
|
|
137
|
+
throw new Error('given version ID does not exist in this application');
|
|
138
|
+
}
|
|
139
|
+
const newerVersions = (app.versions || [])
|
|
140
|
+
.filter((it) => {
|
|
141
|
+
if (!currentVersion) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
// surely there are fancier ways to deal with strategies but that's it for now
|
|
145
|
+
switch (this.latestVersionStrategy) {
|
|
146
|
+
case 'semver':
|
|
147
|
+
return semver.gt(it.name, currentVersion.name, { loose: true });
|
|
148
|
+
case 'chronological':
|
|
149
|
+
return it.createdAt > currentVersion.createdAt; // TODO proper date handling maybe
|
|
150
|
+
}
|
|
151
|
+
})
|
|
152
|
+
.sort((a, b) => {
|
|
153
|
+
switch (this.latestVersionStrategy) {
|
|
154
|
+
case 'semver':
|
|
155
|
+
return semver.compare(a.name, b.name, { loose: true });
|
|
156
|
+
case 'chronological':
|
|
157
|
+
return a.createdAt?.localeCompare(b.createdAt) ?? 0; // TODO proper date handling maybe
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
return { app, newerVersions };
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/client/service.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseModel } from './base';
|
|
2
|
+
export interface AccessToken extends BaseModel {
|
|
3
|
+
expiresAt?: string;
|
|
4
|
+
lastUsedAt?: string;
|
|
5
|
+
label?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface AccessTokenWithKey extends AccessToken {
|
|
8
|
+
key: string;
|
|
9
|
+
}
|
|
10
|
+
export interface CreateAccessTokenRequest {
|
|
11
|
+
label?: string;
|
|
12
|
+
expiresAt?: Date;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-token.js","sourceRoot":"","sources":["../../src/types/access-token.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-version.js","sourceRoot":"","sources":["../../src/types/agent-version.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseModel, Named } from './base';
|
|
2
|
+
import { DeploymentType, HelmChartType } from './deployment';
|
|
3
|
+
export interface Application extends BaseModel, Named {
|
|
4
|
+
type: DeploymentType;
|
|
5
|
+
versions?: ApplicationVersion[];
|
|
6
|
+
}
|
|
7
|
+
export interface ApplicationVersion {
|
|
8
|
+
id?: string;
|
|
9
|
+
name?: string;
|
|
10
|
+
createdAt?: string;
|
|
11
|
+
applicationId?: string;
|
|
12
|
+
chartType?: HelmChartType;
|
|
13
|
+
chartName?: string;
|
|
14
|
+
chartUrl?: string;
|
|
15
|
+
chartVersion?: string;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../src/types/application.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface BaseModel {
|
|
2
|
+
id?: string;
|
|
3
|
+
createdAt?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface Named {
|
|
6
|
+
name?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface TokenResponse {
|
|
9
|
+
token: string;
|
|
10
|
+
}
|
|
11
|
+
export interface DeploymentTargetAccessResponse {
|
|
12
|
+
connectUrl: string;
|
|
13
|
+
targetId: string;
|
|
14
|
+
targetSecret: string;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AgentVersion } from './agent-version';
|
|
2
|
+
import { BaseModel, Named } from './base';
|
|
3
|
+
import { DeploymentTargetScope, DeploymentType, DeploymentWithLatestRevision } from './deployment';
|
|
4
|
+
import { Geolocation } from './geolocation';
|
|
5
|
+
import { UserAccountWithRole } from './user-account';
|
|
6
|
+
export interface DeploymentTarget extends BaseModel, Named {
|
|
7
|
+
name: string;
|
|
8
|
+
type: DeploymentType;
|
|
9
|
+
namespace?: string;
|
|
10
|
+
scope?: DeploymentTargetScope;
|
|
11
|
+
geolocation?: Geolocation;
|
|
12
|
+
createdBy?: UserAccountWithRole;
|
|
13
|
+
currentStatus?: DeploymentTargetStatus;
|
|
14
|
+
deployment?: DeploymentWithLatestRevision;
|
|
15
|
+
agentVersion?: AgentVersion;
|
|
16
|
+
reportedAgentVersionId?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface DeploymentTargetStatus extends BaseModel {
|
|
19
|
+
message: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-target.js","sourceRoot":"","sources":["../../src/types/deployment-target.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BaseModel } from './base';
|
|
2
|
+
export interface Deployment extends BaseModel {
|
|
3
|
+
deploymentTargetId: string;
|
|
4
|
+
releaseName?: string;
|
|
5
|
+
note?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface DeploymentRequest {
|
|
8
|
+
deploymentTargetId: string;
|
|
9
|
+
deploymentId?: string;
|
|
10
|
+
applicationVersionId: string;
|
|
11
|
+
releaseName?: string;
|
|
12
|
+
valuesYaml?: string;
|
|
13
|
+
note?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface DeploymentWithLatestRevision extends Deployment {
|
|
16
|
+
applicationId: string;
|
|
17
|
+
applicationName: string;
|
|
18
|
+
applicationVersionId: string;
|
|
19
|
+
applicationVersionName: string;
|
|
20
|
+
valuesYaml?: string;
|
|
21
|
+
deploymentRevisionId?: string;
|
|
22
|
+
latestStatus?: DeploymentRevisionStatus;
|
|
23
|
+
}
|
|
24
|
+
export interface DeploymentRevisionStatus extends BaseModel {
|
|
25
|
+
type: DeploymentStatusType;
|
|
26
|
+
message: string;
|
|
27
|
+
}
|
|
28
|
+
export type DeploymentType = 'docker' | 'kubernetes';
|
|
29
|
+
export type HelmChartType = 'repository' | 'oci';
|
|
30
|
+
export type DeploymentStatusType = 'ok' | 'error';
|
|
31
|
+
export type DeploymentTargetScope = 'cluster' | 'namespace';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../src/types/deployment.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geolocation.js","sourceRoot":"","sources":["../../src/types/geolocation.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './access-token';
|
|
2
|
+
export * from './agent-version';
|
|
3
|
+
export * from './application';
|
|
4
|
+
export * from './base';
|
|
5
|
+
export * from './deployment';
|
|
6
|
+
export * from './deployment-target';
|
|
7
|
+
export * from './geolocation';
|
|
8
|
+
export * from './organization-branding';
|
|
9
|
+
export * from './uptime';
|
|
10
|
+
export * from './user-account';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './access-token';
|
|
2
|
+
export * from './agent-version';
|
|
3
|
+
export * from './application';
|
|
4
|
+
export * from './base';
|
|
5
|
+
export * from './deployment';
|
|
6
|
+
export * from './deployment-target';
|
|
7
|
+
export * from './geolocation';
|
|
8
|
+
export * from './organization-branding';
|
|
9
|
+
export * from './uptime';
|
|
10
|
+
export * from './user-account';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization-branding.js","sourceRoot":"","sources":["../../src/types/organization-branding.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uptime.js","sourceRoot":"","sources":["../../src/types/uptime.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-account.js","sourceRoot":"","sources":["../../src/types/user-account.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@glasskube/distr-sdk",
|
|
3
|
+
"version": "0.13.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"description": "Distr SDK",
|
|
7
|
+
"homepage": "https://glasskube.dev/products/distr/",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/glasskube/distr.git",
|
|
11
|
+
"directory": "sdk/js"
|
|
12
|
+
},
|
|
13
|
+
"main": "dist/index.js",
|
|
14
|
+
"types": "dist/index.d.ts",
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "rimraf dist && tsc"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist/"
|
|
20
|
+
],
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"semver": "^7.6.3"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/semver": "^7.5.8",
|
|
26
|
+
"rimraf": "^6.0.1",
|
|
27
|
+
"typescript": "^5.7.3"
|
|
28
|
+
}
|
|
29
|
+
}
|