kubernetes-fluent-client 1.9.0 → 1.10.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/fluent/index.d.ts.map +1 -1
- package/dist/fluent/index.js +15 -1
- package/dist/fluent/index.test.js +28 -1
- package/dist/fluent/types.d.ts +18 -0
- package/dist/fluent/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/package.json +9 -9
- package/src/fluent/index.test.ts +37 -2
- package/src/fluent/index.ts +20 -3
- package/src/fluent/types.ts +19 -0
- package/src/index.ts +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fluent/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fluent/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAOjF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAsB,MAAM,SAAS,CAAC;AAI/D;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,YAAY,EAAE,CAAC,SAAS,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,EACtF,KAAK,EAAE,CAAC,EACR,OAAO,GAAE,OAAY,GACpB,OAAO,CAAC,CAAC,CAAC,CAmKZ"}
|
package/dist/fluent/index.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.K8s = void 0;
|
|
6
6
|
const http_status_codes_1 = require("http-status-codes");
|
|
7
|
+
const fetch_1 = require("../fetch");
|
|
7
8
|
const kinds_1 = require("../kinds");
|
|
8
9
|
const utils_1 = require("./utils");
|
|
9
10
|
const watch_1 = require("./watch");
|
|
@@ -137,6 +138,19 @@ function K8s(model, filters = {}) {
|
|
|
137
138
|
async function Watch(callback, watchCfg) {
|
|
138
139
|
return (0, watch_1.ExecWatch)(model, filters, callback, watchCfg);
|
|
139
140
|
}
|
|
140
|
-
|
|
141
|
+
/**
|
|
142
|
+
* @inheritdoc
|
|
143
|
+
* @see {@link K8sInit.Raw}
|
|
144
|
+
*/
|
|
145
|
+
async function Raw(url) {
|
|
146
|
+
const thing = await (0, utils_1.k8sCfg)("GET");
|
|
147
|
+
const { opts, serverUrl } = thing;
|
|
148
|
+
const resp = await (0, fetch_1.fetch)(`${serverUrl}${url}`, opts);
|
|
149
|
+
if (resp.ok) {
|
|
150
|
+
return resp.data;
|
|
151
|
+
}
|
|
152
|
+
throw resp;
|
|
153
|
+
}
|
|
154
|
+
return { InNamespace, Apply, Create, Patch, Raw, ...withFilters };
|
|
141
155
|
}
|
|
142
156
|
exports.K8s = K8s;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const globals_1 = require("@jest/globals");
|
|
4
|
-
const
|
|
4
|
+
const client_node_1 = require("@kubernetes/client-node");
|
|
5
5
|
const _1 = require(".");
|
|
6
|
+
const fetch_1 = require("../fetch");
|
|
7
|
+
const upstream_1 = require("../upstream");
|
|
6
8
|
const utils_1 = require("./utils");
|
|
7
9
|
// Setup mocks
|
|
8
10
|
globals_1.jest.mock("./utils");
|
|
11
|
+
globals_1.jest.mock("../fetch");
|
|
9
12
|
const generateFakePodManagedFields = (manager) => {
|
|
10
13
|
return [
|
|
11
14
|
{
|
|
@@ -49,6 +52,7 @@ const generateFakePodManagedFields = (manager) => {
|
|
|
49
52
|
managedFields: generateFakePodManagedFields("pepr"),
|
|
50
53
|
},
|
|
51
54
|
};
|
|
55
|
+
const mockedKubeCfg = globals_1.jest.mocked(utils_1.k8sCfg);
|
|
52
56
|
const mockedKubeExec = globals_1.jest.mocked(utils_1.k8sExec).mockResolvedValue(fakeResource);
|
|
53
57
|
(0, globals_1.beforeEach)(() => {
|
|
54
58
|
// Clear all instances and calls to constructor and all methods:
|
|
@@ -134,4 +138,27 @@ const generateFakePodManagedFields = (manager) => {
|
|
|
134
138
|
mockedKubeExec.mockRejectedValueOnce({ status: 500 }); // Internal Server Error on first call
|
|
135
139
|
await (0, globals_1.expect)((0, _1.K8s)(upstream_1.Pod).Delete("fakeResource")).rejects.toEqual(globals_1.expect.objectContaining({ status: 500 }));
|
|
136
140
|
});
|
|
141
|
+
(0, globals_1.it)("should create a raw api request", async () => {
|
|
142
|
+
mockedKubeCfg.mockReturnValue(new Promise(r => r({
|
|
143
|
+
serverUrl: "http://localhost:8080",
|
|
144
|
+
opts: {},
|
|
145
|
+
})));
|
|
146
|
+
const mockResp = {
|
|
147
|
+
kind: "APIVersions",
|
|
148
|
+
versions: ["v1"],
|
|
149
|
+
serverAddressByClientCIDRs: [
|
|
150
|
+
{
|
|
151
|
+
serverAddress: "172.27.0.3:6443",
|
|
152
|
+
},
|
|
153
|
+
],
|
|
154
|
+
};
|
|
155
|
+
globals_1.jest.mocked(fetch_1.fetch).mockResolvedValue({
|
|
156
|
+
ok: true,
|
|
157
|
+
data: mockResp,
|
|
158
|
+
status: 200,
|
|
159
|
+
statusText: "OK",
|
|
160
|
+
});
|
|
161
|
+
const result = await (0, _1.K8s)(client_node_1.V1APIGroup).Raw("/api");
|
|
162
|
+
(0, globals_1.expect)(result).toEqual(mockResp);
|
|
163
|
+
});
|
|
137
164
|
});
|
package/dist/fluent/types.d.ts
CHANGED
|
@@ -79,6 +79,24 @@ export type K8sUnfilteredActions<K extends KubernetesObject> = {
|
|
|
79
79
|
* @returns The patched resource
|
|
80
80
|
*/
|
|
81
81
|
Patch: (payload: Operation[]) => Promise<K>;
|
|
82
|
+
/**
|
|
83
|
+
* Perform a raw GET request to the Kubernetes API. This is useful for calling endpoints that are not supported by the fluent API.
|
|
84
|
+
* This command mirrors the `kubectl get --raw` command.
|
|
85
|
+
*
|
|
86
|
+
* E.g.
|
|
87
|
+
*
|
|
88
|
+
* ```ts
|
|
89
|
+
* import { V1APIGroup } from "@kubernetes/client-node";
|
|
90
|
+
*
|
|
91
|
+
* K8s(V1APIGroup).Raw("/api")
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* will call the `/api` endpoint and is equivalent to `kubectl get --raw /api`.
|
|
95
|
+
*
|
|
96
|
+
* @param url the URL to call (e.g. /api)
|
|
97
|
+
* @returns
|
|
98
|
+
*/
|
|
99
|
+
Raw: (url: string) => Promise<K>;
|
|
82
100
|
};
|
|
83
101
|
export type K8sWithFilters<K extends KubernetesObject> = K8sFilteredActions<K> & {
|
|
84
102
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fluent/types.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC;;GAEG;AACH,oBAAY,UAAU;IACpB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAE3F,MAAM,WAAW,OAAO;IACtB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,gBAAgB,IAAI;IACpD,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,gBAAgB,IAAI;IAC3D;;;;OAIG;IACH,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAEpB;;;;OAIG;IACH,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;;;;;OAMG;IACH,KAAK,EAAE,CACL,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,EACjD,QAAQ,CAAC,EAAE,QAAQ,KAChB,OAAO,CAAC,eAAe,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,IAAI;IAC7D;;;;;;OAMG;IACH,KAAK,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAErE;;;;;OAKG;IACH,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAEpC;;;;;;;OAOG;IACH,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fluent/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,6 @@ export { K8s } from "./fluent";
|
|
|
8
8
|
export { RegisterKind, modelToGroupVersionKind } from "./kinds";
|
|
9
9
|
export { GenericKind } from "./types";
|
|
10
10
|
export * from "./types";
|
|
11
|
-
export * as
|
|
12
|
-
export { fromEnv } from "./helpers";
|
|
11
|
+
export * as models from "@kubernetes/client-node/dist/gen/models/all";
|
|
12
|
+
export { fromEnv, waitForCluster } from "./helpers";
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,SAAS,CAAC;AAGjB,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,oGAAoG;AACpG,OAAO,EAAE,IAAI,EAAE,CAAC;AAGhB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG/D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAGhE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,cAAc,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,SAAS,CAAC;AAGjB,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,oGAAoG;AACpG,OAAO,EAAE,IAAI,EAAE,CAAC;AAGhB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,WAAW,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG/D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAGhE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,cAAc,SAAS,CAAC;AAGxB,OAAO,KAAK,MAAM,MAAM,6CAA6C,CAAC;AAEtE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -28,7 +28,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
28
28
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
29
29
|
};
|
|
30
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
-
exports.fromEnv = exports.
|
|
31
|
+
exports.waitForCluster = exports.fromEnv = exports.models = exports.GenericKind = exports.modelToGroupVersionKind = exports.RegisterKind = exports.K8s = exports.fetchStatus = exports.fetch = exports.kind = void 0;
|
|
32
32
|
require("./patch");
|
|
33
33
|
// Export kinds as a single object
|
|
34
34
|
const kind = __importStar(require("./upstream"));
|
|
@@ -50,6 +50,8 @@ Object.defineProperty(exports, "modelToGroupVersionKind", { enumerable: true, ge
|
|
|
50
50
|
var types_1 = require("./types");
|
|
51
51
|
Object.defineProperty(exports, "GenericKind", { enumerable: true, get: function () { return types_1.GenericKind; } });
|
|
52
52
|
__exportStar(require("./types"), exports);
|
|
53
|
-
|
|
53
|
+
// Export the upstream raw models
|
|
54
|
+
exports.models = __importStar(require("@kubernetes/client-node/dist/gen/models/all"));
|
|
54
55
|
var helpers_1 = require("./helpers");
|
|
55
56
|
Object.defineProperty(exports, "fromEnv", { enumerable: true, get: function () { return helpers_1.fromEnv; } });
|
|
57
|
+
Object.defineProperty(exports, "waitForCluster", { enumerable: true, get: function () { return helpers_1.waitForCluster; } });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kubernetes-fluent-client",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"description": "A @kubernetes/client-node fluent API wrapper that leverages K8s Server Side Apply",
|
|
5
5
|
"bin": "./dist/cli.js",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"http-status-codes": "2.3.0",
|
|
42
42
|
"node-fetch": "2.7.0",
|
|
43
43
|
"quicktype-core": "23.0.80",
|
|
44
|
-
"type-fest": "4.8.
|
|
44
|
+
"type-fest": "4.8.3",
|
|
45
45
|
"yargs": "17.7.2"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
@@ -49,17 +49,17 @@
|
|
|
49
49
|
"@commitlint/config-conventional": "18.4.3",
|
|
50
50
|
"@jest/globals": "29.7.0",
|
|
51
51
|
"@types/byline": "4.2.36",
|
|
52
|
-
"@types/readable-stream": "4.0.
|
|
52
|
+
"@types/readable-stream": "4.0.10",
|
|
53
53
|
"@types/yargs": "17.0.32",
|
|
54
|
-
"@typescript-eslint/eslint-plugin": "6.
|
|
55
|
-
"@typescript-eslint/parser": "6.
|
|
56
|
-
"eslint-plugin-jsdoc": "46.9.
|
|
54
|
+
"@typescript-eslint/eslint-plugin": "6.15.0",
|
|
55
|
+
"@typescript-eslint/parser": "6.15.0",
|
|
56
|
+
"eslint-plugin-jsdoc": "46.9.1",
|
|
57
57
|
"jest": "29.7.0",
|
|
58
58
|
"nock": "13.4.0",
|
|
59
|
-
"prettier": "3.1.
|
|
60
|
-
"semantic-release": "22.0.
|
|
59
|
+
"prettier": "3.1.1",
|
|
60
|
+
"semantic-release": "22.0.12",
|
|
61
61
|
"ts-jest": "29.1.1",
|
|
62
|
-
"typescript": "5.3.
|
|
62
|
+
"typescript": "5.3.3"
|
|
63
63
|
},
|
|
64
64
|
"release": {
|
|
65
65
|
"branches": [
|
package/src/fluent/index.test.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, jest } from "@jest/globals";
|
|
2
|
+
import { V1APIGroup } from "@kubernetes/client-node";
|
|
2
3
|
import { Operation } from "fast-json-patch";
|
|
3
4
|
|
|
4
|
-
import { Pod } from "../upstream";
|
|
5
5
|
import { K8s } from ".";
|
|
6
|
-
import {
|
|
6
|
+
import { fetch } from "../fetch";
|
|
7
|
+
import { Pod } from "../upstream";
|
|
8
|
+
import { k8sCfg, k8sExec } from "./utils";
|
|
7
9
|
|
|
8
10
|
// Setup mocks
|
|
9
11
|
jest.mock("./utils");
|
|
12
|
+
jest.mock("../fetch");
|
|
10
13
|
|
|
11
14
|
const generateFakePodManagedFields = (manager: string) => {
|
|
12
15
|
return [
|
|
@@ -52,6 +55,7 @@ describe("Kube", () => {
|
|
|
52
55
|
},
|
|
53
56
|
};
|
|
54
57
|
|
|
58
|
+
const mockedKubeCfg = jest.mocked(k8sCfg);
|
|
55
59
|
const mockedKubeExec = jest.mocked(k8sExec).mockResolvedValue(fakeResource);
|
|
56
60
|
|
|
57
61
|
beforeEach(() => {
|
|
@@ -194,4 +198,35 @@ describe("Kube", () => {
|
|
|
194
198
|
expect.objectContaining({ status: 500 }),
|
|
195
199
|
);
|
|
196
200
|
});
|
|
201
|
+
|
|
202
|
+
it("should create a raw api request", async () => {
|
|
203
|
+
mockedKubeCfg.mockReturnValue(
|
|
204
|
+
new Promise(r =>
|
|
205
|
+
r({
|
|
206
|
+
serverUrl: "http://localhost:8080",
|
|
207
|
+
opts: {},
|
|
208
|
+
}),
|
|
209
|
+
),
|
|
210
|
+
);
|
|
211
|
+
const mockResp = {
|
|
212
|
+
kind: "APIVersions",
|
|
213
|
+
versions: ["v1"],
|
|
214
|
+
serverAddressByClientCIDRs: [
|
|
215
|
+
{
|
|
216
|
+
serverAddress: "172.27.0.3:6443",
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
jest.mocked(fetch).mockResolvedValue({
|
|
222
|
+
ok: true,
|
|
223
|
+
data: mockResp,
|
|
224
|
+
status: 200,
|
|
225
|
+
statusText: "OK",
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
const result = await K8s(V1APIGroup).Raw("/api");
|
|
229
|
+
|
|
230
|
+
expect(result).toEqual(mockResp);
|
|
231
|
+
});
|
|
197
232
|
});
|
package/src/fluent/index.ts
CHANGED
|
@@ -6,11 +6,12 @@ import { Operation } from "fast-json-patch";
|
|
|
6
6
|
import { StatusCodes } from "http-status-codes";
|
|
7
7
|
import type { PartialDeep } from "type-fest";
|
|
8
8
|
|
|
9
|
+
import { fetch } from "../fetch";
|
|
9
10
|
import { modelToGroupVersionKind } from "../kinds";
|
|
10
11
|
import { GenericClass } from "../types";
|
|
11
12
|
import { ApplyCfg } from "./apply";
|
|
12
13
|
import { Filters, K8sInit, Paths, WatchAction } from "./types";
|
|
13
|
-
import { k8sExec } from "./utils";
|
|
14
|
+
import { k8sCfg, k8sExec } from "./utils";
|
|
14
15
|
import { ExecWatch, WatchCfg } from "./watch";
|
|
15
16
|
|
|
16
17
|
/**
|
|
@@ -158,7 +159,7 @@ export function K8s<T extends GenericClass, K extends KubernetesObject = Instanc
|
|
|
158
159
|
throw new Error("No operations specified");
|
|
159
160
|
}
|
|
160
161
|
|
|
161
|
-
return k8sExec
|
|
162
|
+
return k8sExec(model, filters, "PATCH", payload);
|
|
162
163
|
}
|
|
163
164
|
|
|
164
165
|
/**
|
|
@@ -169,5 +170,21 @@ export function K8s<T extends GenericClass, K extends KubernetesObject = Instanc
|
|
|
169
170
|
return ExecWatch(model, filters, callback, watchCfg);
|
|
170
171
|
}
|
|
171
172
|
|
|
172
|
-
|
|
173
|
+
/**
|
|
174
|
+
* @inheritdoc
|
|
175
|
+
* @see {@link K8sInit.Raw}
|
|
176
|
+
*/
|
|
177
|
+
async function Raw(url: string) {
|
|
178
|
+
const thing = await k8sCfg("GET");
|
|
179
|
+
const { opts, serverUrl } = thing;
|
|
180
|
+
const resp = await fetch<K>(`${serverUrl}${url}`, opts);
|
|
181
|
+
|
|
182
|
+
if (resp.ok) {
|
|
183
|
+
return resp.data;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
throw resp;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return { InNamespace, Apply, Create, Patch, Raw, ...withFilters };
|
|
173
190
|
}
|
package/src/fluent/types.ts
CHANGED
|
@@ -96,6 +96,25 @@ export type K8sUnfilteredActions<K extends KubernetesObject> = {
|
|
|
96
96
|
* @returns The patched resource
|
|
97
97
|
*/
|
|
98
98
|
Patch: (payload: Operation[]) => Promise<K>;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Perform a raw GET request to the Kubernetes API. This is useful for calling endpoints that are not supported by the fluent API.
|
|
102
|
+
* This command mirrors the `kubectl get --raw` command.
|
|
103
|
+
*
|
|
104
|
+
* E.g.
|
|
105
|
+
*
|
|
106
|
+
* ```ts
|
|
107
|
+
* import { V1APIGroup } from "@kubernetes/client-node";
|
|
108
|
+
*
|
|
109
|
+
* K8s(V1APIGroup).Raw("/api")
|
|
110
|
+
* ```
|
|
111
|
+
*
|
|
112
|
+
* will call the `/api` endpoint and is equivalent to `kubectl get --raw /api`.
|
|
113
|
+
*
|
|
114
|
+
* @param url the URL to call (e.g. /api)
|
|
115
|
+
* @returns
|
|
116
|
+
*/
|
|
117
|
+
Raw: (url: string) => Promise<K>;
|
|
99
118
|
};
|
|
100
119
|
|
|
101
120
|
export type K8sWithFilters<K extends KubernetesObject> = K8sFilteredActions<K> & {
|
package/src/index.ts
CHANGED
|
@@ -26,6 +26,7 @@ export { GenericKind } from "./types";
|
|
|
26
26
|
|
|
27
27
|
export * from "./types";
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
// Export the upstream raw models
|
|
30
|
+
export * as models from "@kubernetes/client-node/dist/gen/models/all";
|
|
30
31
|
|
|
31
|
-
export { fromEnv } from "./helpers";
|
|
32
|
+
export { fromEnv, waitForCluster } from "./helpers";
|