NAME

IO::K8s::VolumeSnapshot - VolumeSnapshot CRD resource map provider for IO::K8s

VERSION

version 1.108

SYNOPSIS

my $k8s = IO::K8s->new(with => ['IO::K8s::VolumeSnapshot']);

my $vs = $k8s->new_object('VolumeSnapshot',
    metadata => { name => 'my-snapshot', namespace => 'default' },
    spec => { source => { persistentVolumeClaimName => 'my-pvc' } },
);

my $group = $k8s->new_object('VolumeGroupSnapshot',
    metadata => { name => 'database-group', namespace => 'default' },
    spec => {
        volumeGroupSnapshotClassName => 'csi-group-snapshot-class',
        source => { selector => { matchLabels => { app => 'database' } } },
    },
);

print $group->to_yaml;

DESCRIPTION

Resource-map provider for the VolumeSnapshot and VolumeGroupSnapshot Custom Resource Definitions from the external-snapshotter project, pinned to external-snapshotter v8.6.0. Its crd_sources lists the six raw CRD manifests for that release.

The provider has 12 raw resource-map entries. The three snapshot Kinds, VolumeSnapshot, VolumeSnapshotClass, and VolumeSnapshotContent, are modeled at snapshot.storage.k8s.io/v1. VolumeSnapshot is namespace-scoped; VolumeSnapshotClass and VolumeSnapshotContent are cluster-scoped. The deprecated, non-served snapshot.storage.k8s.io/v1beta1 track that upstream ships alongside v1 is not modeled. Both snapshot-class Kinds keep their upstream shape: driver, deletionPolicy, and parameters are direct fields rather than a spec/status wrapper.

The provider additionally models the three group-snapshot Kinds, VolumeGroupSnapshot, VolumeGroupSnapshotClass, and VolumeGroupSnapshotContent, in all three served groupsnapshot.storage.k8s.io tracks: v1, v1beta1, and v1beta2. The bare group-snapshot names select their v1beta2 classes because v1beta2 is the sole storage version. Use an explicit GVK such as groupsnapshot.storage.k8s.io/v1/VolumeGroupSnapshot or groupsnapshot.storage.k8s.io/v1beta1/VolumeGroupSnapshot to select either of the other served tracks.

The provider models 33 group-snapshot types and 10 snapshot types. VolumeGroupSnapshot is namespace-scoped; VolumeGroupSnapshotClass and VolumeGroupSnapshotContent are cluster-scoped. The group-snapshot source reuses the stock IO::K8s::Apimachinery::Pkg::Apis::Meta::V1::LabelSelector, and the content reference reuses IO::K8s::Api::Core::V1::ObjectReference.

v1 and v1beta2 use their VolumeSnapshotInfo type for volumeSnapshotInfoList; v1beta1 uses VolumeSnapshotHandlePair for volumeSnapshotHandlePairList. All tracks reuse IO::K8s::VolumeSnapshot::V1::VolumeSnapshotError. The IO::K8s::CRD::Emitter-rendered maint/crd-render overlay does not yet support this shared error leaf as a cross-version alias.

Not loaded by default. Opt in through the with constructor parameter of IO::K8s or by calling $k8s->add('IO::K8s::VolumeSnapshot') at runtime.

upstream_version

Returns the external-snapshotter release whose CRDs this provider models.

crd_sources

Returns the six raw CRD manifest locations pinned to upstream_version.

resource_map

Returns the twelve short-name and fully qualified group-version-kind routes provided by this provider.

SEE ALSO

IO::K8s

VolumeSnapshot documentation

external-snapshotter CRDs

SUPPORT

Issues

Please report bugs and feature requests on GitHub at https://github.com/pplu/io-k8s-p5/issues.

CONTRIBUTING

Contributions are welcome! Please fork the repository and submit a pull request.

AUTHORS

  • Torsten Raudssus <getty@cpan.org>

  • Jose Luis Martinez Torres <jlmartin@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2018-2026 by Jose Luis Martinez Torres <jlmartin@cpan.org>.

This is free software, licensed under:

The Apache License, Version 2.0, January 2004