@phala/cloud
Version:
TypeScript SDK for Phala Cloud API
231 lines • 9.59 kB
TypeScript
import { z } from "zod";
import { type Client, type SafeResult } from "../client";
import { ActionParameters, ActionReturnType } from "../types/common";
/**
* Provision a CVM (Confidential Virtual Machine)
*
* This action provisions a new CVM on a specified node, returning the app_id, encryption public key, and other metadata required for secure deployment.
*
* @example
* ```typescript
* import { createClient, getAvailableNodes, provisionCvm } from '@phala/cloud'
*
* const client = createClient();
* const nodes = await getAvailableNodes(client);
* const node = nodes.nodes[0];
*
* const docker_compose = `
*version: '3'
*services:
* demo:
* image: leechael/phala-cloud-bun-starter:latest
* container_name: demo
* ports:
* - "3000:3000"
* volumes:
* - /var/run/tappd.sock:/var/run/tappd.sock
*`;
*
* const app_compose = {
* name: 'my-app',
* node_id: node.node_id,
* image: node.images[0].name,
* vcpu: 1,
* memory: 1024,
* disk_size: 10,
* compose_file: {
* docker_compose_file: docker_compose,
* name: 'my-app',
* },
* };
*
* const result = await provisionCvm(client, app_compose);
* console.log(result.app_id);
* ```
*
* ## Safe Version
*
* Use `safeProvisionCvm` for error handling without exceptions:
*
* ```typescript
* const result = await safeProvisionCvm(client, app_compose);
* if (result.success) {
* console.log(result.data.app_id);
* } else {
* console.error('Failed to provision CVM:', result.error.message);
* }
* ```
*/
export declare const ProvisionCvmSchema: z.ZodObject<{
app_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
app_env_encrypt_pubkey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
compose_hash: z.ZodString;
fmspc: z.ZodOptional<z.ZodNullable<z.ZodString>>;
device_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
os_image_hash: z.ZodOptional<z.ZodNullable<z.ZodString>>;
node_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
kms_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
app_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
app_env_encrypt_pubkey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
compose_hash: z.ZodString;
fmspc: z.ZodOptional<z.ZodNullable<z.ZodString>>;
device_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
os_image_hash: z.ZodOptional<z.ZodNullable<z.ZodString>>;
node_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
kms_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
app_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
app_env_encrypt_pubkey: z.ZodOptional<z.ZodNullable<z.ZodString>>;
compose_hash: z.ZodString;
fmspc: z.ZodOptional<z.ZodNullable<z.ZodString>>;
device_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
os_image_hash: z.ZodOptional<z.ZodNullable<z.ZodString>>;
node_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
kms_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
}, z.ZodTypeAny, "passthrough">>;
export type ProvisionCvm = z.infer<typeof ProvisionCvmSchema>;
export declare const ProvisionCvmRequestSchema: z.ZodObject<{
node_id: z.ZodOptional<z.ZodNumber>;
teepod_id: z.ZodOptional<z.ZodNumber>;
name: z.ZodString;
image: z.ZodString;
vcpu: z.ZodNumber;
memory: z.ZodNumber;
disk_size: z.ZodNumber;
compose_file: z.ZodObject<{
allowed_envs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
pre_launch_script: z.ZodOptional<z.ZodString>;
docker_compose_file: z.ZodOptional<z.ZodString>;
name: z.ZodOptional<z.ZodString>;
kms_enabled: z.ZodOptional<z.ZodBoolean>;
public_logs: z.ZodOptional<z.ZodBoolean>;
public_sysinfo: z.ZodOptional<z.ZodBoolean>;
gateway_enabled: z.ZodOptional<z.ZodBoolean>;
tproxy_enabled: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
name?: string | undefined;
public_sysinfo?: boolean | undefined;
public_logs?: boolean | undefined;
docker_compose_file?: string | undefined;
pre_launch_script?: string | undefined;
allowed_envs?: string[] | undefined;
kms_enabled?: boolean | undefined;
gateway_enabled?: boolean | undefined;
tproxy_enabled?: boolean | undefined;
}, {
name?: string | undefined;
public_sysinfo?: boolean | undefined;
public_logs?: boolean | undefined;
docker_compose_file?: string | undefined;
pre_launch_script?: string | undefined;
allowed_envs?: string[] | undefined;
kms_enabled?: boolean | undefined;
gateway_enabled?: boolean | undefined;
tproxy_enabled?: boolean | undefined;
}>;
listed: z.ZodOptional<z.ZodBoolean>;
instance_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
kms_id: z.ZodOptional<z.ZodString>;
env_keys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
node_id: z.ZodOptional<z.ZodNumber>;
teepod_id: z.ZodOptional<z.ZodNumber>;
name: z.ZodString;
image: z.ZodString;
vcpu: z.ZodNumber;
memory: z.ZodNumber;
disk_size: z.ZodNumber;
compose_file: z.ZodObject<{
allowed_envs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
pre_launch_script: z.ZodOptional<z.ZodString>;
docker_compose_file: z.ZodOptional<z.ZodString>;
name: z.ZodOptional<z.ZodString>;
kms_enabled: z.ZodOptional<z.ZodBoolean>;
public_logs: z.ZodOptional<z.ZodBoolean>;
public_sysinfo: z.ZodOptional<z.ZodBoolean>;
gateway_enabled: z.ZodOptional<z.ZodBoolean>;
tproxy_enabled: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
name?: string | undefined;
public_sysinfo?: boolean | undefined;
public_logs?: boolean | undefined;
docker_compose_file?: string | undefined;
pre_launch_script?: string | undefined;
allowed_envs?: string[] | undefined;
kms_enabled?: boolean | undefined;
gateway_enabled?: boolean | undefined;
tproxy_enabled?: boolean | undefined;
}, {
name?: string | undefined;
public_sysinfo?: boolean | undefined;
public_logs?: boolean | undefined;
docker_compose_file?: string | undefined;
pre_launch_script?: string | undefined;
allowed_envs?: string[] | undefined;
kms_enabled?: boolean | undefined;
gateway_enabled?: boolean | undefined;
tproxy_enabled?: boolean | undefined;
}>;
listed: z.ZodOptional<z.ZodBoolean>;
instance_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
kms_id: z.ZodOptional<z.ZodString>;
env_keys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
node_id: z.ZodOptional<z.ZodNumber>;
teepod_id: z.ZodOptional<z.ZodNumber>;
name: z.ZodString;
image: z.ZodString;
vcpu: z.ZodNumber;
memory: z.ZodNumber;
disk_size: z.ZodNumber;
compose_file: z.ZodObject<{
allowed_envs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
pre_launch_script: z.ZodOptional<z.ZodString>;
docker_compose_file: z.ZodOptional<z.ZodString>;
name: z.ZodOptional<z.ZodString>;
kms_enabled: z.ZodOptional<z.ZodBoolean>;
public_logs: z.ZodOptional<z.ZodBoolean>;
public_sysinfo: z.ZodOptional<z.ZodBoolean>;
gateway_enabled: z.ZodOptional<z.ZodBoolean>;
tproxy_enabled: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
name?: string | undefined;
public_sysinfo?: boolean | undefined;
public_logs?: boolean | undefined;
docker_compose_file?: string | undefined;
pre_launch_script?: string | undefined;
allowed_envs?: string[] | undefined;
kms_enabled?: boolean | undefined;
gateway_enabled?: boolean | undefined;
tproxy_enabled?: boolean | undefined;
}, {
name?: string | undefined;
public_sysinfo?: boolean | undefined;
public_logs?: boolean | undefined;
docker_compose_file?: string | undefined;
pre_launch_script?: string | undefined;
allowed_envs?: string[] | undefined;
kms_enabled?: boolean | undefined;
gateway_enabled?: boolean | undefined;
tproxy_enabled?: boolean | undefined;
}>;
listed: z.ZodOptional<z.ZodBoolean>;
instance_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
kms_id: z.ZodOptional<z.ZodString>;
env_keys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, z.ZodTypeAny, "passthrough">>;
export type ProvisionCvmRequest = z.infer<typeof ProvisionCvmRequestSchema> & {
node_id?: number;
teepod_id?: number;
compose_file?: {
gateway_enabled?: boolean;
tproxy_enabled?: boolean;
[key: string]: unknown;
};
};
export type ProvisionCvmParameters<T = undefined> = ActionParameters<T>;
export type ProvisionCvmReturnType<T = undefined> = ActionReturnType<ProvisionCvm, T>;
export declare function provisionCvm<T extends z.ZodSchema | false | undefined = undefined>(client: Client, appCompose: ProvisionCvmRequest, parameters?: ProvisionCvmParameters<T>): Promise<ProvisionCvmReturnType<T>>;
export declare function safeProvisionCvm<T extends z.ZodSchema | false | undefined = undefined>(client: Client, appCompose: ProvisionCvmRequest, parameters?: ProvisionCvmParameters<T>): Promise<SafeResult<ProvisionCvmReturnType<T>>>;
//# sourceMappingURL=provision_cvm.d.ts.map