@highstate/proxmox 0.9.16 → 0.9.18
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.
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/provider.ts"],"names":["cluster"],"mappings":";;;;;;AAKO,SAAS,eACd,
|
1
|
+
{"version":3,"sources":["../src/provider.ts"],"names":["cluster"],"mappings":";;;;;;AAKO,SAAS,eACd,OAAA,EACmB;AACnB,EAAA,OAAO,SAAA;AAAA,IACL,MAAA,CAAO,OAAO,CAAA,CAAE,KAAA,CAAM,CAAAA,QAAAA,KAAW;AAC/B,MAAA,OAAO,IAAI,SAAS,SAAA,EAAW;AAAA,QAC7B,QAAA,EAAU,kBAAA,CAAmBA,QAAAA,CAAQ,QAAQ,CAAA;AAAA,QAC7C,UAAUA,QAAAA,CAAQ,QAAA;AAAA,QAElB,UAAUA,QAAAA,CAAQ,QAAA;AAAA,QAClB,UAAUA,QAAAA,CAAQ,QAAA;AAAA,QAElB,UAAUA,QAAAA,CAAQ,QAAA;AAAA,QAElB,GAAA,EAAKA,SAAQ,GAAA,GACT;AAAA,UACE,UAAA,EAAYA,QAAAA,CAAQ,GAAA,CAAI,OAAA,EAAS,UAAA;AAAA,UACjC,QAAA,EAAUA,SAAQ,GAAA,CAAI,IAAA;AAAA,UACtB,QAAA,EAAUA,SAAQ,GAAA,CAAI;AAAA,SACxB,GACA;AAAA,OACL,CAAA;AAAA,IACH,CAAC;AAAA,GACH;AACF","file":"chunk-VN4CTUVY.js","sourcesContent":["import { output, toPromise, type EntityInput } from \"@highstate/pulumi\"\nimport { Provider } from \"@muhlba91/pulumi-proxmoxve\"\nimport { proxmox } from \"@highstate/library\"\nimport { l7EndpointToString } from \"@highstate/common\"\n\nexport function createProvider(\n cluster: EntityInput<typeof proxmox.clusterEntity>,\n): Promise<Provider> {\n return toPromise(\n output(cluster).apply(cluster => {\n return new Provider(\"proxmox\", {\n endpoint: l7EndpointToString(cluster.endpoint),\n insecure: cluster.insecure,\n\n username: cluster.username,\n password: cluster.password,\n\n apiToken: cluster.apiToken,\n\n ssh: cluster.ssh\n ? {\n privateKey: cluster.ssh.keyPair?.privateKey,\n username: cluster.ssh.user,\n password: cluster.ssh.password,\n }\n : undefined,\n })\n }),\n )\n}\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/connection/index.ts"],"names":["args","secrets"],"mappings":";;;;;;AAMA,IAAM,EAAE,MAAM,
|
1
|
+
{"version":3,"sources":["../../src/connection/index.ts"],"names":["args","secrets"],"mappings":"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","file":"index.js","sourcesContent":["import type { EntityValue, Input, Output } from \"@highstate/pulumi\"\nimport { proxmox, ssh } from \"@highstate/library\"\nimport { forUnit, output, toPromise } from \"@highstate/pulumi\"\nimport { cluster, storage, Provider } from \"@muhlba91/pulumi-proxmoxve\"\nimport { createServerEntity, parseL7Endpoint } from \"@highstate/common\"\n\nconst { args, secrets, inputs, outputs } = forUnit(proxmox.connection)\n\nconst provider = await toPromise(\n output({ args, secrets }).apply(({ args, secrets }) => {\n return new Provider(\"proxmox\", {\n endpoint: args.endpoint,\n insecure: args.insecure,\n\n username: args.username,\n password: secrets.password,\n\n apiToken: secrets.apiToken,\n })\n }),\n)\n\nconst nodes = await cluster.getNodes({ provider })\nif (nodes.names.length === 0) {\n throw new Error(\"No nodes found\")\n}\n\nconst nodeName = args.defaultNodeName ?? nodes.names[0]\nif (!nodes.names.includes(nodeName)) {\n throw new Error(`Node '${nodeName}' not found in the cluster`)\n}\n\nconst datastores = await storage.getDatastores({ nodeName }, { provider })\nif (datastores.datastoreIds.length === 0) {\n throw new Error(`No datastores found in the node '${nodeName}'`)\n}\n\nconst datastoreId = args.defaultDatastoreId ?? datastores.datastoreIds[0]\nif (!datastores.datastoreIds.includes(datastoreId)) {\n throw new Error(`Datastore '${datastoreId}' not found in the node '${nodeName}'`)\n}\n\nconst endpoint = parseL7Endpoint(args.endpoint)\n\nlet sshCredentials: Input<ssh.Credentials | undefined> | undefined\nif (inputs.sshKeyPair || secrets.sshPassword) {\n const server = createServerEntity(\n \"\",\n endpoint,\n args.sshPort,\n args.sshUser,\n secrets.sshPassword,\n inputs.sshKeyPair?.privateKey,\n true,\n )\n\n sshCredentials = server.ssh\n}\n\nconst proxmoxCluster: Output<EntityValue<typeof proxmox.clusterEntity>> = output({\n endpoint,\n insecure: args.insecure,\n username: args.username,\n defaultNodeName: nodeName,\n defaultDatastoreId: datastoreId,\n password: secrets.password,\n apiToken: secrets.apiToken,\n ssh: sshCredentials,\n})\n\nexport default outputs({\n proxmoxCluster,\n\n $statusFields: {\n defaultNodeName: {\n meta: {\n icon: \"mdi:server\",\n },\n value: proxmoxCluster.defaultNodeName,\n },\n defaultDatastoreId: {\n meta: {\n icon: \"mdi:database\",\n },\n value: proxmoxCluster.defaultDatastoreId,\n },\n },\n})\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/existing-image/index.ts"],"names":[],"mappings":";;;;;AAKA,IAAM,EAAE,MAAM,
|
1
|
+
{"version":3,"sources":["../../src/existing-image/index.ts"],"names":[],"mappings":";;;;;AAKA,IAAM,EAAE,MAAM,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,QAAQ,aAAa,CAAA;AAErE,IAAM,QAAA,GAAW,MAAM,cAAA,CAAe,MAAA,CAAO,cAAc,CAAA;AAE3D,IAAM,KAAA,GAAQ,QAAQ,IAAA,CAAK,GAAA;AAAA,EACzB,IAAA;AAAA,EACA,IAAA,CAAK,EAAA;AAAA,EACL;AAAA,IACE,WAAA,EAAa,OAAO,cAAA,CAAe,kBAAA;AAAA,IACnC,QAAA,EAAU,OAAO,cAAA,CAAe;AAAA,GAClC;AAAA,EACA,EAAE,QAAA;AACJ,CAAA;AAEA,IAAO,yBAAQ,OAAA,CAAQ;AAAA,EACrB,KAAA,EAAO;AAAA,IACL,IAAI,KAAA,CAAM;AAAA;AAEd,CAAC","file":"index.js","sourcesContent":["import { proxmox } from \"@highstate/library\"\nimport { forUnit } from \"@highstate/pulumi\"\nimport { storage } from \"@muhlba91/pulumi-proxmoxve\"\nimport { createProvider } from \"../provider\"\n\nconst { name, args, inputs, outputs } = forUnit(proxmox.existingImage)\n\nconst provider = await createProvider(inputs.proxmoxCluster)\n\nconst image = storage.File.get(\n name,\n args.id,\n {\n datastoreId: inputs.proxmoxCluster.defaultDatastoreId,\n nodeName: inputs.proxmoxCluster.defaultNodeName,\n },\n { provider },\n)\n\nexport default outputs({\n image: {\n id: image.id,\n },\n})\n"]}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
{
|
2
2
|
"sourceHashes": {
|
3
|
-
"./dist/connection/index.js":
|
4
|
-
"./dist/virtual-machine/index.js":
|
5
|
-
"./dist/existing-image/index.js":
|
6
|
-
"./dist/image/index.js":
|
3
|
+
"./dist/connection/index.js": 789317085,
|
4
|
+
"./dist/virtual-machine/index.js": 3326669560,
|
5
|
+
"./dist/existing-image/index.js": 1885431589,
|
6
|
+
"./dist/image/index.js": 259700982
|
7
7
|
}
|
8
8
|
}
|
package/dist/image/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/image/index.ts"],"names":["file","name","url"],"mappings":";;;;;;AAMA,IAAM,EAAE,MAAM,
|
1
|
+
{"version":3,"sources":["../../src/image/index.ts"],"names":["file","name","url"],"mappings":";;;;;;AAMA,IAAM,EAAE,MAAM,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,QAAQ,KAAK,CAAA;AAE7D,IAAM,QAAA,GAAW,MAAM,cAAA,CAAe,MAAA,CAAO,cAAc,CAAA;AAE3D,IAAI,MAA0B,IAAA,CAAK,GAAA;AACnC,IAAI,WAAwC,IAAA,CAAK,QAAA;AAEjD,IAAI,CAAC,GAAA,EAAK;AACR,EAAA,MAAMA,KAAAA,GAAO,MAAM,SAAA,CAAU,MAAA,CAAO,IAAI,CAAA;AACxC,EAAA,IAAI,CAACA,KAAAA,EAAM;AACT,IAAA,MAAM,IAAI,MAAM,wCAAwC,CAAA;AAAA,EAC1D;AAEA,EAAA,IAAIA,KAAAA,CAAK,OAAA,CAAQ,IAAA,KAAS,QAAA,EAAU;AAClC,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gDAAA,EAAmDA,KAAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,EAAA,CAAI,CAAA;AAAA,EAC1F;AAEA,EAAA,GAAA,GAAM,kBAAA,CAAmBA,KAAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA;AAC9C,EAAA,QAAA,GAAWA,MAAK,OAAA,CAAQ,QAAA;AAC1B;AAEA,IAAM,IAAA,GAAO,IAAI,QAAA,CAAS,IAAA;AAAA,EACxB,IAAA;AAAA,EACA;AAAA,IACE,WAAA,EAAa,KAAA;AAAA,IACb,mBAAmB,QAAA,EAAU,SAAA;AAAA,IAC7B,UAAU,QAAA,EAAU,KAAA;AAAA,IAEpB,WAAA,EAAa,IAAA,CAAK,WAAA,IAAe,MAAA,CAAO,cAAA,CAAe,kBAAA;AAAA,IAEvD,GAAA;AAAA,IACA,QAAA,EAAU,IAAA,CAAK,QAAA,IAAY,MAAA,CAAO,cAAA,CAAe,eAAA;AAAA,IAEjD,QAAA,EAAU,MAAA,CAAO,GAAG,CAAA,CACjB,KAAA,CAAM,YAAY,CAAA,CAClB,KAAA,CAAM,CAAC,CAACC,KAAAA,EAAM,SAAS,CAAA,KAAM;AAC5B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,OAAO,GAAGA,KAAI,CAAA,CAAA,EAAI,QAAA,CAAS,KAAK,IAAI,SAAS,CAAA,CAAA;AAAA,MAC/C;AAEA,MAAA,OAAO,CAAA,EAAGA,KAAI,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AAAA,IAC7B,CAAC;AAAA,GACL;AAAA,EACA,EAAE,QAAA;AACJ,CAAA;AAEA,SAAS,aAAaC,IAAAA,EAAgD;AACpE,EAAA,MAAM,QAAA,GAAWA,IAAAA,CAAI,KAAA,CAAM,GAAG,CAAA,CAAE,KAAI,CAAG,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA;AACnD,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA;AAEhC,EAAA,MAAMD,KAAAA,GAAO,MAAM,KAAA,CAAM,CAAA,EAAG,MAAM,MAAA,GAAS,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AACtD,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AAExC,EAAA,OAAO,CAACA,OAAM,SAAS,CAAA;AACzB;AAEA,IAAO,gBAAQ,OAAA,CAAQ;AAAA,EACrB,KAAA,EAAO;AAAA,IACL,IAAI,IAAA,CAAK;AAAA;AAEb,CAAC","file":"index.js","sourcesContent":["import { common, proxmox } from \"@highstate/library\"\nimport { forUnit, output, toPromise } from \"@highstate/pulumi\"\nimport { download } from \"@muhlba91/pulumi-proxmoxve\"\nimport { l7EndpointToString } from \"@highstate/common\"\nimport { createProvider } from \"../provider\"\n\nconst { name, args, inputs, outputs } = forUnit(proxmox.image)\n\nconst provider = await createProvider(inputs.proxmoxCluster)\n\nlet url: string | undefined = args.url\nlet checksum: common.Checksum | undefined = args.checksum\n\nif (!url) {\n const file = await toPromise(inputs.file)\n if (!file) {\n throw new Error(\"No file provided and no URL specified.\")\n }\n\n if (file.content.type !== \"remote\") {\n throw new Error(`For now only \"remote\" files are supported, got \"${file.content.type}\".`)\n }\n\n url = l7EndpointToString(file.content.endpoint)\n checksum = file.content.checksum\n}\n\nconst file = new download.File(\n name,\n {\n contentType: \"iso\",\n checksumAlgorithm: checksum?.algorithm,\n checksum: checksum?.value,\n\n datastoreId: args.datastoreId ?? inputs.proxmoxCluster.defaultDatastoreId,\n\n url,\n nodeName: args.nodeName ?? inputs.proxmoxCluster.defaultNodeName,\n\n fileName: output(url)\n .apply(getNameByUrl)\n .apply(([name, extension]) => {\n if (checksum) {\n return `${name}-${checksum.value}.${extension}`\n }\n\n return `${name}.${extension}`\n }),\n },\n { provider },\n)\n\nfunction getNameByUrl(url: string): [name: string, extension: string] {\n const fullName = url.split(\"/\").pop()!.split(\"?\")[0]\n const parts = fullName.split(\".\")\n\n const name = parts.slice(0, parts.length - 1).join(\".\")\n const extension = parts[parts.length - 1]\n\n return [name, extension]\n}\n\nexport default outputs({\n image: {\n id: file.id,\n },\n})\n"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/virtual-machine/index.ts"],"names":[],"mappings":";;;;;;AAYA,IAAM,EAAE,MAAM,
|
1
|
+
{"version":3,"sources":["../../src/virtual-machine/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { VM } from \"@muhlba91/pulumi-proxmoxve/types/input\"\nimport { proxmox } from \"@highstate/library\"\nimport { forUnit, output, toPromise, type Input, type Unwrap } from \"@highstate/pulumi\"\nimport { vm, storage } from \"@muhlba91/pulumi-proxmoxve\"\nimport {\n createServerEntity,\n createSshTerminal,\n l3EndpointToString,\n parseL3Endpoint,\n} from \"@highstate/common\"\nimport { createProvider } from \"../provider\"\n\nconst { name, args, inputs, secrets, outputs } = forUnit(proxmox.virtualMachine)\n\nconst provider = await createProvider(inputs.proxmoxCluster)\n\nconst nodeName = args.nodeName ?? inputs.proxmoxCluster.defaultNodeName\nconst datastoreId = args.datastoreId ?? inputs.proxmoxCluster.defaultDatastoreId\nconst sshKeyPair = await toPromise(inputs.sshKeyPair)\nconst inputVendorData = await toPromise(inputs.vendorData)\n\nconst machine = new vm.VirtualMachine(\n name,\n {\n name,\n nodeName,\n agent: {\n enabled: true,\n },\n cpu: {\n cores: args.cores,\n sockets: args.sockets,\n type: args.cpuType,\n },\n memory: {\n dedicated: args.memory,\n },\n disks: [\n {\n interface: \"virtio0\",\n size: args.diskSize,\n iothread: true,\n discard: \"on\",\n datastoreId,\n fileId: inputs.image.id,\n },\n ],\n networkDevices: [\n {\n bridge: args.bridge,\n },\n ],\n initialization: output(inputs).apply(createCloudInit),\n },\n { provider, ignoreChanges: [\"disks\", \"cdrom\"] },\n)\n\nfunction findNotLocalHostIpV4(ips: string[][]): string {\n for (const ip of ips) {\n if (ip[0] && ip[0] !== \"127.0.0.1\") {\n return ip[0]\n }\n }\n\n throw new Error(\"No non-local host IP found\")\n}\n\nfunction deriveIpV4Gateway(ip: string): string {\n return ip.split(\".\").slice(0, 3).join(\".\") + \".1\"\n}\n\nfunction createCloudInit(resolvedInputs: Unwrap<typeof inputs>): VM.VirtualMachineInitialization {\n let vendorDataFileId: Input<string> | undefined\n\n if (args.vendorData || inputVendorData) {\n let vendorData: string | undefined = args.vendorData\n\n if (!vendorData) {\n if (inputVendorData!.content.type !== \"embedded\") {\n throw new Error(\"For now, only the embedded vendor data is supported.\")\n }\n\n vendorData = inputVendorData!.content.value\n }\n\n const file = new storage.File(\n \"vendor-data\",\n {\n datastoreId,\n nodeName,\n contentType: \"snippets\",\n sourceRaw: {\n fileName: `${name}-vendor-data.yaml`,\n data: vendorData,\n },\n },\n { provider },\n )\n\n vendorDataFileId = file.id\n }\n\n return {\n datastoreId,\n interface: \"ide2\",\n\n ipConfigs: args.ipv4\n ? [\n {\n ipv4: {\n address: args.ipv4,\n gateway: args.ipv4Gateway ?? deriveIpV4Gateway(args.ipv4),\n },\n },\n ]\n : [\n {\n ipv4: {\n address: \"dhcp\",\n },\n },\n ],\n\n dns: args.dns ? { servers: args.dns } : undefined,\n\n userAccount: resolvedInputs.sshKeyPair\n ? output({\n keys: [resolvedInputs.sshKeyPair.publicKey],\n username: args.sshUser ?? \"root\",\n password: secrets.sshPassword,\n })\n : undefined,\n\n vendorDataFileId,\n }\n}\n\nconst ipv4Addresses = await toPromise(machine.ipv4Addresses)\nconst nonLocalHostIpV4 = findNotLocalHostIpV4(ipv4Addresses)\n\nconst endpoint = parseL3Endpoint(nonLocalHostIpV4)\n\nconst server = createServerEntity(\n name,\n endpoint,\n args.sshPort,\n args.sshUser,\n secrets.sshPassword,\n inputs.sshKeyPair?.privateKey,\n !!sshKeyPair,\n)\n\nexport default outputs({\n server,\n endpoints: [endpoint],\n\n $statusFields: {\n endpoints: [l3EndpointToString(endpoint)],\n hostname: name,\n },\n\n $terminals: [createSshTerminal(server.ssh)],\n})\n"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@highstate/proxmox",
|
3
|
-
"version": "0.9.
|
3
|
+
"version": "0.9.18",
|
4
4
|
"type": "module",
|
5
5
|
"files": [
|
6
6
|
"dist"
|
@@ -18,14 +18,14 @@
|
|
18
18
|
"build": "highstate build"
|
19
19
|
},
|
20
20
|
"dependencies": {
|
21
|
-
"@highstate/common": "^0.9.
|
22
|
-
"@highstate/contract": "^0.9.
|
23
|
-
"@highstate/library": "^0.9.
|
24
|
-
"@highstate/pulumi": "^0.9.
|
21
|
+
"@highstate/common": "^0.9.18",
|
22
|
+
"@highstate/contract": "^0.9.18",
|
23
|
+
"@highstate/library": "^0.9.18",
|
24
|
+
"@highstate/pulumi": "^0.9.18",
|
25
25
|
"@muhlba91/pulumi-proxmoxve": "^6.17.1"
|
26
26
|
},
|
27
27
|
"devDependencies": {
|
28
|
-
"@highstate/cli": "^0.9.
|
28
|
+
"@highstate/cli": "^0.9.18"
|
29
29
|
},
|
30
|
-
"gitHead": "
|
30
|
+
"gitHead": "9ebcd7da56b00b8ca08bf52cc8438f527338cd64"
|
31
31
|
}
|