Return all ip-addresses of an interface, not only the first one. Change
return schema to resemble the 'agent/network-get-interfaces' qemu call
reponse. This helps us making the AgentIPView more generic and display
the ip on both containers and vms.
Preserve old attributes so that we remain backwards-compatible. These
should be removed in the next version.

Fixes: #5339
Cc: Johannes Draaijer <jcd...@gmail.com>
Signed-off-by: Gabriel Goller <g.gol...@proxmox.com>
---
 src/PVE/API2/LXC.pm | 37 +++++++++++++++++++++++++++++++++++--
 src/PVE/LXC.pm      | 15 +++++++++++++++
 2 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
index 213e518a7b62..57c7b42405dd 100644
--- a/src/PVE/API2/LXC.pm
+++ b/src/PVE/API2/LXC.pm
@@ -2546,20 +2546,53 @@ __PACKAGE__->register_method({
                    description => 'The name of the interface',
                    optional => 0,
                },
+               # TODO: deprecate on next major release
                hwaddr => {
                    type => 'string',
                    description => 'The MAC address of the interface',
                    optional => 0,
                },
+               "hardware-address" => {
+                   type => 'string',
+                   description => 'The MAC address of the interface',
+                   optional => 0,
+               },
+               # TODO: deprecate on next major release
                inet => {
                    type => 'string',
                    description => 'The IPv4 address of the interface',
-                   optional => 1,
+                   optional => 1
                },
+               # TODO: deprecate on next major release
                inet6 => {
                    type => 'string',
                    description => 'The IPv6 address of the interface',
-                   optional => 1,
+                   optional => 1
+               },
+               "ip-addresses" => {
+                   type => 'array',
+                   description => 'The addresses of the interface',
+                   optional => 0,
+                   items => {
+                       type => 'object',
+                       properties => {
+                           prefix => {
+                               type => 'integer',
+                               description => 'IP-Prefix',
+                               optional => 1,
+                           },
+                           "ip-address" => {
+                               type => 'string',
+                               description => 'IP-Address',
+                               optional => 1,
+                           },
+                           "ip-address-type" => {
+                               type => 'string',
+                               description => 'IP-Family',
+                               optional => 1,
+                           },
+                       }
+                   }
                },
            }
        },
diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
index e78e36576fc3..7c71a49f7723 100644
--- a/src/PVE/LXC.pm
+++ b/src/PVE/LXC.pm
@@ -1141,10 +1141,25 @@ sub get_interfaces {
     my $res;
     for my $interface ($config->@*) {
        my $obj = { name => $interface->{ifname} };
+       my $list = [];
        for my $ip ($interface->{addr_info}->@*) {
+           # TODO: remove on next major release
            $obj->{$ip->{family}} = $ip->{local} . "/" . $ip->{prefixlen};
+
+           push(
+               @$list, {
+                   'ip-address-type' => $ip->{family},
+                   'ip-address'      => $ip->{local},
+                   'prefix'          => $ip->{prefixlen}
+               }
+           );
        }
+       $obj->{'ip-addresses'} = $list;
+       $obj->{'hardware-address'} = $interface->{address};
+
+       # TODO: remove on next major release
        $obj->{hwaddr} = $interface->{address};
+
        push @$res, $obj
     }
 
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to