#!/usr/bin/perl -w

use strict;
use PVE::SafeSyslog;
use PVE::Tools qw(extract_param);
use PVE::INotify;
use PVE::RPCEnvironment;
use PVE::CLIHandler;
use PVE::JSONSchema qw(get_standard_option);
use PVE::API2::Qemu;

use Data::Dumper; # fixme: remove

use base qw(PVE::CLIHandler);

$ENV{'PATH'} = '/sbin:/bin:/usr/sbin:/usr/bin';

initlog('qmrestore');

die "please run as root\n" if $> != 0;

PVE::INotify::inotify_init();

my $rpcenv = PVE::RPCEnvironment->init('cli');

$rpcenv->init_request();
$rpcenv->set_language($ENV{LANG});
$rpcenv->set_user('root@pam'); 

__PACKAGE__->register_method({
    name => 'qmrestore', 
    path => 'qmrestore', 
    method => 'POST',
    description => "Restore QemuServer vzdump backups.",
    parameters => {
    	additionalProperties => 0,
	properties => {
	    vmid => get_standard_option('pve-vmid'),
	    archive => {
		description => "The backup file. You can pass '-' to read from standard input.",
		type => 'string', 
		maxLength => 255,
	    },
	    storage => get_standard_option('pve-storage-id', {
		description => "Default storage.",
		optional => 1,
	    }),
	    force => {
		optional => 1, 
		type => 'boolean',
		description => "Allow to overwrite existing VM.",
	    },
	    unique => {
		optional => 1, 
		type => 'boolean',
		description => "Assign a unique random ethernet address.",
	    },
	    pool => { 
		optional => 1,
		type => 'string', format => 'pve-poolid',
		description => "Add the VM to the specified pool.",
	    },
	},
    },
    returns => { 
	type => 'string',
    },
    code => sub {
	my ($param) = @_;

	$param->{node} = PVE::INotify::nodename();

	return PVE::API2::Qemu->create_vm($param);
    }});    

my $cmddef = [ __PACKAGE__, 'qmrestore', ['archive', 'vmid'], undef, 
	       sub {
		   my $upid = shift;
		   my $status = PVE::Tools::upid_read_status($upid);
		   exit($status eq 'OK' ? 0 : -1);
	       }];

push @ARGV, 'help' if !scalar(@ARGV);

PVE::CLIHandler::handle_simple_cmd($cmddef, \@ARGV, undef, $0);

exit 0;

__END__

=head1 NAME

qmrestore - restore QemuServer vzdump backups

=head1 SYNOPSIS

=include synopsis

=head1 DESCRIPTION

Restore the QemuServer vzdump backup C<archive> to virtual machine
C<vmid>. Volumes are allocated on the original storage if there is no
C<storage> specified.

=head1 SEE ALSO

vzdump(1) vzrestore(1)

=include pve_copyright
