mirror of
https://git.proxmox.com/git/pve-client
synced 2025-10-04 07:43:19 +00:00
Implement remote add
Signed-off-by: René Jochum <r.jochum@proxmox.com>
This commit is contained in:
parent
06039c7f9b
commit
2d0ebe218c
@ -8,23 +8,28 @@ use PVE::APIClient::Config;
|
||||
|
||||
use PVE::CLIHandler;
|
||||
|
||||
use PVE::APIClient::LWP;
|
||||
use PVE::PTY ();
|
||||
|
||||
use base qw(PVE::CLIHandler);
|
||||
|
||||
my $complete_remote_name = sub {
|
||||
|
||||
my $config = PVE::APIClient::Config->new();
|
||||
my $known_remotes = $config->remotes;
|
||||
|
||||
return [keys %{$known_remotes}];
|
||||
return $config->remote_names;
|
||||
};
|
||||
|
||||
register_standard_option('pveclient-remote-name', {
|
||||
description => "The name of the remote.",
|
||||
type => 'string',
|
||||
pattern => qr([\w\d\.\-\_]+),
|
||||
pattern => qr(\w+),
|
||||
completion => $complete_remote_name,
|
||||
});
|
||||
|
||||
sub read_password {
|
||||
return PVE::PTY::read_password("Remote password: ")
|
||||
}
|
||||
|
||||
__PACKAGE__->register_method ({
|
||||
name => 'add',
|
||||
path => 'add',
|
||||
@ -35,22 +40,56 @@ __PACKAGE__->register_method ({
|
||||
properties => {
|
||||
name => get_standard_option('pveclient-remote-name', { completion => sub {} }),
|
||||
host => {
|
||||
description => "The host, either host, host:port or https://host:port",
|
||||
description => "The host.",
|
||||
type => 'string',
|
||||
format => 'address',
|
||||
},
|
||||
username => {
|
||||
description => "The username.",
|
||||
type => 'string',
|
||||
optional => 1,
|
||||
},
|
||||
password => {
|
||||
description => "The users password",
|
||||
type => 'string',
|
||||
},
|
||||
port => {
|
||||
description => "The port",
|
||||
type => 'integer',
|
||||
optional => 1,
|
||||
default => 8006,
|
||||
}
|
||||
},
|
||||
},
|
||||
returns => { type => 'null'},
|
||||
code => sub {
|
||||
my ($param) = @_;
|
||||
|
||||
die "implement me";
|
||||
my $config = PVE::APIClient::Config->new();
|
||||
my $known_remotes = $config->remotes;
|
||||
|
||||
if (exists($known_remotes->{$param->{name}})) {
|
||||
die "Remote \"$param->{name}\" exists, remove it first\n";
|
||||
}
|
||||
|
||||
my $last_fp = 0;
|
||||
my $api = PVE::APIClient::LWP->new(
|
||||
username => $param->{username},
|
||||
password => $param->{password},
|
||||
host => $param->{host},
|
||||
port => $param->{port} // 8006,
|
||||
manual_verification => 1,
|
||||
register_fingerprint_cb => sub {
|
||||
my $fp = shift @_;
|
||||
$last_fp = $fp;
|
||||
},
|
||||
);
|
||||
$api->login();
|
||||
|
||||
$config->add_remote($param->{name}, $param->{host}, $param->{port} // 8006,
|
||||
$last_fp, $param->{username}, $param->{password});
|
||||
$config->save;
|
||||
|
||||
return undef;
|
||||
}});
|
||||
|
||||
__PACKAGE__->register_method ({
|
||||
@ -73,7 +112,7 @@ __PACKAGE__->register_method ({
|
||||
}});
|
||||
|
||||
our $cmddef = {
|
||||
add => [ __PACKAGE__, 'add', ['name', 'host']],
|
||||
add => [ __PACKAGE__, 'add', ['name', 'host', 'username']],
|
||||
remove => [ __PACKAGE__, 'remove', ['name']],
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user