node-lxc 1.0.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.
Files changed (98) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +328 -0
  3. package/bin/x86_64-linux-gnu/node-lxc.node +0 -0
  4. package/examples/attach/index.ts +29 -0
  5. package/examples/attach-streams/index.ts +34 -0
  6. package/examples/checkpoint/index.ts +34 -0
  7. package/examples/clone/index.ts +34 -0
  8. package/examples/concurrent_create/index.ts +30 -0
  9. package/examples/concurrent_destroy/index.ts +23 -0
  10. package/examples/concurrent_shutdown/index.ts +28 -0
  11. package/examples/concurrent_start/index.ts +28 -0
  12. package/examples/concurrent_stop/index.ts +28 -0
  13. package/examples/config/index.ts +18 -0
  14. package/examples/console/index.ts +17 -0
  15. package/examples/console_async/index.ts +101 -0
  16. package/examples/create/index.ts +12 -0
  17. package/examples/create_snapshot/index.ts +10 -0
  18. package/examples/destroy/index.ts +10 -0
  19. package/examples/destroy_snapshots/index.ts +10 -0
  20. package/examples/device_add_remove/index.ts +11 -0
  21. package/examples/execute/index.ts +10 -0
  22. package/examples/freeze/index.ts +11 -0
  23. package/examples/images/index.ts +10 -0
  24. package/examples/interfaces/index.ts +10 -0
  25. package/examples/ipaddress/index.ts +12 -0
  26. package/examples/limit/index.ts +15 -0
  27. package/examples/list/index.ts +12 -0
  28. package/examples/list_keys/index.ts +10 -0
  29. package/examples/list_snapshots/index.ts +9 -0
  30. package/examples/reboot/index.ts +11 -0
  31. package/examples/rename/index.ts +11 -0
  32. package/examples/restore_snapshot/index.ts +11 -0
  33. package/examples/shutdown/index.ts +19 -0
  34. package/examples/start/index.ts +11 -0
  35. package/examples/stats/index.ts +48 -0
  36. package/examples/stop/index.ts +11 -0
  37. package/examples/unfreeze/index.ts +11 -0
  38. package/lib/binding.d.ts +6 -0
  39. package/lib/binding.js +32 -0
  40. package/lib/binding.js.map +1 -0
  41. package/lib/index.d.ts +612 -0
  42. package/lib/index.js +73 -0
  43. package/lib/index.js.map +1 -0
  44. package/lib/types/Image.d.ts +22 -0
  45. package/lib/types/Image.js +3 -0
  46. package/lib/types/Image.js.map +1 -0
  47. package/lib/types/LXC_ATTACH.d.ts +67 -0
  48. package/lib/types/LXC_ATTACH.js +72 -0
  49. package/lib/types/LXC_ATTACH.js.map +1 -0
  50. package/lib/types/LXC_CLONE.d.ts +34 -0
  51. package/lib/types/LXC_CLONE.js +39 -0
  52. package/lib/types/LXC_CLONE.js.map +1 -0
  53. package/lib/types/LXC_CREATE.d.ts +8 -0
  54. package/lib/types/LXC_CREATE.js +13 -0
  55. package/lib/types/LXC_CREATE.js.map +1 -0
  56. package/lib/types/LXC_LOGLEVEL.d.ts +15 -0
  57. package/lib/types/LXC_LOGLEVEL.js +20 -0
  58. package/lib/types/LXC_LOGLEVEL.js.map +1 -0
  59. package/lib/types/LXC_MIGRATE.d.ts +10 -0
  60. package/lib/types/LXC_MIGRATE.js +15 -0
  61. package/lib/types/LXC_MIGRATE.js.map +1 -0
  62. package/lib/types/LXC_MOUNT.d.ts +42 -0
  63. package/lib/types/LXC_MOUNT.js +45 -0
  64. package/lib/types/LXC_MOUNT.js.map +1 -0
  65. package/lib/types/Personality.d.ts +14 -0
  66. package/lib/types/Personality.js +19 -0
  67. package/lib/types/Personality.js.map +1 -0
  68. package/lib/types/bdev_specs.d.ts +48 -0
  69. package/lib/types/bdev_specs.js +3 -0
  70. package/lib/types/bdev_specs.js.map +1 -0
  71. package/lib/types/custom/ConsoleSession.d.ts +23 -0
  72. package/lib/types/custom/ConsoleSession.js +3 -0
  73. package/lib/types/custom/ConsoleSession.js.map +1 -0
  74. package/lib/types/custom/index.d.ts +1 -0
  75. package/lib/types/custom/index.js +18 -0
  76. package/lib/types/custom/index.js.map +1 -0
  77. package/lib/types/index.d.ts +20 -0
  78. package/lib/types/index.js +37 -0
  79. package/lib/types/index.js.map +1 -0
  80. package/lib/types/lxc_attach_env_policy.d.ts +8 -0
  81. package/lib/types/lxc_attach_env_policy.js +13 -0
  82. package/lib/types/lxc_attach_env_policy.js.map +1 -0
  83. package/lib/types/lxc_attach_options.d.ts +99 -0
  84. package/lib/types/lxc_attach_options.js +30 -0
  85. package/lib/types/lxc_attach_options.js.map +1 -0
  86. package/lib/types/lxc_clone_options.d.ts +52 -0
  87. package/lib/types/lxc_clone_options.js +7 -0
  88. package/lib/types/lxc_clone_options.js.map +1 -0
  89. package/lib/types/lxc_console_log.d.ts +10 -0
  90. package/lib/types/lxc_console_log.js +7 -0
  91. package/lib/types/lxc_console_log.js.map +1 -0
  92. package/lib/types/lxc_snapshot.d.ts +10 -0
  93. package/lib/types/lxc_snapshot.js +7 -0
  94. package/lib/types/lxc_snapshot.js.map +1 -0
  95. package/lib/types/migrate_opts.d.ts +17 -0
  96. package/lib/types/migrate_opts.js +7 -0
  97. package/lib/types/migrate_opts.js.map +1 -0
  98. package/package.json +88 -0
package/lib/index.js ADDED
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ /**
3
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
4
+ * @date 03-07-2024
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ var __importDefault = (this && this.__importDefault) || function (mod) {
21
+ return (mod && mod.__esModule) ? mod : { "default": mod };
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.Images = exports.Container = exports.GetWaitStates = exports.HasApiExtension = exports.ConfigItemIsSupported = exports.ListAllActiveContainers = exports.ListAllDefinedContainers = exports.ListAllContainers = exports.GetGlobalConfigItem = exports.GetVersion = exports.LXC = void 0;
25
+ __exportStar(require("./types"), exports);
26
+ const binding_1 = __importDefault(require("./binding"));
27
+ exports.LXC = binding_1.default;
28
+ exports.GetVersion = exports.LXC.GetVersion, exports.GetGlobalConfigItem = exports.LXC.GetGlobalConfigItem, exports.ListAllContainers = exports.LXC.ListAllContainers, exports.ListAllDefinedContainers = exports.LXC.ListAllDefinedContainers, exports.ListAllActiveContainers = exports.LXC.ListAllActiveContainers, exports.ConfigItemIsSupported = exports.LXC.ConfigItemIsSupported, exports.HasApiExtension = exports.LXC.HasApiExtension, exports.GetWaitStates = exports.LXC.GetWaitStates, exports.Container = exports.LXC.Container;
29
+ exports.Images = {
30
+ repositories: {
31
+ linuxcontainers: {
32
+ 'base.url': 'https://images.linuxcontainers.org',
33
+ 'image.json': "https://images.linuxcontainers.org/meta/simplestreams/v1/images.json",
34
+ 'index.json': "https://images.linuxcontainers.org/meta/simplestreams/v1/index.json",
35
+ }
36
+ },
37
+ async List(repository = 'linuxcontainers') {
38
+ const imageURL = exports.Images.repositories[repository]["image.json"];
39
+ const response = await fetch(imageURL);
40
+ if (!response.ok)
41
+ throw new Error(`Failed to get image list from '${imageURL}'`, { cause: response });
42
+ const images = await response.json();
43
+ if (images?.content_id !== "images")
44
+ throw new Error("Unknown json: content_id !== 'images'");
45
+ if (images?.datatype !== "image-downloads")
46
+ throw new Error("Unknown json: datatype !== 'image-downloads'");
47
+ if (images?.format !== "products:1.0")
48
+ throw new Error("Unknown json: format !== 'products:1.0'");
49
+ if (!images.products || typeof images.products !== 'object')
50
+ throw new Error("Unknown json: products is not defined or is not of type object");
51
+ return images.products;
52
+ },
53
+ async Available(repository = 'linuxcontainers') {
54
+ const indexURL = exports.Images.repositories[repository]["index.json"];
55
+ const response = await fetch(indexURL);
56
+ if (!response.ok)
57
+ throw new Error(`Failed to get image index list from '${indexURL}'`, { cause: response });
58
+ const images = await response.json();
59
+ if (!images?.index)
60
+ throw new Error("Unknown json: index is undefined");
61
+ if (!images?.index?.images || typeof images.index.images !== 'object')
62
+ throw new Error("Unknown json: typeof index.images !== object");
63
+ if (images.index.images?.datatype !== "image-downloads")
64
+ throw new Error("Unknown json: index.images.datatype !== 'image-downloads'");
65
+ if (images.index.images?.format !== "products:1.0")
66
+ throw new Error("Unknown json: index.images.format !== 'products:1.0'");
67
+ if (!images.index.images?.products || !Array.isArray(images.index.images.products))
68
+ throw new Error("Unknown json: images.index.images.products is not defined or is not of type string[]");
69
+ return images.index.images?.products;
70
+ }
71
+ };
72
+ __exportStar(require("./types"), exports);
73
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export type Image = {
2
+ readonly aliases: string;
3
+ readonly arch: string;
4
+ readonly os: string;
5
+ readonly release: string;
6
+ readonly release_title: string;
7
+ readonly requirements: Record<string, string>;
8
+ readonly variant: string;
9
+ readonly versions: Record<string, {
10
+ files: Record<string, {
11
+ ftype: string;
12
+ sha256: string;
13
+ size: number;
14
+ path: string;
15
+ combined_sha256?: string;
16
+ combined_rootxz_sha256?: string;
17
+ combined_squashfs_sha256?: string;
18
+ "combined_disk-kvm-img_sha256?": string;
19
+ delta_base?: string;
20
+ }>;
21
+ }>;
22
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Image.js","sourceRoot":"","sources":["../../../lib/types/Image.ts"],"names":[],"mappings":""}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
3
+ * @date 03-07-2024
4
+ */
5
+ export declare enum LXC_ATTACH {
6
+ /**
7
+ * Move to cgroup
8
+ * @default on
9
+ */
10
+ MOVE_TO_CGROUP = 1,
11
+ /**
12
+ * Drop capabilities
13
+ * @default on
14
+ */
15
+ DROP_CAPABILITIES = 2,
16
+ /**
17
+ * Set personality
18
+ * @default on
19
+ */
20
+ SET_PERSONALITY = 4,
21
+ /**
22
+ * Execute under a Linux Security Module
23
+ * @default on
24
+ */
25
+ LSM_EXEC = 8,
26
+ /**
27
+ * Remount /proc filesystem
28
+ * @default off
29
+ */
30
+ REMOUNT_PROC_SYS = 65536,
31
+ /**
32
+ * TODO: currently unused
33
+ * @default off
34
+ */
35
+ LSM_NOW = 131072,
36
+ /**
37
+ * PR_SET_NO_NEW_PRIVS
38
+ * Set PR_SET_NO_NEW_PRIVS to block execve() gainable privileges.
39
+ *
40
+ * @default off
41
+ *
42
+ */
43
+ NO_NEW_PRIVS = 262144,
44
+ /**
45
+ * Allocate new terminal for attached process.
46
+ * @default off
47
+ */
48
+ TERMINAL = 524288,
49
+ /**
50
+ * Set custom LSM label specified in @lsm_label.
51
+ * @default off
52
+ */
53
+ LSM_LABEL = 1048576,
54
+ /**
55
+ * Set additional group ids specified in @groups.
56
+ * @default off
57
+ */
58
+ SETGROUPS = 2097152,
59
+ /**
60
+ * We have 16 bits for things that are on by default and 16 bits that
61
+ * are off by default, that should be sufficient to keep binary
62
+ * compatibility for a while
63
+ *
64
+ * Mask of flags to apply by default
65
+ */
66
+ DEFAULT = 65535
67
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ /**
3
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
4
+ * @date 03-07-2024
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.LXC_ATTACH = void 0;
8
+ var LXC_ATTACH;
9
+ (function (LXC_ATTACH) {
10
+ /**
11
+ * Move to cgroup
12
+ * @default on
13
+ */
14
+ LXC_ATTACH[LXC_ATTACH["MOVE_TO_CGROUP"] = 1] = "MOVE_TO_CGROUP";
15
+ /**
16
+ * Drop capabilities
17
+ * @default on
18
+ */
19
+ LXC_ATTACH[LXC_ATTACH["DROP_CAPABILITIES"] = 2] = "DROP_CAPABILITIES";
20
+ /**
21
+ * Set personality
22
+ * @default on
23
+ */
24
+ LXC_ATTACH[LXC_ATTACH["SET_PERSONALITY"] = 4] = "SET_PERSONALITY";
25
+ /**
26
+ * Execute under a Linux Security Module
27
+ * @default on
28
+ */
29
+ LXC_ATTACH[LXC_ATTACH["LSM_EXEC"] = 8] = "LSM_EXEC";
30
+ /**
31
+ * Remount /proc filesystem
32
+ * @default off
33
+ */
34
+ LXC_ATTACH[LXC_ATTACH["REMOUNT_PROC_SYS"] = 65536] = "REMOUNT_PROC_SYS";
35
+ /**
36
+ * TODO: currently unused
37
+ * @default off
38
+ */
39
+ LXC_ATTACH[LXC_ATTACH["LSM_NOW"] = 131072] = "LSM_NOW";
40
+ /**
41
+ * PR_SET_NO_NEW_PRIVS
42
+ * Set PR_SET_NO_NEW_PRIVS to block execve() gainable privileges.
43
+ *
44
+ * @default off
45
+ *
46
+ */
47
+ LXC_ATTACH[LXC_ATTACH["NO_NEW_PRIVS"] = 262144] = "NO_NEW_PRIVS";
48
+ /**
49
+ * Allocate new terminal for attached process.
50
+ * @default off
51
+ */
52
+ LXC_ATTACH[LXC_ATTACH["TERMINAL"] = 524288] = "TERMINAL";
53
+ /**
54
+ * Set custom LSM label specified in @lsm_label.
55
+ * @default off
56
+ */
57
+ LXC_ATTACH[LXC_ATTACH["LSM_LABEL"] = 1048576] = "LSM_LABEL";
58
+ /**
59
+ * Set additional group ids specified in @groups.
60
+ * @default off
61
+ */
62
+ LXC_ATTACH[LXC_ATTACH["SETGROUPS"] = 2097152] = "SETGROUPS";
63
+ /**
64
+ * We have 16 bits for things that are on by default and 16 bits that
65
+ * are off by default, that should be sufficient to keep binary
66
+ * compatibility for a while
67
+ *
68
+ * Mask of flags to apply by default
69
+ */
70
+ LXC_ATTACH[LXC_ATTACH["DEFAULT"] = 65535] = "DEFAULT";
71
+ })(LXC_ATTACH || (exports.LXC_ATTACH = LXC_ATTACH = {}));
72
+ //# sourceMappingURL=LXC_ATTACH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LXC_ATTACH.js","sourceRoot":"","sources":["../../../lib/types/LXC_ATTACH.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,IAAY,UAuEX;AAvED,WAAY,UAAU;IAClB;;;OAGG;IACH,+DAA2B,CAAA;IAC3B;;;OAGG;IACH,qEAA8B,CAAA;IAE9B;;;OAGG;IACH,iEAA4B,CAAA;IAE5B;;;OAGG;IACH,mDAAqB,CAAA;IAErB;;;OAGG;IACH,uEAA6B,CAAA;IAE7B;;;OAGG;IACH,sDAAoB,CAAA;IAEpB;;;;;;OAMG;IACH,gEAAyB,CAAA;IAEzB;;;OAGG;IACH,wDAAqB,CAAA;IAErB;;;OAGG;IACH,2DAAsB,CAAA;IAEtB;;;OAGG;IACH,2DAAsB,CAAA;IAEtB;;;;;;OAMG;IACH,qDAAoB,CAAA;AACxB,CAAC,EAvEW,UAAU,0BAAV,UAAU,QAuErB"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
3
+ * @date 03-07-2024
4
+ */
5
+ export declare enum LXC_CLONE {
6
+ /**
7
+ * Do not edit the rootfs to change the hostname
8
+ */
9
+ KEEPNAME = 1,
10
+ /**
11
+ * Do not change the MAC address on network interfaces
12
+ */
13
+ KEEPMACADDR = 2,
14
+ /**
15
+ * Snapshot the original filesystem(s)
16
+ */
17
+ SNAPSHOT = 4,
18
+ /**
19
+ * Use the same bdev type
20
+ */
21
+ KEEPBDEVTYPE = 8,
22
+ /**
23
+ * Snapshot only if bdev supports it, else copy
24
+ */
25
+ MAYBE_SNAPSHOT = 16,
26
+ /**
27
+ * Number of `LXC_CLONE_*` flags
28
+ */
29
+ MAXFLAGS = 32,
30
+ /**
31
+ * allow snapshot creation even if source container is running
32
+ */
33
+ ALLOW_RUNNING = 64
34
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /**
3
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
4
+ * @date 03-07-2024
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.LXC_CLONE = void 0;
8
+ var LXC_CLONE;
9
+ (function (LXC_CLONE) {
10
+ /**
11
+ * Do not edit the rootfs to change the hostname
12
+ */
13
+ LXC_CLONE[LXC_CLONE["KEEPNAME"] = 1] = "KEEPNAME";
14
+ /**
15
+ * Do not change the MAC address on network interfaces
16
+ */
17
+ LXC_CLONE[LXC_CLONE["KEEPMACADDR"] = 2] = "KEEPMACADDR";
18
+ /**
19
+ * Snapshot the original filesystem(s)
20
+ */
21
+ LXC_CLONE[LXC_CLONE["SNAPSHOT"] = 4] = "SNAPSHOT";
22
+ /**
23
+ * Use the same bdev type
24
+ */
25
+ LXC_CLONE[LXC_CLONE["KEEPBDEVTYPE"] = 8] = "KEEPBDEVTYPE";
26
+ /**
27
+ * Snapshot only if bdev supports it, else copy
28
+ */
29
+ LXC_CLONE[LXC_CLONE["MAYBE_SNAPSHOT"] = 16] = "MAYBE_SNAPSHOT";
30
+ /**
31
+ * Number of `LXC_CLONE_*` flags
32
+ */
33
+ LXC_CLONE[LXC_CLONE["MAXFLAGS"] = 32] = "MAXFLAGS";
34
+ /**
35
+ * allow snapshot creation even if source container is running
36
+ */
37
+ LXC_CLONE[LXC_CLONE["ALLOW_RUNNING"] = 64] = "ALLOW_RUNNING";
38
+ })(LXC_CLONE || (exports.LXC_CLONE = LXC_CLONE = {}));
39
+ //# sourceMappingURL=LXC_CLONE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LXC_CLONE.js","sourceRoot":"","sources":["../../../lib/types/LXC_CLONE.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,IAAY,SA6BX;AA7BD,WAAY,SAAS;IACjB;;OAEG;IACH,iDAAmB,CAAA;IACnB;;OAEG;IACH,uDAAsB,CAAA;IACtB;;OAEG;IACH,iDAAmB,CAAA;IACnB;;OAEG;IACH,yDAAuB,CAAA;IACvB;;OAEG;IACH,8DAAyB,CAAA;IACzB;;OAEG;IACH,kDAAmB,CAAA;IACnB;;OAEG;IACH,4DAAwB,CAAA;AAC5B,CAAC,EA7BW,SAAS,yBAAT,SAAS,QA6BpB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
3
+ * @date 03-07-2024
4
+ */
5
+ export declare enum LXC_CREATE {
6
+ QUIET = 1,
7
+ MAXFLAGS = 2
8
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ /**
3
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
4
+ * @date 03-07-2024
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.LXC_CREATE = void 0;
8
+ var LXC_CREATE;
9
+ (function (LXC_CREATE) {
10
+ LXC_CREATE[LXC_CREATE["QUIET"] = 1] = "QUIET";
11
+ LXC_CREATE[LXC_CREATE["MAXFLAGS"] = 2] = "MAXFLAGS";
12
+ })(LXC_CREATE || (exports.LXC_CREATE = LXC_CREATE = {}));
13
+ //# sourceMappingURL=LXC_CREATE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LXC_CREATE.js","sourceRoot":"","sources":["../../../lib/types/LXC_CREATE.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,IAAY,UAGX;AAHD,WAAY,UAAU;IAClB,6CAAgB,CAAA;IAChB,mDAAmB,CAAA;AACvB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
3
+ * @date 03-07-2024
4
+ */
5
+ export declare enum LXC_LOGLEVEL {
6
+ TRACE = "TRACE",
7
+ DEBUG = "DEBUG",
8
+ INFO = "INFO",
9
+ NOTICE = "NOTICE",
10
+ WARN = "WARN",
11
+ ERROR = "ERROR",
12
+ CRIT = "CRIT",
13
+ ALERT = "ALERT",
14
+ FATAL = "FATAL"
15
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
4
+ * @date 03-07-2024
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.LXC_LOGLEVEL = void 0;
8
+ var LXC_LOGLEVEL;
9
+ (function (LXC_LOGLEVEL) {
10
+ LXC_LOGLEVEL["TRACE"] = "TRACE";
11
+ LXC_LOGLEVEL["DEBUG"] = "DEBUG";
12
+ LXC_LOGLEVEL["INFO"] = "INFO";
13
+ LXC_LOGLEVEL["NOTICE"] = "NOTICE";
14
+ LXC_LOGLEVEL["WARN"] = "WARN";
15
+ LXC_LOGLEVEL["ERROR"] = "ERROR";
16
+ LXC_LOGLEVEL["CRIT"] = "CRIT";
17
+ LXC_LOGLEVEL["ALERT"] = "ALERT";
18
+ LXC_LOGLEVEL["FATAL"] = "FATAL";
19
+ })(LXC_LOGLEVEL || (exports.LXC_LOGLEVEL = LXC_LOGLEVEL = {}));
20
+ //# sourceMappingURL=LXC_LOGLEVEL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LXC_LOGLEVEL.js","sourceRoot":"","sources":["../../../lib/types/LXC_LOGLEVEL.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,IAAY,YAUX;AAVD,WAAY,YAAY;IACpB,+BAAe,CAAA;IACf,+BAAe,CAAA;IACf,6BAAa,CAAA;IACb,iCAAiB,CAAA;IACjB,6BAAa,CAAA;IACb,+BAAe,CAAA;IACf,6BAAa,CAAA;IACb,+BAAe,CAAA;IACf,+BAAe,CAAA;AACnB,CAAC,EAVW,YAAY,4BAAZ,YAAY,QAUvB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
3
+ * @date 03-07-2024
4
+ */
5
+ export declare enum LXC_MIGRATE {
6
+ MIGRATE_PRE_DUMP = 0,
7
+ MIGRATE_DUMP = 1,
8
+ MIGRATE_RESTORE = 2,
9
+ MIGRATE_FEATURE_CHECK = 3
10
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
4
+ * @date 03-07-2024
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.LXC_MIGRATE = void 0;
8
+ var LXC_MIGRATE;
9
+ (function (LXC_MIGRATE) {
10
+ LXC_MIGRATE[LXC_MIGRATE["MIGRATE_PRE_DUMP"] = 0] = "MIGRATE_PRE_DUMP";
11
+ LXC_MIGRATE[LXC_MIGRATE["MIGRATE_DUMP"] = 1] = "MIGRATE_DUMP";
12
+ LXC_MIGRATE[LXC_MIGRATE["MIGRATE_RESTORE"] = 2] = "MIGRATE_RESTORE";
13
+ LXC_MIGRATE[LXC_MIGRATE["MIGRATE_FEATURE_CHECK"] = 3] = "MIGRATE_FEATURE_CHECK";
14
+ })(LXC_MIGRATE || (exports.LXC_MIGRATE = LXC_MIGRATE = {}));
15
+ //# sourceMappingURL=LXC_MIGRATE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LXC_MIGRATE.js","sourceRoot":"","sources":["../../../lib/types/LXC_MIGRATE.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,qEAAoB,CAAA;IACpB,6DAAgB,CAAA;IAChB,mEAAmB,CAAA;IACnB,+EAAyB,CAAA;AAC7B,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
3
+ * @date 03-07-2024
4
+ */
5
+ export declare enum LXC_MOUNT_VERSION {
6
+ V1 = 0
7
+ }
8
+ export type lxc_mount = {
9
+ /**
10
+ * only value LXC_MOUNT_API_V1 = 1
11
+ */
12
+ version: LXC_MOUNT_VERSION;
13
+ };
14
+ export declare enum LXC_MOUNT {
15
+ MS_RDONLY = 1,/* Mount read-only. */
16
+ MS_NOSUID = 2,/* Ignore suid and sgid bits. */
17
+ MS_NODEV = 4,/* Disallow access to device special files. */
18
+ MS_NOEXEC = 8,/* Disallow program execution. */
19
+ MS_SYNCHRONOUS = 16,/* Writes are synced at once. */
20
+ MS_REMOUNT = 32,/* Alter flags of a mounted FS. */
21
+ MS_MANDLOCK = 64,/* Allow mandatory locks on an FS. */
22
+ MS_DIRSYNC = 128,/* Directory modifications are synchronous. */
23
+ MS_NOSYMFOLLOW = 256,/* Do not follow symlinks. */
24
+ MS_NOATIME = 1024,/* Do not update access times. */
25
+ MS_NODIRATIME = 2048,/* Do not update directory access times. */
26
+ MS_BIND = 4096,/* Bind directory at different place. */
27
+ MS_MOVE = 8192,
28
+ MS_REC = 16384,
29
+ MS_SILENT = 32768,
30
+ MS_POSIXACL = 65536,/* VFS does not apply the umask. */
31
+ MS_UNBINDABLE = 131072,/* Change to unbindable. */
32
+ MS_PRIVATE = 262144,/* Change to private. */
33
+ MS_SLAVE = 524288,/* Change to slave. */
34
+ MS_SHARED = 1048576,/* Change to shared. */
35
+ MS_RELATIME = 2097152,/* Update atime relative to mtime/ctime. */
36
+ MS_KERNMOUNT = 4194304,/* This is a kern_mount call. */
37
+ MS_I_VERSION = 8388608,/* Update inode I_version field. */
38
+ MS_STRICTATIME = 16777216,/* Always perform atime updates. */
39
+ MS_LAZYTIME = 33554432,/* Update the on-disk [acm]times lazily. */
40
+ MS_ACTIVE = 1073741824,
41
+ MS_NOUSER = -2147483648
42
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ /**
3
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
4
+ * @date 03-07-2024
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.LXC_MOUNT = exports.LXC_MOUNT_VERSION = void 0;
8
+ var LXC_MOUNT_VERSION;
9
+ (function (LXC_MOUNT_VERSION) {
10
+ LXC_MOUNT_VERSION[LXC_MOUNT_VERSION["V1"] = 0] = "V1";
11
+ })(LXC_MOUNT_VERSION || (exports.LXC_MOUNT_VERSION = LXC_MOUNT_VERSION = {}));
12
+ /* These are the fs-independent mount-flags: up to 16 flags are
13
+ supported */
14
+ var LXC_MOUNT;
15
+ (function (LXC_MOUNT) {
16
+ LXC_MOUNT[LXC_MOUNT["MS_RDONLY"] = 1] = "MS_RDONLY";
17
+ LXC_MOUNT[LXC_MOUNT["MS_NOSUID"] = 2] = "MS_NOSUID";
18
+ LXC_MOUNT[LXC_MOUNT["MS_NODEV"] = 4] = "MS_NODEV";
19
+ LXC_MOUNT[LXC_MOUNT["MS_NOEXEC"] = 8] = "MS_NOEXEC";
20
+ LXC_MOUNT[LXC_MOUNT["MS_SYNCHRONOUS"] = 16] = "MS_SYNCHRONOUS";
21
+ LXC_MOUNT[LXC_MOUNT["MS_REMOUNT"] = 32] = "MS_REMOUNT";
22
+ LXC_MOUNT[LXC_MOUNT["MS_MANDLOCK"] = 64] = "MS_MANDLOCK";
23
+ LXC_MOUNT[LXC_MOUNT["MS_DIRSYNC"] = 128] = "MS_DIRSYNC";
24
+ LXC_MOUNT[LXC_MOUNT["MS_NOSYMFOLLOW"] = 256] = "MS_NOSYMFOLLOW";
25
+ LXC_MOUNT[LXC_MOUNT["MS_NOATIME"] = 1024] = "MS_NOATIME";
26
+ LXC_MOUNT[LXC_MOUNT["MS_NODIRATIME"] = 2048] = "MS_NODIRATIME";
27
+ LXC_MOUNT[LXC_MOUNT["MS_BIND"] = 4096] = "MS_BIND";
28
+ LXC_MOUNT[LXC_MOUNT["MS_MOVE"] = 8192] = "MS_MOVE";
29
+ LXC_MOUNT[LXC_MOUNT["MS_REC"] = 16384] = "MS_REC";
30
+ LXC_MOUNT[LXC_MOUNT["MS_SILENT"] = 32768] = "MS_SILENT";
31
+ LXC_MOUNT[LXC_MOUNT["MS_POSIXACL"] = 65536] = "MS_POSIXACL";
32
+ LXC_MOUNT[LXC_MOUNT["MS_UNBINDABLE"] = 131072] = "MS_UNBINDABLE";
33
+ LXC_MOUNT[LXC_MOUNT["MS_PRIVATE"] = 262144] = "MS_PRIVATE";
34
+ LXC_MOUNT[LXC_MOUNT["MS_SLAVE"] = 524288] = "MS_SLAVE";
35
+ LXC_MOUNT[LXC_MOUNT["MS_SHARED"] = 1048576] = "MS_SHARED";
36
+ LXC_MOUNT[LXC_MOUNT["MS_RELATIME"] = 2097152] = "MS_RELATIME";
37
+ LXC_MOUNT[LXC_MOUNT["MS_KERNMOUNT"] = 4194304] = "MS_KERNMOUNT";
38
+ LXC_MOUNT[LXC_MOUNT["MS_I_VERSION"] = 8388608] = "MS_I_VERSION";
39
+ LXC_MOUNT[LXC_MOUNT["MS_STRICTATIME"] = 16777216] = "MS_STRICTATIME";
40
+ LXC_MOUNT[LXC_MOUNT["MS_LAZYTIME"] = 33554432] = "MS_LAZYTIME";
41
+ LXC_MOUNT[LXC_MOUNT["MS_ACTIVE"] = 1073741824] = "MS_ACTIVE";
42
+ LXC_MOUNT[LXC_MOUNT["MS_NOUSER"] = -2147483648] = "MS_NOUSER";
43
+ })(LXC_MOUNT || (exports.LXC_MOUNT = LXC_MOUNT = {}));
44
+ ;
45
+ //# sourceMappingURL=LXC_MOUNT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LXC_MOUNT.js","sourceRoot":"","sources":["../../../lib/types/LXC_MOUNT.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,IAAY,iBAEX;AAFD,WAAY,iBAAiB;IACzB,qDAAM,CAAA;AACV,CAAC,EAFW,iBAAiB,iCAAjB,iBAAiB,QAE5B;AASD;gBACgB;AAChB,IAAY,SA4BX;AA5BD,WAAY,SAAS;IACjB,mDAAa,CAAA;IACb,mDAAa,CAAA;IACb,iDAAY,CAAA;IACZ,mDAAa,CAAA;IACb,8DAAmB,CAAA;IACnB,sDAAe,CAAA;IACf,wDAAgB,CAAA;IAChB,uDAAgB,CAAA;IAChB,+DAAoB,CAAA;IACpB,wDAAiB,CAAA;IACjB,8DAAoB,CAAA;IACpB,kDAAc,CAAA;IACd,kDAAc,CAAA;IACd,iDAAc,CAAA;IACd,uDAAiB,CAAA;IACjB,2DAAqB,CAAA;IACrB,gEAAuB,CAAA;IACvB,0DAAoB,CAAA;IACpB,sDAAkB,CAAA;IAClB,yDAAmB,CAAA;IACnB,6DAAqB,CAAA;IACrB,+DAAsB,CAAA;IACtB,+DAAsB,CAAA;IACtB,oEAAwB,CAAA;IACxB,8DAAqB,CAAA;IACrB,4DAAmB,CAAA;IACnB,6DAAmB,CAAA;AACvB,CAAC,EA5BW,SAAS,yBAAT,SAAS,QA4BpB;AAAA,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
3
+ * @date 03-07-2024
4
+ */
5
+ export declare enum Personality {
6
+ /**
7
+ * Intel 32bit
8
+ */
9
+ X86 = 8,
10
+ /**
11
+ * Intel 64bit
12
+ */
13
+ X86_64 = 0
14
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ /**
3
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
4
+ * @date 03-07-2024
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Personality = void 0;
8
+ var Personality;
9
+ (function (Personality) {
10
+ /**
11
+ * Intel 32bit
12
+ */
13
+ Personality[Personality["X86"] = 8] = "X86";
14
+ /**
15
+ * Intel 64bit
16
+ */
17
+ Personality[Personality["X86_64"] = 0] = "X86_64";
18
+ })(Personality || (exports.Personality = Personality = {}));
19
+ //# sourceMappingURL=Personality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Personality.js","sourceRoot":"","sources":["../../../lib/types/Personality.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,IAAY,WASX;AATD,WAAY,WAAW;IACnB;;OAEG;IACH,2CAAY,CAAA;IACZ;;OAEG;IACH,iDAAe,CAAA;AACnB,CAAC,EATW,WAAW,2BAAX,WAAW,QAStB"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @author A.P.A. Slaa (a.p.a.slaa@projectsource.nl) ProjectSource V.O.F.
3
+ * @date 03-07-2024
4
+ */
5
+ export type bdev_specs = {
6
+ /**
7
+ * Filesystem type
8
+ */
9
+ fstype: string;
10
+ /**
11
+ * Filesystem size in bytes
12
+ */
13
+ fssize: bigint | number;
14
+ zfs: {
15
+ /**
16
+ * ZFS root path
17
+ */
18
+ zfsroot: string;
19
+ };
20
+ lvm: {
21
+ /**
22
+ * LVM Volume Group name
23
+ */
24
+ vg: string;
25
+ /**
26
+ * LVM Logical Volume name
27
+ */
28
+ lv: string;
29
+ /**
30
+ * LVM thin pool to use, if any
31
+ */
32
+ thinpool: string;
33
+ };
34
+ /**
35
+ * Directory path
36
+ */
37
+ dir: string;
38
+ rbd: {
39
+ /**
40
+ * RBD image name
41
+ */
42
+ rbdname: string;
43
+ /**
44
+ * Ceph pool name
45
+ */
46
+ rbdpool: string;
47
+ };
48
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=bdev_specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bdev_specs.js","sourceRoot":"","sources":["../../../lib/types/bdev_specs.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Represents an interactive console session to a container TTY.
3
+ */
4
+ export interface ConsoleSession {
5
+ /**
6
+ * Register an event listener.
7
+ * Only 'data' and 'close' is supported and one listener of each can be registered.
8
+ */
9
+ on(event: 'data' | 'close', listener: (chunk: Buffer) => void): this;
10
+ /**
11
+ * Write data to the console (e.g., commands).
12
+ */
13
+ write(data: string | Buffer): void;
14
+ /**
15
+ * Resize the console window.
16
+ */
17
+ resize(cols: number, rows: number): void;
18
+ /**
19
+ * Close the console session and release the TTY.
20
+ */
21
+ close(): void;
22
+ get closed(): boolean;
23
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ConsoleSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConsoleSession.js","sourceRoot":"","sources":["../../../../lib/types/custom/ConsoleSession.ts"],"names":[],"mappings":""}