Dzahn has submitted this change and it was merged.

Change subject: delete snaprotate.pl from files/backup/
......................................................................


delete snaprotate.pl from files/backup/

Not used in any puppet manifest in repo.

And per comments from Ariel and Jaime.

Was once used in https://wikitech.wikimedia.org/wiki/Database_snapshots
but that is old.

https://wikitech.wikimedia.org/w/index.php?title=Database_snapshots&action=history

Change-Id: I4eb808dc5d3706542196ac0ab84d41ce3036b2d4
---
D files/backup/snaprotate.pl
1 file changed, 0 insertions(+), 321 deletions(-)

Approvals:
  jenkins-bot: Verified
  Dzahn: Looks good to me, approved



diff --git a/files/backup/snaprotate.pl b/files/backup/snaprotate.pl
deleted file mode 100755
index 8c64f64..0000000
--- a/files/backup/snaprotate.pl
+++ /dev/null
@@ -1,321 +0,0 @@
-#!/usr/bin/perl -w
-# vim:ai:filetype=perl:sta:sw=4:et:
-
-use strict;
-use Getopt::Long;
-use Pod::Usage;
-
-Getopt::Long::Configure('gnu_getopt',
-                        'prefix_pattern=(--|-)');
-
-my $DEBUG=0;
-
-# Declarations
-#
-my $TRESHOLD=90;
-my $SNAPCOUNT=2;
-
-my ($ACTION, $VOLGRP, $SRCLV, $SNSIZE)=();
-my ($SHOWALL, $SNAME, $MAILTO, $OPTIONS, $HELP)=();
-my @snaps=();
-my $outstr;
-my @tmparr;
-
-# main
-GetOptions ('option|o' => \$OPTIONS,
-            'action|a=s' => \$ACTION,
-            'all|A' => \$SHOWALL,
-            'volgroup|V=s' => \$VOLGRP,
-            'sourcelv|s=s' => \$SRCLV,
-            'mailto|m=s' => \$MAILTO,
-            'snapname|n=s' => \$SNAME,
-            'size|L=s' => \$SNSIZE,
-            'treshold|t=i' => \$TRESHOLD,
-            'snapcount|c=i' => \$SNAPCOUNT,
-            'help|h' => \$HELP)
-    or pod2usage(-verbose => 0, -exitval => 2);
-
-pod2usage(-verbose => 1) if ($OPTIONS);
-pod2usage(-verbose => 2) if ($HELP);
-
-
-if ( not defined $ACTION or ($ACTION !~ /^s(wap)?$/ and $ACTION !~ /^m(ail)?$/
-    and $ACTION !~ /^r(eport)?$/)) {
-    print STDERR "Error: missing or invalid action type.\n";
-    pod2usage(-verbose => 0, -exitval => 2);
-}
-elsif (not defined $VOLGRP or not defined $SRCLV or (not defined $SNSIZE and
-    $ACTION =~ /^s/)) {
-    print STDERR "Error: missing mandatory option.\n";
-    pod2usage(-verbose => 0, -exitval => 2);
-}
-elsif ($ACTION =~ /^s/ and $SNSIZE !~ /^\d+[kmgt]?$/i) {
-    print STDERR "Error: Invalid size value.\n";
-    pod2usage(-verbose => 0, -exitval => 2);
-}
-elsif ($ACTION =~ /^s/ and $SNAPCOUNT < 1) {
-    print STDERR "Error: use a positive integer for \"snapcount\".\n";
-    pod2usage(-verbose => 0, -exitval => 2);
-}
-elsif ($ACTION =~ /^m/ and $MAILTO !~ /^[\w\.-]+(@[\w-]+(\.[\w-]+)*)?$/) {
-    print STDERR "Error: Missing or invalid mail address.\n";
-    pod2usage(-verbose => 0, -exitval => 2);
-}
-
-# More declarations
-my @lvscmd=("/sbin/lvs", "--noheadings", "--options",
-    "lv_name,lv_attr,vg_name,origin,snap_percent");
-my @lvcrt=("/sbin/lvcreate", "--snapshot", "--size", $SNSIZE, "--name", 
-    "__FOO__", "--permission", "rw", "/dev/$VOLGRP/$SRCLV");
-my @lvrm=("/sbin/lvremove", "-f", "__FOO__");
-my @dfcmd=("/bin/df", "-k");
-my @lsofcmd=("/usr/bin/lsof","+D");
-my $mailprog="/usr/bin/Mail";
-
-#get lvs info
-$outstr=&Backticks(@lvscmd);
-chomp $outstr;
-@tmparr=split("\n",$outstr);
-foreach my $lvsline (@tmparr) {
-    my @lvarr=split(" ", $lvsline);
-    next if (scalar @lvarr != 5 or $lvarr[2] ne $VOLGRP or $lvarr[3] ne 
$SRCLV);
-    push @snaps, \@lvarr;
-}
-
-if ($ACTION =~ /^s/) {
-    while (scalar(@snaps) >= $SNAPCOUNT)  {
-        # Delete oldest
-        my $oldest="";
-        my $percent=0;
-        foreach my $lvline (@snaps) {
-            if ($oldest eq "") {
-                $oldest=$lvline->[0];
-                $percent=$lvline->[4];
-            }
-            else {
-                if ($lvline->[4] > $percent) {
-                    $oldest=$lvline->[0];
-                    $percent=$lvline->[4];
-                }
-                else {
-                }
-            }
-        }
-        # remove the entry from from @snaps
-        @tmparr=();
-        foreach my $lvline (@snaps) {
-            push @tmparr, $lvline if ($lvline->[0] ne $oldest);
-        }
-        @snaps=@tmparr;
-        # Check if the snapshot is mounted
-        my @filesys=&Unfold(@dfcmd);
-        foreach my $dfline(@filesys) {
-            my @dfres=split(" ", $dfline, 6);
-            next if ($dfres[0] ne "/dev/mapper/$VOLGRP-$oldest");
-            my @pids;
-            my $lsofoutp=&Backticks(@lsofcmd, $dfres[5]);
-            foreach my $line (split "\n", $lsofoutp) {
-                chomp $line;
-                next if ($line =~ /^COMMAND/);
-                my @elems=split(" ",$line);
-                unshift @pids, $elems[1];
-            }
-            # kill processes on the mounted snapshot
-            my $dummy=&Backticks("/bin/kill","-KILL",@pids) if (scalar(@pids) 
> 0);
-            # umount the snapshot
-            $dummy=&Backticks("/bin/umount",$dfres[5]);
-            die "Could not umount snapshot \"$oldest\".\n" if ($?);
-        }
-        $lvrm[2]="/dev/$VOLGRP/$oldest";
-        # remove the snapshot
-        my $dummy=&Backticks(@lvrm);
-        die "Could not remove old snapshot \"$oldest\".\n" if ($?);
-    }
-    if (not defined $SNAME or $SNAME eq "") {
-        my ($min,$hour,$day,$mon);
-        ($_,$min,$hour,$day,$mon,$_,$_,$_,$_)=localtime();
-        $mon=sprintf("%02d",++$mon);
-        $day=sprintf("%02d",$day);
-        $hour=sprintf("%02d",$hour);
-        $min=sprintf("%02d",$min);
-        $SNAME="snap$mon$day$hour$min";
-    }
-    $lvcrt[5]=$SNAME;
-    my $dummy=&Backticks(@lvcrt);
-    die "Could not create new snapshot.\n" if ($?);
-    my $mntastat=&Backticks("/usr/bin/stat", "-f", "-c", "%i", "/mnt/a");
-    my $mntstat=&Backticks("/usr/bin/stat", "-f", "-c", "%i", "/mnt");
-    if ( $mntastat ne $mntstat ) {
-        $dummy=&Backticks("/bin/umount", "/mnt/a");
-    }
-    $dummy=&Backticks("/bin/mount", "-o", "noatime,nobarrier,nouuid", 
"/dev/tank/$SNAME", "/mnt/a");
-    exit 0;
-}
-else {
-    #ACTION eq mail|report
-    my $mailbody="";
-    foreach my $snap (@snaps) {
-        if ($SHOWALL) {
-            $mailbody .= "Snapshot percentage for $snap->[0] is 
$snap->[4]\%\n";
-        }
-        if ($snap->[1] =~ /^S/) {
-            $mailbody .= "ERROR: snapshot $snap->[0] is broken!\n";
-        }
-        elsif ($snap->[4] >= $TRESHOLD) {
-            $mailbody .= "WARNING: snapshot $snap->[0] is filled " . 
-                "above treshold ($snap->[4]\%)\n";
-        }
-    }
-    if ($mailbody ne "") {
-        if ($ACTION =~ /^m/) {
-            die "No mailaddress specified\n" if (not defined $MAILTO);
-            my $pid=undef;
-            my @mailcmd=($mailprog,"-s","Snapshot report for 
/dev/$VOLGRP/$SRCLV",
-                $MAILTO);
-            if ($pid = open (CHILD,"|-")) {
-                print CHILD $mailbody;
-            }
-            else {
-                die "Cannot fork.\n" unless defined $pid;
-                exec @mailcmd;
-            }
-        }
-        else {
-            print STDERR $mailbody;
-        }
-    }
-}
-
-# Start of subs
-sub Unfold {
-    my $result=&Backticks(@_);
-    chomp $result;
-    $result=~s/\n\s+/ /g;
-    my @res=split("\n",$result);
-    return @res;
-}
-
-sub Backticks {
-    my @arr=@_;
-    my ($result,$pid);
-    if ($pid = open (CHILD,"-|")) {
-        local $/;
-        return <CHILD>;
-    }
-    else {
-        if ( ! defined $pid ) {
-            die "Cannot fork.\n";
-        }
-        if ( ! -x $arr[0] ) {
-            die "Cannot execute $arr[0]\n";
-        }
-        print STDERR "executing ".join(" ",@arr)."\n" if ($DEBUG);
-        exec @arr;
-    }
-}
-
-
-__END__
-
-=head1 NAME
-
-snaprotate.pl - Use rotating snapshots as a backup means.
-
-=head1 SYNOPSIS
-
-B<snaprotate.pl> B<-a>|B<--action> I<s[wap] | m[ail] | r[eport]>
-[B<-A>|B<--all>] B<-V>|B<--volgroup> I<vg>
-B<-s>|B<--sourcelv> I<lv> [B<-L>|B<--size> I<snapsize>] 
-[B<-n>|B<--snapname> I<snapvol>] [B<-m>|B<--mailto> I<user@fqdn>] 
-[B<-t>|B<--treshold> I<value>] [B<-c>|B<--snapcount> I<value>] 
-
-B<snaprotate.pl> B<-h>|B<--help>
-
-B<snaprotate.pl> B<-o>|B<--options>
-
-=head1 DESCRIPTION
-
-This script will either rotate between snapshots of a logical volume or
-report if a snapshot volume is used more than a treshold value (default 90%).
-When rotating, the snapshot volume with most usage is deleted and a new one
-is created.
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<-a, --action> I<s[wap] | m[ail] | r[eport]>
-
-Mandatory option. The I<swap> option will delete the oldest snapshot if
-all snapshots are used (or more oldest if more snapshots are used).
-WARNING: if a snapshot to be deleted is mounted, it will first be unmounted.
-If the filesystem is busy, all processed on the filesystem are killed with a 
-SIGKILL.
-
-The <report> and I<mail> options check if a snapshot is used more than
-the treshold value or if a snapshot became invalid. I<report> prints the
-message to stderr and I<mail> sends the message to a mail address.
-
-=item B<-A, --all>
-
-Show usage info for all snapshots. This option is only used with the I<mail>
-and I<report> action types.
-
-=item B<-V, --volgroup> I<vg>
-
-The volume group that the logical volumes are members of. Mandatory option.
-
-=item B<-s, --sourcelv> I<lv>
-
-The logical volume that is snapped. Also mandatory.
-
-=item B<-n, --snapname> I<snapvol>
-
-Use this name as the name for the newly created snapshot (optional).
-
-=item B<-L, --size> I<snapsize>
-
-The size of the logical volume (use a suffix of K, M or G for Kibi, Mebi or
-Gibibytes). This option is mandatory for the I<swap> action, else ignored.
-
-=item B<-m, --mailto> I<user@fqdn>
-
-The user to where a warning of the snap utilization is mailed to. This option
-is ignored unless the I<mail> action is used but is mandatory when it is.
-
-=item B<-t, --treshold> I<value>
-
-The percentage of snap usage where the report option will generate an warning.
-The default value is 90. This value is only used by the I<mail> and 
-I<report> actions.
-
-=item B<-c, --snapcount> I<value> 
-
-The number of snapshots to cycle through. When fewer snapshots are available,
-nothing is deleted. If more than this number are available, the excess plus one
-more are deleted. The default number is 2. This option is only used by the 
-I<swap> action.
-
-=item B<-o, --options>
-
-Print the list of command line options.
-
-=item B<-h, --help>
-
-Show the manpage.
-
-=head1 AUTHOR
-
-Rob S. Wolfram E<lt>[email protected]<gt>
-
-=head1 LICENSE
-
-This program is licensed according to the GNU General Public License
-(GPL) Version 2, or at your discretion, any later version. A copy of the
-license text can be obtained from 
E<lt>http://www.gnu.org/licenses/gpl.htmlE<gt>
-or by mailing the author. In short it means that there are no restrictions on
-its use, but distributing the program or derivative works is only allowed
-according to the terms of the GPL.
-
-=cut
-

-- 
To view, visit https://gerrit.wikimedia.org/r/318450
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I4eb808dc5d3706542196ac0ab84d41ce3036b2d4
Gerrit-PatchSet: 5
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Dzahn <[email protected]>
Gerrit-Reviewer: ArielGlenn <[email protected]>
Gerrit-Reviewer: Dzahn <[email protected]>
Gerrit-Reviewer: Jcrespo <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to