use strict;
use warnings;
-use JSON;
-use File::HomeDir;
use PVE::Tools;
+use PVE::JSONSchema qw(get_standard_option);
use PVE::CLIHandler;
use base qw(PVE::CLIHandler);
-
-my $load_config = sub {
-
- my $filename = home() . '/.pveclient';
- my $conf_str = PVE::Tools::file_get_contents($filename);
-
- my $filemode = (stat($filename))[2] & 07777;
- if ($filemode != 0600) {
- die sprintf "wrong permissions on '$filename' %04o (expected 0600)\n", $filemode;
- }
-
- return decode_json($conf_str);
-};
+use PVE::APIClient::Config;
my $load_remote_config = sub {
my ($remote) = @_;
- my $conf = $load_config->();
+ my $conf = PVE::APIClient::Config::load_config();
my $remote_conf = $conf->{"remote_$remote"} ||
die "no such remote '$remote'\n";
});
};
-
__PACKAGE__->register_method ({
name => 'enter',
path => 'enter',
parameters => {
additionalProperties => 0,
properties => {
- remote => {
- description => "The name of the remote.",
- type => 'string',
- },
+ remote => get_standard_option('pveclient-remote-name'),
vmid => {
description => "The container ID",
type => 'string',
parameters => {
additionalProperties => 0,
properties => {
- remote => {
- description => "The remote name.",
- type => 'string',
- },
+ remote => get_standard_option('pveclient-remote-name'),
},
},
returns => { type => 'null'},
use strict;
use warnings;
+use PVE::JSONSchema qw(register_standard_option get_standard_option);
+use PVE::APIClient::Config;
+
use PVE::CLIHandler;
use base qw(PVE::CLIHandler);
+my $remote_name_regex = qr(\w+);
+
+my $complete_remote_name = sub {
+
+ my $conf = PVE::APIClient::Config::load_config();
+
+ my $res = [];
+
+ foreach my $k (keys %$conf) {
+ if ($k =~ m/^remote_($remote_name_regex)$/) {
+ push @$res, $1;
+ }
+ }
+
+ return $res;
+};
+
+register_standard_option('pveclient-remote-name', {
+ description => "The name of the remote.",
+ type => 'string',
+ pattern => $remote_name_regex,
+ completion => $complete_remote_name,
+});
+
__PACKAGE__->register_method ({
name => 'add',
path => 'add',
parameters => {
additionalProperties => 0,
properties => {
- name => {
- description => "The name of the remote.",
- type => 'string',
- },
+ name => get_standard_option('pveclient-remote-name', { completion => sub {} }),
host => {
description => "The host, either host, host:port or https://host:port",
type => 'string',
},
username => {
- description => "The username.",
+ description => "The username.",
type => 'string',
optional => 1,
},
parameters => {
additionalProperties => 0,
properties => {
- name => {
- description => "The name of the remote.",
- type => 'string',
- },
+ name => get_standard_option('pveclient-remote-name'),
},
},
returns => { type => 'null'},