all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
To: Stoiko Ivanov <s.ivanov@proxmox.com>, pmg-devel@pve.proxmox.com
Subject: Re: [pmg-devel] [PATCH pve-common 1/2] Systemd: add helpers for parsing unit files
Date: Tue, 10 Nov 2020 09:34:58 +0100	[thread overview]
Message-ID: <e843ea9c-3913-7ead-2c70-ac9e70e630e9@proxmox.com> (raw)
In-Reply-To: <20201028185432.23067-2-s.ivanov@proxmox.com>

On 28.10.20 19:54, Stoiko Ivanov wrote:
> taken from pve-storage/PVE/API2/Disks/Directory.pm (and made available as
> public sub)

we could now replace those usages over there? Not urgent, just as reminder. 

> 
> Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
> ---
> refactoring pve-storage to use this (and drop the now duplicated code) will
> be done separately
> 
>  src/PVE/Systemd.pm | 72 ++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 72 insertions(+)
> 
> diff --git a/src/PVE/Systemd.pm b/src/PVE/Systemd.pm
> index 85b35a3..bcba5eb 100644
> --- a/src/PVE/Systemd.pm
> +++ b/src/PVE/Systemd.pm
> @@ -7,6 +7,8 @@ use Net::DBus qw(dbus_uint32 dbus_uint64);
>  use Net::DBus::Callback;
>  use Net::DBus::Reactor;
>  
> +use PVE::Tools qw(file_set_contents file_get_contents trim);
> +
>  sub escape_unit {
>      my ($val, $is_path) = @_;
>  
> @@ -163,4 +165,74 @@ sub wait_for_unit_removed($;$) {
>      }, $timeout);
>  }
>  
> +sub read_ini {
> +    my ($filename) = @_;
> +
> +    my $content = file_get_contents($filename);
> +    my @lines = split /\n/, $content;
> +
> +    my $result = {};
> +    my $section;
> +
> +    foreach my $line (@lines) {
> +	$line = trim($line);
> +	if ($line =~ m/^\[([^\]]+)\]/) {
> +	    $section = $1;
> +	    if (!defined($result->{$section})) {
> +		$result->{$section} = {};
> +	    }
> +	} elsif ($line =~ m/^(.*?)=(.*)$/) {
> +	    my ($key, $val) = ($1, $2);
> +	    if (!$section) {
> +		warn "key value pair found without section, skipping\n";
> +		next;
> +	    }
> +
> +	    if ($result->{$section}->{$key}) {
> +		# make duplicate properties to arrays to keep the order
> +		my $prop = $result->{$section}->{$key};
> +		if (ref($prop) eq 'ARRAY') {
> +		    push @$prop, $val;
> +		} else {
> +		    $result->{$section}->{$key} = [$prop, $val];
> +		}
> +	    } else {
> +		$result->{$section}->{$key} = $val;
> +	    }
> +	}
> +	# ignore everything else
> +    }
> +
> +    return $result;
> +};
> +
> +sub write_ini {
> +    my ($ini, $filename) = @_;
> +
> +    my $content = "";
> +
> +    foreach my $sname (sort keys %$ini) {
> +	my $section = $ini->{$sname};
> +
> +	$content .= "[$sname]\n";
> +
> +	foreach my $pname (sort keys %$section) {
> +	    my $prop = $section->{$pname};
> +
> +	    if (!ref($prop)) {
> +		$content .= "$pname=$prop\n";
> +	    } elsif (ref($prop) eq 'ARRAY') {
> +		foreach my $val (@$prop) {
> +		    $content .= "$pname=$val\n";
> +		}
> +	    } else {
> +		die "invalid property '$pname'\n";
> +	    }
> +	}
> +	$content .= "\n";
> +    }
> +
> +    file_set_contents($filename, $content);
> +};
> +
>  1;
> 





  parent reply	other threads:[~2020-11-10  8:35 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-28 18:54 [pmg-devel] [PATCH pve-common/api/gui] add initial PBS integration Stoiko Ivanov
2020-10-28 18:54 ` [pmg-devel] [PATCH pve-common 1/2] Systemd: add helpers for parsing unit files Stoiko Ivanov
2020-10-30  8:26   ` [pmg-devel] applied: " Dietmar Maurer
2020-11-10  8:34   ` Thomas Lamprecht [this message]
2020-10-28 18:54 ` [pmg-devel] [PATCH pve-common 2/2] add helper module for handling PBS Integration Stoiko Ivanov
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-api 01/11] drop left-over commented out code Stoiko Ivanov
2020-10-30  5:58   ` [pmg-devel] applied: " Dietmar Maurer
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-api 02/11] Backup: split backup creation and creating tar Stoiko Ivanov
2020-10-30  6:20   ` [pmg-devel] applied: " Dietmar Maurer
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-api 03/11] Restore: optionally restore from directory Stoiko Ivanov
2020-10-30  6:26   ` [pmg-devel] applied: " Dietmar Maurer
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-api 04/11] Backup: push restore options to PMG::Backup Stoiko Ivanov
2020-10-30  6:32   ` [pmg-devel] applied: " Dietmar Maurer
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-api 05/11] debian: add dependency on proxmox-backup-client Stoiko Ivanov
2020-10-30  6:33   ` [pmg-devel] applied: " Dietmar Maurer
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-api 06/11] add initial SectionConfig for pbs Stoiko Ivanov
2020-10-30  6:38   ` Dietmar Maurer
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-api 07/11] Add API2 module for PBS configuration Stoiko Ivanov
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-api 08/11] Add API2 module for per-node backups to PBS Stoiko Ivanov
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-api 09/11] pbs-integration: add CLI calls to pmgbackup Stoiko Ivanov
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-api 10/11] add scheduled backup to PBS remotes Stoiko Ivanov
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-api 11/11] add daily timer for pruning configured remotes Stoiko Ivanov
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-gui 1/3] Make Backup/Restore panel a menuentry Stoiko Ivanov
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-gui 2/3] refactor RestoreWindow for PBS Stoiko Ivanov
2020-10-28 18:54 ` [pmg-devel] [PATCH pmg-gui 3/3] add PBSConfig tab to Backup menu Stoiko Ivanov
2020-10-30  5:47 ` [pmg-devel] [PATCH pve-common/api/gui] add initial PBS integration Dietmar Maurer

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=e843ea9c-3913-7ead-2c70-ac9e70e630e9@proxmox.com \
    --to=t.lamprecht@proxmox.com \
    --cc=pmg-devel@pve.proxmox.com \
    --cc=s.ivanov@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal