]> git.proxmox.com Git - pve-zsync.git/blobdiff - pve-zsync
followup: pass properties without value
[pve-zsync.git] / pve-zsync
index b9a6995efdf76ecc556a0f9a2ef5836798054a9b..5b1f12c57e6c4f0be6c29d6da85c148295ed4982 100755 (executable)
--- a/pve-zsync
+++ b/pve-zsync
@@ -212,6 +212,7 @@ sub parse_argv {
        method => undef,
        source_user => undef,
        dest_user => undef,
+       properties => undef,
     };
 
     my ($ret) = GetOptionsFromArray(
@@ -225,7 +226,8 @@ sub parse_argv {
        'skip' => \$param->{skip},
        'method=s' => \$param->{method},
        'source-user=s' => \$param->{source_user},
-       'dest-user=s' => \$param->{dest_user}
+       'dest-user=s' => \$param->{dest_user},
+       'properties' => \$param->{properties},
     );
 
     die "can't parse options\n" if $ret == 0;
@@ -294,6 +296,7 @@ sub param_to_job {
     $job->{source} = $param->{source};
     $job->{source_user} = $param->{source_user};
     $job->{dest_user} = $param->{dest_user};
+    $job->{properties} = !!$param->{properties};
 
     return $job;
 }
@@ -439,6 +442,7 @@ sub format_job {
     $text .= " --verbose" if $job->{verbose};
     $text .= " --source-user $job->{source_user}";
     $text .= " --dest-user $job->{dest_user}";
+    $text .= " --properties" if $job->{properties};
     $text .= "\n";
 
     return $text;
@@ -468,19 +472,18 @@ sub list {
 sub vm_exists {
     my ($target, $user) = @_;
 
-    my @cmd = ('ssh', "$user\@$target->{ip}", '--') if $target->{ip};
-
-    my $res = undef;
-
     return undef if !defined($target->{vmid});
 
-    eval { $res = run_cmd([@cmd, 'ls',  "$QEMU_CONF/$target->{vmid}.conf"]) };
-
-    return "qemu" if $res;
+    my $conf_fn = "$target->{vmid}.conf";
 
-    eval { $res = run_cmd([@cmd, 'ls',  "$LXC_CONF/$target->{vmid}.conf"]) };
-
-    return "lxc" if $res;
+    if ($target->{ip}) {
+       my @cmd = ('ssh', "$user\@$target->{ip}", '--', '/bin/ls');
+       return "qemu" if eval { run_cmd([@cmd, "$QEMU_CONF/$conf_fn"]) };
+       return "lxc" if  eval { run_cmd([@cmd, "$LXC_CONF/$conf_fn"]) };
+    } else {
+       return "qemu" if -f "$QEMU_CONF/$conf_fn";
+       return "lxc" if -f "$LXC_CONF/$conf_fn";
+    }
 
     return undef;
 }
@@ -574,7 +577,7 @@ sub sync {
        $job = get_job($param);
     };
 
-    if ($job && $job->{state} eq "syncing") {
+    if ($job && defined($job->{state}) && $job->{state} eq "syncing") {
        die "Job --source $param->{source} --name $param->{name} is syncing at the moment";
     }
 
@@ -920,6 +923,7 @@ sub send_image {
 
     push @$cmd, 'ssh', '-o', 'BatchMode=yes', "$param->{source_user}\@$source->{ip}", '--' if $source->{ip};
     push @$cmd, 'zfs', 'send';
+    push @$cmd, '-p', if $param->{properties};
     push @$cmd, '-v' if $param->{verbose};
 
     if($source->{last_snap} && snapshot_exist($source , $dest, $param->{method}, $param->{dest_user})) {
@@ -1080,6 +1084,10 @@ $PROGNAME create -dest <string> -source <string> [OPTIONS]
         -source-user    string
 
                name of the user on the source target, root by default
+
+       -properties     boolean
+
+               Include the dataset's properties in the stream.
     },
     sync => qq{
 $PROGNAME sync -dest <string> -source <string> [OPTIONS]\n
@@ -1118,6 +1126,10 @@ $PROGNAME sync -dest <string> -source <string> [OPTIONS]\n
        -verbose   boolean
 
                print out the sync progress.
+
+       -properties     boolean
+
+               Include the dataset's properties in the stream.
     },
     list => qq{
 $PROGNAME list