public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: "proxmox" <proxmox@giftfish.de>
To: "Proxmox VE development discussion" <pve-devel@lists.proxmox.com>
Subject: Re: [pve-devel] [PATCH] api: cloud-init support for mtu and userdata
Date: Fri, 4 Sep 2020 14:58:32 +0000	[thread overview]
Message-ID: <kcRK.AAAAAAJZh+74Ak+ZgfTuugd5TBgBAAAABQAAALNoSfGiMKlPo0F0bKmtM8AAAAAA.AJwb28uC1gE=@mx.giftfish.de> (raw)

No actually this was a misstake.
I tought my old patch was stuck in approval and got deleted.


These patches can be ignored.



-----Ursprüngliche Nachricht-----
Von: Mira Limbeck <m.limbeck@proxmox.com>
Gesendet: Freitag 28 August 2020 17:46
An: pve-devel@lists.proxmox.com
Betreff: Re: [pve-devel] [PATCH] api: cloud-init support for mtu and userdata


Thank you for the patch.

Seems to be the exactly the same as the one you sent some time ago: 
https://lists.proxmox.com/pipermail/pve-devel/2020-July/044241.html

Was this intentional?


On 8/11/20 9:02 PM, Marius Schellenberger wrote:
> Extended the PVE API to configure cloud-init userdata and network
> interface MTU.
>
> Signed-off-by: Marius Schellenberger <proxmox@giftfish.de>
> ---
>   PVE/API2/Qemu.pm            |  1 +
>   PVE/QemuServer.pm           | 18 +++++++++++++++++-
>   PVE/QemuServer/Cloudinit.pm | 31 +++++++++++++++++++++++++++++--
>   3 files changed, 47 insertions(+), 3 deletions(-)
>
> diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
> index 8da616a..5d149a5 100644
> --- a/PVE/API2/Qemu.pm
> +++ b/PVE/API2/Qemu.pm
> @@ -324,6 +324,7 @@ my $cloudinitoptions = {
>       cipassword => 1,
>       citype => 1,
>       ciuser => 1,
> +    ciuserdata => 1,
>       nameserver => 1,
>       searchdomain => 1,
>       sshkeys => 1,
> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
> index a9c0dac..974a070 100644
> --- a/PVE/QemuServer.pm
> +++ b/PVE/QemuServer.pm
> @@ -727,6 +727,12 @@ my $confdesc_cloudinit = {
>          description => 'cloud-init: Specify custom files to replace the automatically generated ones at start.',
>           format => 'pve-qm-cicustom',
>       },
> +    ciuserdata => {
> +        optional => 1,
> +        type => 'string',
> +        format => 'urlencoded',
> +        description => 'cloud-init: Specify custom user-data as urlencoded base64 string to replace the automatically generated one at start. When set, the following options have no effect: `ciuser`, `cipassword`, `sshkeys`',
> +    },
>       searchdomain => {
>        optional => 1,
>     type => 'string',
> @@ -932,6 +938,12 @@ my $ipconfig_fmt = {
>      optional => 1,
>     requires => 'ip6',
>       },
> +    mtu => {
> + type => 'string',
> +        format_description => 'MTU',
> +     description => 'MTU value for interface.',
> +       optional => 1,
> +    },
>   };
>   PVE::JSONSchema::register_format('pve-qm-ipconfig', $ipconfig_fmt);
>   my $ipconfigdesc = {
> @@ -1701,7 +1713,7 @@ sub parse_net {
>       return $res;
>   }
>   
> -# ipconfigX ip=cidr,gw=ip,ip6=cidr,gw6=ip
> +# ipconfigX ip=cidr,gw=ip,ip6=cidr,gw6=ip,mtu=mtu
>   sub parse_ipconfig {
>       my ($data) = @_;
>   
> @@ -1711,6 +1723,10 @@ sub parse_ipconfig {
>    return undef;
>       }
>   
> +    if ($res->{mtu} && !$res->{ip} && !$res->{ip6}) {
> +      warn 'mtu specified without specifying an IP or IPv6 address';
> +      return undef;
> +    }
>       if ($res->{gw} && !$res->{ip}) {
>         warn 'gateway specified without specifying an IP address';
>    return undef;
> diff --git a/PVE/QemuServer/Cloudinit.pm b/PVE/QemuServer/Cloudinit.pm
> index 439de99..a47e0ce 100644
> --- a/PVE/QemuServer/Cloudinit.pm
> +++ b/PVE/QemuServer/Cloudinit.pm
> @@ -6,6 +6,7 @@ use warnings;
>   use File::Path;
>   use Digest::SHA;
>   use URI::Escape;
> +use MIME::Base64 qw(decode_base64);
>   
>   use PVE::Tools qw(run_command file_set_contents);
>   use PVE::Storage;
> @@ -111,6 +112,11 @@ sub get_dns_conf {
>   sub cloudinit_userdata {
>       my ($conf, $vmid) = @_;
>   
> +    my $userdata = $conf->{ciuserdata};
> +    if (defined($userdata) && $userdata ne "") {
> +        return decode_base64(uri_unescape($userdata));
> +    }
> +
>       my ($hostname, $fqdn) = get_hostname_fqdn($conf, $vmid);
>   
>       my $content = "#cloud-config\n";
> @@ -176,7 +182,9 @@ sub configdrive2_network {
>     (my $id = $iface) =˜ s/ˆnet//;
>     next if !$conf->{"ipconfig$id"};
>           my $net = PVE::QemuServer::parse_ipconfig($conf->{"ipconfig$id"});
> +       next if !defined($net);
>       $id = "eth$id";
> +     my $mtu = $net->{mtu};
>   
>        $content .="auto $id\n";
>      if ($net->{ip}) {
> @@ -189,6 +197,9 @@ sub configdrive2_network {
>                 $content .= "        netmask $mask\n";
>                $content .= "        gateway $net->{gw}\n" if $net->{gw};
>           }
> +           if (defined($mtu) && $mtu ne "") {
> +              $content .= "        mtu $mtu\n";
> +       }
>         }
>     if ($net->{ip6}) {
>             if ($net->{ip6} =˜ /ˆ(auto|dhcp)$/) {
> @@ -200,6 +211,9 @@ sub configdrive2_network {
>              $content .= "        netmask $mask\n";
>                $content .= "        gateway $net->{gw6}\n" if $net->{gw6};
>         }
> +           if (defined($mtu) && $mtu ne "") {
> +              $content .= "        mtu $mtu\n";
> +       }
>         }
>       }
>   
> @@ -261,6 +275,7 @@ sub nocloud_network_v2 {
>   
>          my $net = PVE::QemuServer::parse_net($conf->{$iface});
>     my $ipconfig = PVE::QemuServer::parse_ipconfig($conf->{"ipconfig$id"});
> +  next if !defined($ipconfig);
>   
>     my $mac = $net->{macaddr}
>              or die "network interface '$iface' has no mac address\n";
> @@ -295,6 +310,10 @@ sub nocloud_network_v2 {
>         if (defined(my $gw = $ipconfig->{gw6})) {
>              $content .= "${i}gateway6: '$gw'\n";
>      }
> +   my $mtu = $ipconfig->{mtu};
> +      if (defined($mtu) && $mtu ne "") {
> +      $content .= "${i}mtu: $mtu\n";
> +  }
>   
>        next if $dns_done;
>    $dns_done = 1;
> @@ -332,14 +351,22 @@ sub nocloud_network {
>   
>     my $net = PVE::QemuServer::parse_net($conf->{$iface});
>     my $ipconfig = PVE::QemuServer::parse_ipconfig($conf->{"ipconfig$id"});
> +  next if !defined($ipconfig);
>   
>     my $mac = lc($net->{macaddr})
>          or die "network interface '$iface' has no mac address\n";
>   
> +  my $mtu = $ipconfig->{mtu};
> +
>    $content .= "${i}- type: physical\n"
>                    . "${i}  name: eth$id\n"
> -            . "${i}  mac_address: '$mac'\n"
> -             . "${i}  subnets:\n";
> +               . "${i}  mac_address: '$mac'\n";
> +
> +      if (defined($mtu) && $mtu ne "") {
> +      $content .= "${i}  mtu: $mtu\n";
> +        }
> +
> +       $content .= "${i}  subnets:\n";
>       $i .= '  ';
>           if (defined(my $ip = $ipconfig->{ip})) {
>               if ($ip eq 'dhcp') {


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


             reply	other threads:[~2020-09-04 14:58 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-04 14:58 proxmox [this message]
  -- strict thread matches above, loose matches on Subject: below --
2020-08-11 19:02 [pve-devel] Extend API for cloud-init MTU " Marius Schellenberger
2020-08-11 19:02 ` [pve-devel] [PATCH] api: cloud-init support for mtu " Marius Schellenberger
2020-08-28 15:46   ` Mira Limbeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='kcRK.AAAAAAJZh+74Ak+ZgfTuugd5TBgBAAAABQAAALNoSfGiMKlPo0F0bKmtM8AAAAAA.AJwb28uC1gE=@mx.giftfish.de' \
    --to=proxmox@giftfish.de \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal