@highstate/proxmox 0.19.1 → 0.20.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.
@@ -10,12 +10,12 @@ function createProvider(cluster) {
10
10
  endpoint: l7EndpointToString(cluster2.endpoint),
11
11
  insecure: cluster2.insecure,
12
12
  username: cluster2.username,
13
- password: cluster2.password,
14
- apiToken: cluster2.apiToken,
13
+ password: cluster2.password?.value,
14
+ apiToken: cluster2.apiToken?.value,
15
15
  ssh: cluster2.ssh ? {
16
- privateKey: cluster2.ssh.keyPair?.privateKey,
16
+ privateKey: cluster2.ssh.keyPair?.privateKey.value,
17
17
  username: cluster2.ssh.user,
18
- password: cluster2.ssh.password
18
+ password: cluster2.ssh.password?.value
19
19
  } : void 0
20
20
  });
21
21
  })
@@ -23,5 +23,5 @@ function createProvider(cluster) {
23
23
  }
24
24
 
25
25
  export { createProvider };
26
- //# sourceMappingURL=chunk-NPPQI2HP.js.map
27
- //# sourceMappingURL=chunk-NPPQI2HP.js.map
26
+ //# sourceMappingURL=chunk-HVS5YMOV.js.map
27
+ //# sourceMappingURL=chunk-HVS5YMOV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/provider.ts"],"names":["cluster"],"mappings":";;;;;AAKO,SAAS,eAAe,OAAA,EAAoD;AACjF,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,QAE7C,UAAUA,QAAAA,CAAQ,QAAA;AAAA,QAClB,UAAUA,QAAAA,CAAQ,QAAA;AAAA,QAClB,QAAA,EAAUA,SAAQ,QAAA,EAAU,KAAA;AAAA,QAE5B,QAAA,EAAUA,SAAQ,QAAA,EAAU,KAAA;AAAA,QAE5B,GAAA,EAAKA,SAAQ,GAAA,GACT;AAAA,UACE,UAAA,EAAYA,QAAAA,CAAQ,GAAA,CAAI,OAAA,EAAS,UAAA,CAAW,KAAA;AAAA,UAC5C,QAAA,EAAUA,SAAQ,GAAA,CAAI,IAAA;AAAA,UACtB,QAAA,EAAUA,QAAAA,CAAQ,GAAA,CAAI,QAAA,EAAU;AAAA,SAClC,GACA;AAAA,OACL,CAAA;AAAA,IACH,CAAC;AAAA,GACH;AACF","file":"chunk-HVS5YMOV.js","sourcesContent":["import type { proxmox } from \"@highstate/library\"\nimport { l7EndpointToString } from \"@highstate/common\"\nimport { type Input, output, toPromise } from \"@highstate/pulumi\"\nimport { Provider } from \"@muhlba91/pulumi-proxmoxve\"\n\nexport function createProvider(cluster: Input<proxmox.Cluster>): Promise<Provider> {\n return toPromise(\n output(cluster).apply(cluster => {\n return new Provider(\"proxmox\", {\n endpoint: l7EndpointToString(cluster.endpoint),\n\n insecure: cluster.insecure,\n username: cluster.username,\n password: cluster.password?.value,\n\n apiToken: cluster.apiToken?.value,\n\n ssh: cluster.ssh\n ? {\n privateKey: cluster.ssh.keyPair?.privateKey.value,\n username: cluster.ssh.user,\n password: cluster.ssh.password?.value,\n }\n : undefined,\n })\n }),\n )\n}\n"]}
@@ -1,17 +1,17 @@
1
1
  import { parseEndpoint, createServerBundle } from '@highstate/common';
2
2
  import { proxmox } from '@highstate/library';
3
- import { forUnit, toPromise, output } from '@highstate/pulumi';
3
+ import { forUnit, toPromise, output, makeEntityOutput } from '@highstate/pulumi';
4
4
  import { Provider, cluster, storage } from '@muhlba91/pulumi-proxmoxve';
5
5
 
6
6
  // src/connection/index.ts
7
- var { name, args, secrets, inputs, outputs } = forUnit(proxmox.connection);
7
+ var { stateId, name, args, secrets, inputs, outputs } = forUnit(proxmox.connection);
8
8
  var provider = await toPromise(
9
9
  output({ args, secrets }).apply(({ args: args2, secrets: secrets2 }) => {
10
10
  return new Provider("proxmox", {
11
11
  endpoint: args2.endpoint,
12
12
  insecure: args2.insecure,
13
13
  username: args2.username,
14
- password: secrets2.sshPassword,
14
+ password: secrets2.password,
15
15
  apiToken: secrets2.apiToken
16
16
  });
17
17
  })
@@ -49,15 +49,19 @@ if (inputs.sshKeyPair || secrets.sshPassword || secrets.sshPrivateKey) {
49
49
  sshCredentials = server.ssh;
50
50
  nodeTerminal = terminal;
51
51
  }
52
- var proxmoxCluster = output({
53
- endpoint,
54
- insecure: args.insecure,
55
- username: args.username,
56
- defaultNodeName: nodeName,
57
- defaultDatastoreId: datastoreId,
58
- password: secrets.sshPassword,
59
- apiToken: secrets.apiToken,
60
- ssh: sshCredentials
52
+ var proxmoxCluster = makeEntityOutput({
53
+ entity: proxmox.clusterEntity,
54
+ identity: stateId,
55
+ value: {
56
+ endpoint,
57
+ insecure: args.insecure,
58
+ username: args.username,
59
+ defaultNodeName: nodeName,
60
+ defaultDatastoreId: datastoreId,
61
+ password: secrets.password,
62
+ apiToken: secrets.apiToken,
63
+ ssh: sshCredentials
64
+ }
61
65
  });
62
66
  var connection_default = outputs({
63
67
  proxmoxCluster,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/connection/index.ts"],"names":["args","secrets"],"mappings":"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","file":"index.js","sourcesContent":["import type { UnitTerminal } from \"@highstate/contract\"\nimport type { Output } from \"@highstate/pulumi\"\nimport { createServerBundle, parseEndpoint } from \"@highstate/common\"\nimport { type common, proxmox, type ssh } from \"@highstate/library\"\nimport { forUnit, output, toPromise } from \"@highstate/pulumi\"\nimport { cluster, Provider, storage } from \"@muhlba91/pulumi-proxmoxve\"\n\nconst { name, 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.sshPassword,\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 = parseEndpoint(args.endpoint, 7)\n\nlet serverEntity: Output<common.Server> | undefined\nlet sshCredentials: Output<ssh.Connection | undefined> | undefined\nlet nodeTerminal: Output<UnitTerminal> | undefined\n\nif (inputs.sshKeyPair || secrets.sshPassword || secrets.sshPrivateKey) {\n const { server, terminal } = await createServerBundle({\n name,\n endpoints: [endpoint],\n sshArgs: args.ssh,\n sshPassword: secrets.sshPassword,\n sshPrivateKey: secrets.sshPrivateKey,\n sshKeyPair: inputs.sshKeyPair,\n })\n\n serverEntity = server\n sshCredentials = server.ssh\n nodeTerminal = terminal\n}\n\nconst proxmoxCluster: Output<proxmox.Cluster> = output({\n endpoint,\n insecure: args.insecure,\n username: args.username,\n defaultNodeName: nodeName,\n defaultDatastoreId: datastoreId,\n password: secrets.sshPassword,\n apiToken: secrets.apiToken,\n ssh: sshCredentials,\n})\n\nexport default outputs({\n proxmoxCluster,\n server: serverEntity,\n\n $terminals: [nodeTerminal],\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
+ {"version":3,"sources":["../../src/connection/index.ts"],"names":["args","secrets"],"mappings":"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","file":"index.js","sourcesContent":["import type { UnitTerminal } from \"@highstate/contract\"\nimport { createServerBundle, parseEndpoint } from \"@highstate/common\"\nimport { type common, proxmox, type ssh } from \"@highstate/library\"\nimport { forUnit, makeEntityOutput, output, toPromise } from \"@highstate/pulumi\"\nimport { cluster, Provider, storage } from \"@muhlba91/pulumi-proxmoxve\"\n\nconst { stateId, name, 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 = parseEndpoint(args.endpoint, 7)\n\nlet serverEntity: common.Server | undefined\nlet sshCredentials: ssh.Connection | undefined\nlet nodeTerminal: UnitTerminal | undefined\n\nif (inputs.sshKeyPair || secrets.sshPassword || secrets.sshPrivateKey) {\n const { server, terminal } = await createServerBundle({\n name,\n endpoints: [endpoint],\n sshArgs: args.ssh,\n sshPassword: secrets.sshPassword,\n sshPrivateKey: secrets.sshPrivateKey,\n sshKeyPair: inputs.sshKeyPair,\n })\n\n serverEntity = server\n sshCredentials = server.ssh\n nodeTerminal = terminal\n}\n\nconst proxmoxCluster = makeEntityOutput({\n entity: proxmox.clusterEntity,\n identity: stateId,\n value: {\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})\n\nexport default outputs({\n proxmoxCluster,\n server: serverEntity,\n\n $terminals: [nodeTerminal],\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,6 +1,6 @@
1
- import { createProvider } from '../chunk-NPPQI2HP.js';
1
+ import { createProvider } from '../chunk-HVS5YMOV.js';
2
2
  import { proxmox } from '@highstate/library';
3
- import { forUnit } from '@highstate/pulumi';
3
+ import { forUnit, makeEntityOutput, getCombinedIdentityOutput } from '@highstate/pulumi';
4
4
  import { storage } from '@muhlba91/pulumi-proxmoxve';
5
5
 
6
6
  var { args, inputs, outputs } = forUnit(proxmox.existingImage);
@@ -15,9 +15,16 @@ var image = storage.File.get(
15
15
  { provider }
16
16
  );
17
17
  var existing_image_default = outputs({
18
- image: {
19
- id: image.id
20
- }
18
+ image: makeEntityOutput({
19
+ entity: proxmox.imageEntity,
20
+ identity: getCombinedIdentityOutput([inputs.proxmoxCluster, image.id]),
21
+ meta: {
22
+ title: image.fileName
23
+ },
24
+ value: {
25
+ id: image.id
26
+ }
27
+ })
21
28
  });
22
29
 
23
30
  export { existing_image_default as default };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/existing-image/index.ts"],"names":[],"mappings":";;;;;AAKA,IAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,QAAQ,aAAa,CAAA;AAE/D,IAAM,QAAA,GAAW,MAAM,cAAA,CAAe,MAAA,CAAO,cAAc,CAAA;AAE3D,IAAM,KAAA,GAAQ,QAAQ,IAAA,CAAK,GAAA;AAAA,EACzB,OAAA;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 { args, inputs, outputs } = forUnit(proxmox.existingImage)\n\nconst provider = await createProvider(inputs.proxmoxCluster)\n\nconst image = storage.File.get(\n \"image\",\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
+ {"version":3,"sources":["../../src/existing-image/index.ts"],"names":[],"mappings":";;;;;AAKA,IAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,QAAQ,aAAa,CAAA;AAE/D,IAAM,QAAA,GAAW,MAAM,cAAA,CAAe,MAAA,CAAO,cAAc,CAAA;AAE3D,IAAM,KAAA,GAAQ,QAAQ,IAAA,CAAK,GAAA;AAAA,EACzB,OAAA;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,OAAO,gBAAA,CAAiB;AAAA,IACtB,QAAQ,OAAA,CAAQ,WAAA;AAAA,IAChB,UAAU,yBAAA,CAA0B,CAAC,OAAO,cAAA,EAAgB,KAAA,CAAM,EAAE,CAAC,CAAA;AAAA,IACrE,IAAA,EAAM;AAAA,MACJ,OAAO,KAAA,CAAM;AAAA,KACf;AAAA,IACA,KAAA,EAAO;AAAA,MACL,IAAI,KAAA,CAAM;AAAA;AACZ,GACD;AACH,CAAC","file":"index.js","sourcesContent":["import { proxmox } from \"@highstate/library\"\nimport { forUnit, getCombinedIdentityOutput, makeEntityOutput } from \"@highstate/pulumi\"\nimport { storage } from \"@muhlba91/pulumi-proxmoxve\"\nimport { createProvider } from \"../provider\"\n\nconst { args, inputs, outputs } = forUnit(proxmox.existingImage)\n\nconst provider = await createProvider(inputs.proxmoxCluster)\n\nconst image = storage.File.get(\n \"image\",\n args.id,\n {\n datastoreId: inputs.proxmoxCluster.defaultDatastoreId,\n nodeName: inputs.proxmoxCluster.defaultNodeName,\n },\n { provider },\n)\n\nexport default outputs({\n image: makeEntityOutput({\n entity: proxmox.imageEntity,\n identity: getCombinedIdentityOutput([inputs.proxmoxCluster, image.id]),\n meta: {\n title: image.fileName,\n },\n value: {\n id: image.id,\n },\n }),\n})\n"]}
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "sourceHashes": {
3
- "./dist/connection/index.js": 2386027482,
4
- "./dist/virtual-machine/index.js": 3539137165,
5
- "./dist/existing-image/index.js": 1289689566,
6
- "./dist/image/index.js": 3082504750
3
+ "./dist/connection/index.js": 2162128721,
4
+ "./dist/virtual-machine/index.js": 1215225134,
5
+ "./dist/existing-image/index.js": 781176786,
6
+ "./dist/image/index.js": 974350653
7
7
  }
8
8
  }
@@ -1,7 +1,7 @@
1
- import { createProvider } from '../chunk-NPPQI2HP.js';
1
+ import { createProvider } from '../chunk-HVS5YMOV.js';
2
2
  import { l7EndpointToString } from '@highstate/common';
3
3
  import { proxmox } from '@highstate/library';
4
- import { forUnit, toPromise, output } from '@highstate/pulumi';
4
+ import { forUnit, toPromise, output, makeEntityOutput, getCombinedIdentityOutput } from '@highstate/pulumi';
5
5
  import { download } from '@muhlba91/pulumi-proxmoxve';
6
6
 
7
7
  var { args, inputs, outputs } = forUnit(proxmox.image);
@@ -48,9 +48,16 @@ function getNameByUrl(url2) {
48
48
  return [name, extension];
49
49
  }
50
50
  var image_default = outputs({
51
- image: {
52
- id: file.id
53
- }
51
+ image: makeEntityOutput({
52
+ entity: proxmox.imageEntity,
53
+ identity: getCombinedIdentityOutput([inputs.proxmoxCluster, file.id]),
54
+ meta: {
55
+ title: file.fileName
56
+ },
57
+ value: {
58
+ id: file.id
59
+ }
60
+ })
54
61
  });
55
62
 
56
63
  export { image_default as default };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/image/index.ts"],"names":["file","url"],"mappings":";;;;;;AAMA,IAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAQ,GAAI,OAAA,CAAQ,QAAQ,KAAK,CAAA;AAEvD,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,OAAA;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,CAAC,IAAA,EAAM,SAAS,CAAA,KAAM;AAC5B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,QAAA,CAAS,KAAK,IAAI,SAAS,CAAA,CAAA;AAAA,MAC/C;AAEA,MAAA,OAAO,CAAA,EAAG,IAAI,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,EAAG,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA;AACnD,EAAA,MAAM,KAAA,GAAQ,QAAA,EAAU,KAAA,CAAM,GAAG,CAAA;AAEjC,EAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG;AAC9B,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iDAAA,EAAoDA,IAAG,CAAA,CAAE,CAAA;AAAA,EAC3E;AAEA,EAAA,MAAM,IAAA,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,CAAC,MAAM,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 { l7EndpointToString } from \"@highstate/common\"\nimport { type common, proxmox } from \"@highstate/library\"\nimport { forUnit, output, toPromise } from \"@highstate/pulumi\"\nimport { download } from \"@muhlba91/pulumi-proxmoxve\"\nimport { createProvider } from \"../provider\"\n\nconst { 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 \"image\",\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 if (!parts || parts.length < 2) {\n throw new Error(`Cannot extract file name and extension from URL: ${url}`)\n }\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
+ {"version":3,"sources":["../../src/image/index.ts"],"names":["file","url"],"mappings":"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","file":"index.js","sourcesContent":["import { l7EndpointToString } from \"@highstate/common\"\nimport { type common, proxmox } from \"@highstate/library\"\nimport {\n forUnit,\n getCombinedIdentityOutput,\n makeEntityOutput,\n output,\n toPromise,\n} from \"@highstate/pulumi\"\nimport { download } from \"@muhlba91/pulumi-proxmoxve\"\nimport { createProvider } from \"../provider\"\n\nconst { 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 \"image\",\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 if (!parts || parts.length < 2) {\n throw new Error(`Cannot extract file name and extension from URL: ${url}`)\n }\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: makeEntityOutput({\n entity: proxmox.imageEntity,\n identity: getCombinedIdentityOutput([inputs.proxmoxCluster, file.id]),\n meta: {\n title: file.fileName,\n },\n value: {\n id: file.id,\n },\n }),\n})\n"]}
@@ -1,5 +1,5 @@
1
- import { createProvider } from '../chunk-NPPQI2HP.js';
2
- import { sshPrivateKeyToKeyPair, generateSshPrivateKey, generatePassword, parseEndpoint, createServerBundle, l3EndpointToString } from '@highstate/common';
1
+ import { createProvider } from '../chunk-HVS5YMOV.js';
2
+ import { generateSshPrivateKey, sshPrivateKeyToKeyPair, generatePassword, parseEndpoint, createServerBundle, l3EndpointToString } from '@highstate/common';
3
3
  import { proxmox } from '@highstate/library';
4
4
  import { forUnit, toPromise, getResourceComment, output } from '@highstate/pulumi';
5
5
  import { vm, storage } from '@muhlba91/pulumi-proxmoxve';
@@ -10,7 +10,7 @@ var provider = await createProvider(inputs.proxmoxCluster);
10
10
  var nodeName = args.nodeName ?? inputs.proxmoxCluster.defaultNodeName;
11
11
  var datastoreId = args.datastoreId ?? inputs.proxmoxCluster.defaultDatastoreId;
12
12
  var inputVendorData = await toPromise(inputs.vendorData);
13
- var sshKeyPair = inputs.sshKeyPair ?? sshPrivateKeyToKeyPair(getSecret("sshPrivateKey", generateSshPrivateKey));
13
+ var sshKeyPair = inputs.sshKeyPair ?? getSecret("sshPrivateKey", generateSshPrivateKey).apply(sshPrivateKeyToKeyPair);
14
14
  var rootPassword = getSecret("rootPassword", generatePassword);
15
15
  var machine = new vm.VirtualMachine(
16
16
  "virtual-machine",
@@ -118,7 +118,7 @@ var { server, terminal } = await createServerBundle({
118
118
  endpoints: [endpoint],
119
119
  sshArgs: args.ssh,
120
120
  sshPassword: rootPassword,
121
- sshPrivateKey: sshKeyPair.privateKey,
121
+ sshPrivateKey: sshKeyPair.privateKey.value,
122
122
  sshKeyPair
123
123
  });
124
124
  var virtual_machine_default = outputs({
@@ -1 +1 @@
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 {\n createServerBundle,\n generatePassword,\n generateSshPrivateKey,\n l3EndpointToString,\n parseEndpoint,\n sshPrivateKeyToKeyPair,\n} from \"@highstate/common\"\nimport { proxmox } from \"@highstate/library\"\nimport { forUnit, getResourceComment, type Input, output, toPromise } from \"@highstate/pulumi\"\nimport { storage, vm } from \"@muhlba91/pulumi-proxmoxve\"\nimport { createProvider } from \"../provider\"\n\nconst { name, args, getSecret, inputs, outputs } = forUnit(proxmox.virtualMachine)\n\nconst vmName = args.vmName ?? name\n\nconst provider = await createProvider(inputs.proxmoxCluster)\n\nconst nodeName = args.nodeName ?? inputs.proxmoxCluster.defaultNodeName\nconst datastoreId = args.datastoreId ?? inputs.proxmoxCluster.defaultDatastoreId\nconst inputVendorData = await toPromise(inputs.vendorData)\n\nconst sshKeyPair =\n inputs.sshKeyPair ?? sshPrivateKeyToKeyPair(getSecret(\"sshPrivateKey\", generateSshPrivateKey))\n\nconst rootPassword = getSecret(\"rootPassword\", generatePassword)\n\nconst machine = new vm.VirtualMachine(\n \"virtual-machine\",\n {\n name: vmName,\n nodeName,\n description: getResourceComment(),\n agent: {\n enabled: true,\n },\n cpu: {\n cores: args.resources.cores,\n sockets: args.resources.sockets,\n type: args.cpuType,\n },\n memory: {\n dedicated: args.resources.memory,\n },\n disks: [\n {\n interface: \"virtio0\",\n size: args.resources.diskSize,\n iothread: true,\n discard: \"on\",\n datastoreId,\n fileId: inputs.image.id,\n },\n ],\n networkDevices: [\n {\n bridge: args.network.bridge,\n },\n ],\n initialization: createCloudInit(),\n },\n { provider, ignoreChanges: [\"disks\", \"cdrom\"] },\n)\n\nfunction findNonLocalHostIpV4(ips: string[][]): string {\n for (const ip of ips) {\n if (ip[0] && ip[0] !== \"127.0.0.1\" && ip[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(): 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: `${vmName}-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:\n args.ipv4.type === \"static\"\n ? [\n {\n ipv4: {\n address: `${args.ipv4.address}/${args.ipv4.prefix}`,\n gateway: args.ipv4.gateway ?? deriveIpV4Gateway(args.ipv4.address),\n },\n },\n ]\n : [\n {\n ipv4: {\n address: \"dhcp\",\n },\n },\n ],\n\n dns: args.network.dns.length > 0 ? { servers: args.network.dns } : undefined,\n\n userAccount: output({\n keys: [sshKeyPair.publicKey],\n username: \"root\",\n password: rootPassword,\n }),\n\n vendorDataFileId,\n }\n}\n\nconst ipv4Addresses = await toPromise(machine.ipv4Addresses)\nconst nonLocalHostIpV4 = findNonLocalHostIpV4(ipv4Addresses)\n\nconst endpoint = parseEndpoint(nonLocalHostIpV4)\n\nconst { server, terminal } = await createServerBundle({\n name: vmName,\n endpoints: [endpoint],\n sshArgs: args.ssh,\n sshPassword: rootPassword,\n sshPrivateKey: sshKeyPair.privateKey,\n sshKeyPair,\n})\n\nexport default outputs({\n server,\n\n $statusFields: {\n endpoints: [l3EndpointToString(endpoint)],\n hostname: vmName,\n },\n\n $terminals: [terminal],\n})\n"]}
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 {\n createServerBundle,\n generatePassword,\n generateSshPrivateKey,\n l3EndpointToString,\n parseEndpoint,\n sshPrivateKeyToKeyPair,\n} from \"@highstate/common\"\nimport { proxmox } from \"@highstate/library\"\nimport { forUnit, getResourceComment, type Input, output, toPromise } from \"@highstate/pulumi\"\nimport { storage, vm } from \"@muhlba91/pulumi-proxmoxve\"\nimport { createProvider } from \"../provider\"\n\nconst { name, args, getSecret, inputs, outputs } = forUnit(proxmox.virtualMachine)\n\nconst vmName = args.vmName ?? name\n\nconst provider = await createProvider(inputs.proxmoxCluster)\n\nconst nodeName = args.nodeName ?? inputs.proxmoxCluster.defaultNodeName\nconst datastoreId = args.datastoreId ?? inputs.proxmoxCluster.defaultDatastoreId\nconst inputVendorData = await toPromise(inputs.vendorData)\n\nconst sshKeyPair =\n inputs.sshKeyPair ??\n getSecret(\"sshPrivateKey\", generateSshPrivateKey).apply(sshPrivateKeyToKeyPair)\n\nconst rootPassword = getSecret(\"rootPassword\", generatePassword)\n\nconst machine = new vm.VirtualMachine(\n \"virtual-machine\",\n {\n name: vmName,\n nodeName,\n description: getResourceComment(),\n agent: {\n enabled: true,\n },\n cpu: {\n cores: args.resources.cores,\n sockets: args.resources.sockets,\n type: args.cpuType,\n },\n memory: {\n dedicated: args.resources.memory,\n },\n disks: [\n {\n interface: \"virtio0\",\n size: args.resources.diskSize,\n iothread: true,\n discard: \"on\",\n datastoreId,\n fileId: inputs.image.id,\n },\n ],\n networkDevices: [\n {\n bridge: args.network.bridge,\n },\n ],\n initialization: createCloudInit(),\n },\n { provider, ignoreChanges: [\"disks\", \"cdrom\"] },\n)\n\nfunction findNonLocalHostIpV4(ips: string[][]): string {\n for (const ip of ips) {\n if (ip[0] && ip[0] !== \"127.0.0.1\" && ip[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(): 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: `${vmName}-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:\n args.ipv4.type === \"static\"\n ? [\n {\n ipv4: {\n address: `${args.ipv4.address}/${args.ipv4.prefix}`,\n gateway: args.ipv4.gateway ?? deriveIpV4Gateway(args.ipv4.address),\n },\n },\n ]\n : [\n {\n ipv4: {\n address: \"dhcp\",\n },\n },\n ],\n\n dns: args.network.dns.length > 0 ? { servers: args.network.dns } : undefined,\n\n userAccount: output({\n keys: [sshKeyPair.publicKey],\n username: \"root\",\n password: rootPassword,\n }),\n\n vendorDataFileId,\n }\n}\n\nconst ipv4Addresses = await toPromise(machine.ipv4Addresses)\nconst nonLocalHostIpV4 = findNonLocalHostIpV4(ipv4Addresses)\n\nconst endpoint = parseEndpoint(nonLocalHostIpV4)\n\nconst { server, terminal } = await createServerBundle({\n name: vmName,\n endpoints: [endpoint],\n sshArgs: args.ssh,\n sshPassword: rootPassword,\n sshPrivateKey: sshKeyPair.privateKey.value,\n sshKeyPair,\n})\n\nexport default outputs({\n server,\n\n $statusFields: {\n endpoints: [l3EndpointToString(endpoint)],\n hostname: vmName,\n },\n\n $terminals: [terminal],\n})\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@highstate/proxmox",
3
- "version": "0.19.1",
3
+ "version": "0.20.0",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -21,15 +21,15 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "@muhlba91/pulumi-proxmoxve": "^6.17.1",
24
- "@highstate/common": "0.19.1",
25
- "@highstate/library": "0.19.1",
26
- "@highstate/contract": "0.19.1",
27
- "@highstate/pulumi": "0.19.1"
24
+ "@highstate/common": "0.20.0",
25
+ "@highstate/library": "0.20.0",
26
+ "@highstate/contract": "0.20.0",
27
+ "@highstate/pulumi": "0.20.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@biomejs/biome": "2.2.0",
31
31
  "@typescript/native-preview": "^7.0.0-dev.20250920.1",
32
- "@highstate/cli": "0.19.1"
32
+ "@highstate/cli": "0.20.0"
33
33
  },
34
34
  "repository": {
35
35
  "url": "https://github.com/highstate-io/highstate"
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/provider.ts"],"names":["cluster"],"mappings":";;;;;AAKO,SAAS,eAAe,OAAA,EAAoD;AACjF,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,QAE7C,UAAUA,QAAAA,CAAQ,QAAA;AAAA,QAClB,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-NPPQI2HP.js","sourcesContent":["import type { proxmox } from \"@highstate/library\"\nimport { l7EndpointToString } from \"@highstate/common\"\nimport { type Input, output, toPromise } from \"@highstate/pulumi\"\nimport { Provider } from \"@muhlba91/pulumi-proxmoxve\"\n\nexport function createProvider(cluster: Input<proxmox.Cluster>): Promise<Provider> {\n return toPromise(\n output(cluster).apply(cluster => {\n return new Provider(\"proxmox\", {\n endpoint: l7EndpointToString(cluster.endpoint),\n\n insecure: cluster.insecure,\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"]}