@muhlba91/pulumi-proxmoxve
Version:
A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.
159 lines • 8.51 kB
JavaScript
;
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
Object.defineProperty(exports, "__esModule", { value: true });
exports.File = void 0;
const pulumi = require("@pulumi/pulumi");
const utilities = require("../utilities");
/**
* Manages files upload using PVE download-url API. It can be fully compatible and faster replacement for image files created using `proxmoxve.Storage.File`. Supports images for VMs (ISO and disk images) and LXC (CT Templates).
*
* > Besides the `Datastore.AllocateTemplate` privilege, this resource requires both the `Sys.Audit` and `Sys.Modify` privileges.<br><br>
* For more details, see the [`download-url`](https://pve.proxmox.com/pve-docs/api-viewer/index.html#/nodes/{node}/storage/{storage}/download-url) API documentation under the "Required permissions" section.
*
* ## Example Usage
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as proxmoxve from "@muhlba91/pulumi-proxmoxve";
*
* const release20231228Debian12BookwormQcow2Img = new proxmoxve.download.File("release20231228Debian12BookwormQcow2Img", {
* checksum: "d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b",
* checksumAlgorithm: "sha512",
* contentType: "iso",
* datastoreId: "local",
* fileName: "debian-12-generic-amd64-20231228-1609.img",
* nodeName: "pve",
* url: "https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2",
* });
* const release20231228Debian12BookwormQcow2 = new proxmoxve.download.File("release20231228Debian12BookwormQcow2", {
* checksum: "d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b",
* checksumAlgorithm: "sha512",
* contentType: "import",
* datastoreId: "local",
* fileName: "debian-12-generic-amd64-20231228-1609.qcow2",
* nodeName: "pve",
* url: "https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2",
* });
* const latestDebian12BookwormQcow2Img = new proxmoxve.download.File("latestDebian12BookwormQcow2Img", {
* contentType: "iso",
* datastoreId: "local",
* fileName: "debian-12-generic-amd64.qcow2.img",
* nodeName: "pve",
* url: "https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2",
* });
* const latestDebian12BookwormQcow2 = new proxmoxve.download.File("latestDebian12BookwormQcow2", {
* contentType: "import",
* datastoreId: "local",
* fileName: "debian-12-generic-amd64.qcow2",
* nodeName: "pve",
* url: "https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2",
* });
* const latestUbuntu22JammyQcow2Img = new proxmoxve.download.File("latestUbuntu22JammyQcow2Img", {
* contentType: "iso",
* datastoreId: "local",
* nodeName: "pve",
* url: "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img",
* });
* const latestStaticUbuntu24NobleQcow2Img = new proxmoxve.download.File("latestStaticUbuntu24NobleQcow2Img", {
* contentType: "iso",
* datastoreId: "local",
* nodeName: "pve",
* overwrite: false,
* url: "https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img",
* });
* const release20231211Ubuntu22JammyLxcImg = new proxmoxve.download.File("release20231211Ubuntu22JammyLxcImg", {
* checksum: "c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e",
* checksumAlgorithm: "sha256",
* contentType: "vztmpl",
* datastoreId: "local",
* nodeName: "pve",
* uploadTimeout: 4444,
* url: "https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz",
* });
* const latestUbuntu22JammyLxcImg = new proxmoxve.download.File("latestUbuntu22JammyLxcImg", {
* contentType: "vztmpl",
* datastoreId: "local",
* nodeName: "pve",
* url: "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz",
* });
* ```
*/
class File extends pulumi.CustomResource {
/**
* Get an existing File resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name, id, state, opts) {
return new File(name, state, Object.assign(Object.assign({}, opts), { id: id }));
}
/**
* Returns true if the given object is an instance of File. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj) {
if (obj === undefined || obj === null) {
return false;
}
return obj['__pulumiType'] === File.__pulumiType;
}
constructor(name, argsOrState, opts) {
let resourceInputs = {};
opts = opts || {};
if (opts.id) {
const state = argsOrState;
resourceInputs["checksum"] = state ? state.checksum : undefined;
resourceInputs["checksumAlgorithm"] = state ? state.checksumAlgorithm : undefined;
resourceInputs["contentType"] = state ? state.contentType : undefined;
resourceInputs["datastoreId"] = state ? state.datastoreId : undefined;
resourceInputs["decompressionAlgorithm"] = state ? state.decompressionAlgorithm : undefined;
resourceInputs["fileName"] = state ? state.fileName : undefined;
resourceInputs["nodeName"] = state ? state.nodeName : undefined;
resourceInputs["overwrite"] = state ? state.overwrite : undefined;
resourceInputs["overwriteUnmanaged"] = state ? state.overwriteUnmanaged : undefined;
resourceInputs["size"] = state ? state.size : undefined;
resourceInputs["uploadTimeout"] = state ? state.uploadTimeout : undefined;
resourceInputs["url"] = state ? state.url : undefined;
resourceInputs["verify"] = state ? state.verify : undefined;
}
else {
const args = argsOrState;
if ((!args || args.contentType === undefined) && !opts.urn) {
throw new Error("Missing required property 'contentType'");
}
if ((!args || args.datastoreId === undefined) && !opts.urn) {
throw new Error("Missing required property 'datastoreId'");
}
if ((!args || args.nodeName === undefined) && !opts.urn) {
throw new Error("Missing required property 'nodeName'");
}
if ((!args || args.url === undefined) && !opts.urn) {
throw new Error("Missing required property 'url'");
}
resourceInputs["checksum"] = args ? args.checksum : undefined;
resourceInputs["checksumAlgorithm"] = args ? args.checksumAlgorithm : undefined;
resourceInputs["contentType"] = args ? args.contentType : undefined;
resourceInputs["datastoreId"] = args ? args.datastoreId : undefined;
resourceInputs["decompressionAlgorithm"] = args ? args.decompressionAlgorithm : undefined;
resourceInputs["fileName"] = args ? args.fileName : undefined;
resourceInputs["nodeName"] = args ? args.nodeName : undefined;
resourceInputs["overwrite"] = args ? args.overwrite : undefined;
resourceInputs["overwriteUnmanaged"] = args ? args.overwriteUnmanaged : undefined;
resourceInputs["uploadTimeout"] = args ? args.uploadTimeout : undefined;
resourceInputs["url"] = args ? args.url : undefined;
resourceInputs["verify"] = args ? args.verify : undefined;
resourceInputs["size"] = undefined /*out*/;
}
opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
super(File.__pulumiType, name, resourceInputs, opts);
}
}
exports.File = File;
/** @internal */
File.__pulumiType = 'proxmoxve:Download/file:File';
//# sourceMappingURL=file.js.map