[pve-devel] [PATCH cluster 1/1] add Cluster: node_address and node_address_to_ssh
Dietmar Maurer
dietmar at proxmox.com
Mon May 22 12:04:51 CEST 2017
applied with the following changes:
-sub node_address {
+sub get_ssh_info {
-sub node_address_to_ssh {
+sub ssh_info_to_command {
> On May 22, 2017 at 10:29 AM Wolfgang Bumiller <w.bumiller at proxmox.com> wrote:
>
>
> To get a node's address info optionally inside a specified
> network (eg. migration_network), and a standardized way to
> create an SSH command from this info.
> ---
> data/PVE/Cluster.pm | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 51 insertions(+)
>
> diff --git a/data/PVE/Cluster.pm b/data/PVE/Cluster.pm
> index bb49491..188e4ca 100644
> --- a/data/PVE/Cluster.pm
> +++ b/data/PVE/Cluster.pm
> @@ -1835,4 +1835,55 @@ sub complete_migration_target {
> return $res;
> }
>
> +sub node_address {
> + my ($node, $network_cidr) = @_;
> +
> + my $ip;
> + if (defined($network_cidr)) {
> + # Use mtunnel via to get the remote node's ip inside $network_cidr.
> + # This goes over the regular network (iow. uses node_address() with
> + # $network_cidr undefined.
> + # FIXME: Use the REST API client for this after creating an API entry
> + # for get_migration_ip.
> + my $default_remote = node_address($node, undef);
> + my $default_ssh = node_address_to_ssh($default_remote);
> + my $cmd =[@$default_ssh, 'pvecm', 'mtunnel',
> + '-migration_network', $network_cidr,
> + '-get_migration_ip'
> + ];
> + PVE::Tools::run_command($cmd, outfunc => sub {
> + my ($line) = @_;
> + chomp $line;
> + die "internal error: unexpected output from mtunnel\n"
> + if defined($ip);
> + if ($line =~ /^ip: '(.*)'$/) {
> + $ip = $1;
> + } else {
> + die "internal error: bad output from mtunnel\n"
> + if defined($ip);
> + }
> + });
> + die "failed to get ip for node '$node' in network '$network_cidr'\n"
> + if !defined($ip);
> + } else {
> + $ip = remote_node_ip($node);
> + }
> +
> + return {
> + ip => $ip,
> + name => $node
> + };
> +}
> +
> +sub node_address_to_ssh {
> + my ($info, @extra_options) = @_;
> + return [
> + '/usr/bin/ssh',
> + '-o', 'BatchMode=yes',
> + '-o', 'HostKeyAlias='.$info->{name},
> + @extra_options,
> + "root\@$info->{ip}"
> + ];
> +}
> +
> 1;
> --
> 2.11.0
>
>
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
More information about the pve-devel
mailing list