api: add import/export format querying
This commit is contained in:
committed by
Fabian Grünbichler
parent
ac191ec740
commit
d390328bfd
@ -1485,6 +1485,37 @@ sub volume_import {
|
|||||||
$base_snapshot, $with_snapshots);
|
$base_snapshot, $with_snapshots);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub volume_export_formats {
|
||||||
|
my ($cfg, $volid, $snapshot, $base_snapshot, $with_snapshots) = @_;
|
||||||
|
|
||||||
|
my ($storeid, $volname) = parse_volume_id($volid, 1);
|
||||||
|
return if !$storeid;
|
||||||
|
my $scfg = storage_config($cfg, $storeid);
|
||||||
|
my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
|
||||||
|
return $plugin->volume_export_formats($scfg, $storeid, $volname,
|
||||||
|
$base_snapshot, $with_snapshots);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub volume_import_formats {
|
||||||
|
my ($cfg, $volid, $base_snapshot, $with_snapshots) = @_;
|
||||||
|
|
||||||
|
my ($storeid, $volname) = parse_volume_id($volid, 1);
|
||||||
|
return if !$storeid;
|
||||||
|
my $scfg = storage_config($cfg, $storeid);
|
||||||
|
my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
|
||||||
|
return $plugin->volume_import_formats($scfg, $storeid, $volname,
|
||||||
|
$base_snapshot, $with_snapshots);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub volume_transfer_formats {
|
||||||
|
my ($cfg, $src_volid, $dst_volid, $snapshot, $base_snapshot, $with_snapshots) = @_;
|
||||||
|
my @export_formats = volume_export_formats($cfg, $src_volid, $snapshot, $base_snapshot, $with_snapshots);
|
||||||
|
my @import_formats = volume_import_formats($cfg, $dst_volid, $base_snapshot, $with_snapshots);
|
||||||
|
my %import_hash = map { $_ => 1 } @import_formats;
|
||||||
|
my @common = grep { $import_hash{$_} } @export_formats;
|
||||||
|
return @common;
|
||||||
|
}
|
||||||
|
|
||||||
# bash completion helper
|
# bash completion helper
|
||||||
|
|
||||||
sub complete_storage {
|
sub complete_storage {
|
||||||
|
|||||||
@ -894,10 +894,20 @@ sub volume_export {
|
|||||||
die "volume export not implemented for $class";
|
die "volume export not implemented for $class";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub volume_export_formats {
|
||||||
|
my ($class, $scfg, $storeid, $volname, $snapshot, $base_snapshot, $with_snapshots) = @_;
|
||||||
|
die "volume export formats not implemented for $class";
|
||||||
|
}
|
||||||
|
|
||||||
# Import data from a stream, creating a new or replacing or adding to an existing volume.
|
# Import data from a stream, creating a new or replacing or adding to an existing volume.
|
||||||
sub volume_import {
|
sub volume_import {
|
||||||
my ($class, $scfg, $storeid, $fh, $volname, $format, $base_snapshot, $with_snapshots) = @_;
|
my ($class, $scfg, $storeid, $fh, $volname, $format, $base_snapshot, $with_snapshots) = @_;
|
||||||
die "volume import not implemented for $class";
|
die "volume import not implemented for $class";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub volume_import_formats {
|
||||||
|
my ($class, $scfg, $storeid, $volname, $base_snapshot, $with_snapshots) = @_;
|
||||||
|
die "volume import formats not implemented for $class";
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
@ -681,6 +681,16 @@ sub volume_export {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub volume_export_formats {
|
||||||
|
my ($class, $scfg, $storeid, $volname, $snapshot, $base_snapshot, $with_snapshots) = @_;
|
||||||
|
|
||||||
|
my @formats = ('zfs');
|
||||||
|
# TODOs:
|
||||||
|
# push @formats, 'fies' if $volname !~ /^(?:basevol|subvol)-/;
|
||||||
|
# push @formats, 'raw' if !$base_snapshot && !$with_snapshots;
|
||||||
|
return @formats;
|
||||||
|
}
|
||||||
|
|
||||||
sub volume_import {
|
sub volume_import {
|
||||||
my ($class, $scfg, $storeid, $fh, $volname, $format, $base_snapshot, $with_snapshots) = @_;
|
my ($class, $scfg, $storeid, $fh, $volname, $format, $base_snapshot, $with_snapshots) = @_;
|
||||||
|
|
||||||
@ -714,4 +724,10 @@ sub volume_import {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub volume_import_formats {
|
||||||
|
my ($class, $scfg, $storeid, $volname, $base_snapshot, $with_snapshots) = @_;
|
||||||
|
|
||||||
|
return $class->volume_export_formats($scfg, $storeid, $volname, undef, $base_snapshot, $with_snapshots);
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|||||||
Reference in New Issue
Block a user