Create
Creates an image in the specified folder.
You can create an image from a disk, snapshot, other image or URI. Method starts an asynchronous operation that can be cancelled while it is in progress.
- TypeScript
- Python
import {
cloudApi,
decodeMessage,
serviceClients,
Session,
waitForOperation,
} from "@yandex-cloud/nodejs-sdk";
const CreateImageRequest = cloudApi.compute.image_service.CreateImageRequest;
const Image = cloudApi.compute.image.Image;
const Os_Type = cloudApi.compute.image.Os_Type;
const PCITopology = cloudApi.compute.hardware_generation.PCITopology;
(async () => {
const authToken = process.env["YC_OAUTH_TOKEN"];
const session = new Session({ oauthToken: authToken });
const client = session.client(serviceClients.ImageServiceClient);
const operation = await client.create(
CreateImageRequest.fromPartial({
folderId: "folderId",
// name: "name",
// description: "description",
// labels: {"key": "labels"},
// family: "family",
// minDiskSize: 0,
// productIds: ["productIds"],
// imageId: "imageId",
// diskId: "diskId",
// snapshotId: "snapshotId",
// uri: "uri",
// os: {
// type: Os_Type.LINUX
// },
// pooled: true,
// hardwareGeneration: {
// legacyFeatures: {
// pciTopology: PCITopology.PCI_TOPOLOGY_V1
// },
// generation2Features: {
// }
// }
})
);
const finishedOp = await waitForOperation(operation, session);
if (finishedOp.response) {
const result = decodeMessage<typeof Image>(finishedOp.response);
console.log(result);
}
})();
import os
import grpc
import yandexcloud
from yandex.cloud.compute.v1.image_service_pb2 import CreateImageMetadata
from yandex.cloud.compute.v1.image_service_pb2 import CreateImageRequest
from yandex.cloud.compute.v1.hardware_generation_pb2 import Generation2HardwareFeatures
from yandex.cloud.compute.v1.hardware_generation_pb2 import HardwareGeneration
from yandex.cloud.compute.v1.image_pb2 import Image
from yandex.cloud.compute.v1.image_service_pb2_grpc import ImageServiceStub
from yandex.cloud.compute.v1.hardware_generation_pb2 import LegacyHardwareFeatures
from yandex.cloud.compute.v1.image_pb2 import Os
from yandex.cloud.compute.v1.hardware_generation_pb2 import PCITopology
token = os.getenv("YC_OAUTH_TOKEN")
sdk = yandexcloud.SDK(token=token)
service = sdk.client(ImageServiceStub)
operation = service.Create(
CreateImageRequest(
folder_id="folderId",
# name = "name",
# description = "description",
# labels = {"key": "labels"},
# family = "family",
# min_disk_size = 0,
# product_ids = ["productIds"],
# image_id = "imageId",
# disk_id = "diskId",
# snapshot_id = "snapshotId",
# uri = "uri",
# os = Os(
# type = Os.Type.LINUX
# ),
# pooled = true,
# hardware_generation = HardwareGeneration(
# legacy_features = LegacyHardwareFeatures(
# pci_topology = PCITopology.PCI_TOPOLOGY_V1
# ),
# generation_2_features = Generation2HardwareFeatures(
# )
# )
)
)
operation_result = sdk.wait_operation_and_get_result(
operation,
response_type=Image,
meta_type=CreateImageMetadata,
)
print(operation_result)
CreateImageRequest
folderId
: string
ID of the folder to create an image in. To get the folder ID, use a yandex.cloud.resourcemanager.v1.FolderService.List request.
name
: string
Name of the image.
description
: string
Description of the image.
labels
: string
Resource labels as key:value
pairs.
family
: string
The name of the image family to which this image belongs. For more information, see Image family.
To get an information about the most recent image from a family, use a ImageService.GetLatestByFamily request.
minDiskSize
: int64
Minimum size of the disk that will be created from this image. Specified in bytes. Should be more than the volume of source data.
productIds
: string
License IDs that indicate which licenses are attached to this resource. License IDs are used to calculate additional charges for the use of the virtual machine.
The correct license ID is generated by the platform. IDs are inherited by new resources created from this resource.
If you know the license IDs, specify them when you create the image. For example, if you create a disk image using a third-party utility and load it into Object Storage, the license IDs will be lost. You can specify them in this request.
One of source
imageId
: stringID of the source image to create the new image from.
diskId
: stringID of the disk to create the image from.
snapshotId
: stringID of the snapshot to create the image from.
uri
: stringURI of the source image to create the new image from.
Currently only supports links to images that are stored in Object Storage. Currently only supports Qcow2, VMDK, and RAW formats.
os
: Os
Operating system that is contained in the image.
If not specified and you used the image_id
or disk_id
field to set the source, then the value can be inherited from the source resource.
pooled
: bool
When true, an image pool will be created for fast creation disks from the image.
hardwareGeneration
: HardwareGeneration
Specify the overrides to hardware_generation of a source disk, image or snapshot, or to the default values if the source does not define it.
Os
Type
TYPE_UNSPECIFIED
LINUX
Linux operating system.
WINDOWS
Windows operating system.
type
: Type
Operating system type. The default is LINUX
.
This field is used to correctly emulate a vCPU and calculate the cost of using an instance.
HardwareGeneration
A set of features, specific to a particular Compute hardware generation. They are not necessary supported by every host OS or distro, thus they are fixed to an image and are applied to all instances created with it as their boot disk image. These features significantly determine how the instance is created, thus cannot be changed after the fact.
One of features
legacyFeatures
: LegacyHardwareFeatures
generation2Features
: Generation2HardwareFeatures
LegacyHardwareFeatures
A first hardware generation, by default compatible with all legacy images. Allows switching to PCI_TOPOLOGY_V2 and back.
pciTopology
: PCITopology
Generation2HardwareFeatures
A second hardware generation, which by default assumes PCI_TOPOLOGY_V2 and UEFI boot (with UEFI related features).
Operation
An Operation resource. For more information, see Operation.
id
: string
ID of the operation.
description
: string
Description of the operation. 0-256 characters long.
createdAt
: google.protobuf.Timestamp
Creation timestamp.
createdBy
: string
ID of the user or service account who initiated the operation.
modifiedAt
: google.protobuf.Timestamp
The time when the Operation resource was last modified.
done
: bool
If the value is false
, it means the operation is still in progress.
If true
, the operation is completed, and either error
or response
is available.
metadata
: google.protobuf.Any
Service-specific metadata associated with the operation. It typically contains the ID of the target resource that the operation is performed on. Any method that returns a long-running operation should document the metadata type, if any.
One of result
The operation result.
If done == false
and there was no failure detected, neither error
nor response
is set.
If done == false
and there was a failure detected, error
is set.
If done == true
, exactly one of error
or response
is set.
error
: google.rpc.StatusThe error result of the operation in case of failure or cancellation.
response
: google.protobuf.AnyThe normal response of the operation in case of success.
If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is the standard Create/Update, the response should be the target resource of the operation. Any method that returns a long-running operation should document the response type, if any.