+sub lookup_remote {
+ my ($self, $name) = @_;
+
+ die "Unknown remote \"$name\" given"
+ if (!exists($self->{data}->{remotes}->{$name}));
+
+ return $self->{data}->{remotes}->{$name};
+}
+
+sub remotes {
+ my ($self) = @_;
+
+ my $res = {};
+
+ # Remove the password from each remote.
+ for my $name ($self->remote_names) {
+ my $cfg = $self->{data}->{remotes}->{$name};
+ $res->{$name} = {
+ host => $cfg->{host},
+ port => $cfg->{port},
+ username => $cfg->{username},
+ fingerprint => $cfg->{fingerprint},
+ };
+ }
+
+ return $res;
+}
+
+sub remove_remote {
+ my ($self, $remote) = @_;
+
+ $self->lookup_remote($remote);
+
+ delete($self->{data}->{remotes}->{$remote});
+
+ $self->save();
+}
+
+sub remote_conn {
+ my ($self, $remote) = @_;
+
+ my $section = $self->lookup_remote($remote);
+ my $conn = PVE::APIClient::LWP->new(
+ username => $section->{username},
+ password => $section->{password},
+ host => $section->{host},
+ port => $section->{port},
+ cached_fingerprints => {
+ $section->{fingerprint} => 1,
+ }
+ );