pf-tools commit: r723 [ccaillet-guest] - in /trunk: debian/changelog filters/filter_privateresolve lib/PFTools/Net.pm lib/PFTools/Packages.pm lib/PFTools/Update.pm

parmelan-guest at users.alioth.debian.org parmelan-guest at users.alioth.debian.org
Wed Nov 25 16:15:55 UTC 2009


Author: ccaillet-guest
Date: Wed Nov 25 16:15:55 2009
New Revision: 723

URL: http://svn.debian.org/wsvn/pf-tools/?sc=1&rev=723
Log:
* lib/PFTools/Package.pm
  - in Get_pkg_policiy : handler for check if a specific version is available
  - in Install_pkg : handler for a specific version during installation package
* lib/PFTools/Update.pm
  - in Do_updateloop : skipping circular dependancies for avoiding infinite
    loop
  - in $FUNCTION->{'apt-get'} : adding handler for version directive which
    specifies a version to install (NEED TESTING!!). A control is done for
    the availability of the specified version.
* filters/filter_privateresolve : substitution occured with POPNAME keyword
  accroding to the value which is in $SUBST hashtable (backported from branche
  0.33-stable)
* lib/PFTools/Net.pm : permit different bonding definition for a specified
  host number (backported from branche 0.33-stable)

Modified:
    trunk/debian/changelog
    trunk/filters/filter_privateresolve
    trunk/lib/PFTools/Net.pm
    trunk/lib/PFTools/Packages.pm
    trunk/lib/PFTools/Update.pm

Modified: trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pf-tools/trunk/debian/changelog?rev=723&op=diff
==============================================================================
--- trunk/debian/changelog (original)
+++ trunk/debian/changelog Wed Nov 25 16:15:55 2009
@@ -34,6 +34,20 @@
   * Avoid potential undefined value with %POPNAME% and %HOSTNODEINDEX%
   * Permit an interface definition for a particular host even if interface.<iface>
     (default value) is not defined. A warning is raised not an abort
+  * lib/PFTools/Package.pm
+    - in Get_pkg_policiy : handler for check if a specific version is available
+    - in Install_pkg : handler for a specific version during installation package
+  * lib/PFTools/Update.pm
+    - in Do_updateloop : skipping circular dependancies for avoiding infinite
+      loop
+    - in $FUNCTION->{'apt-get'} : adding handler for version directive which
+      specifies a version to install (NEED TESTING!!). A control is done for
+      the availability of the specified version.
+  * filters/filter_privateresolve : substitution occured with POPNAME keyword
+    accroding to the value which is in $SUBST hashtable (backported from branche
+    0.33-stable)
+  * lib/PFTools/Net.pm : permit different bonding definition for a specified
+    host number (backported from branche 0.33-stable)
 
   [ Thomas Parmelan ]
   * debian/control
@@ -55,7 +69,7 @@
   * tools/kvmlaunch:
     - new script.
 
- -- Christophe Caillet <tof at sitadelle.com>  Wed, 01 Jul 2009 11:29:32 +0200
+ -- Christophe Caillet <tof at sitadelle.com>  Wed, 25 Nov 2009 17:14:57 +0100
 
 pf-tools (0.33.1-1) unstable; urgency=low
 

Modified: trunk/filters/filter_privateresolve
URL: http://svn.debian.org/wsvn/pf-tools/trunk/filters/filter_privateresolve?rev=723&op=diff
==============================================================================
--- trunk/filters/filter_privateresolve (original)
+++ trunk/filters/filter_privateresolve Wed Nov 25 16:15:55 2009
@@ -25,6 +25,7 @@
 
 use PFTools::Net;
 use PFTools::Update;
+use PFTools::Conf;
 
 my ( $src, $host, $dst, $sep ) = @ARGV;
 unless ( $src and $host and $dst ) {
@@ -58,6 +59,7 @@
 
 	    my $match2 = $match;
 	    $match2 =~ s/HOSTNAME/$host/;
+	    $match2 =~ s/POPNAME/$SUBST{'POPNAME'}/g;
 
 	    my @resolved = Resolv( $match2, $Z );
 

Modified: trunk/lib/PFTools/Net.pm
URL: http://svn.debian.org/wsvn/pf-tools/trunk/lib/PFTools/Net.pm?rev=723&op=diff
==============================================================================
--- trunk/lib/PFTools/Net.pm (original)
+++ trunk/lib/PFTools/Net.pm Wed Nov 25 16:15:55 2009
@@ -916,8 +916,15 @@
 			Abort( $ERR_SYNTAX, "No default bonding config defined for interface ".$bond ) ;
 		    }
 		    foreach my $iface ( @{$M->{'bonding'}->{$bond}} ) {
-			if ( defined $S->{'interface'}->{$iface} ) {
-			    Abort ( $ERR_SYNTAX, "Cannot defined interface ".$iface." which is already on bonding definition ".$bond ) ;
+		    	if ( defined $S->{'interface'}->{$iface} ) {
+			    if ( ref ( $S->{'interface'}->{$iface} ) eq 'HASH' ) {
+				if ( defined $S->{'interface'}->{$iface}->{$mnamindexnum} ) {
+				    Abort( $ERR_SYNTAX, "Cannot define interface $iface: already used in bonding definition $bond" );
+				}
+			    }
+			    else {
+			    	Abort( $ERR_SYNTAX, "Cannot define interface $iface: already used in bonding definition $bond" );
+			    }
 			}
 		    }
 		}
@@ -963,7 +970,8 @@
 			$lan = $S->{'interface'}->{$i}->{$mnamindexnum} ;
 		    }
 		    elsif ( ! defined $S->{'interface'}->{$i}->{'default'} ) {
-			Warn( $ERR_SYNTAX, "No default vlan defined for interface ".$i ) ;
+			Warn( $ERR_SYNTAX, "No default vlan defined for interface ".$i." skipping this interface for host $mnam" ) ;
+			next ;
 		    }
 		    else {
 			$lan = $S->{'interface'}->{$i}->{'default'} ;
@@ -1111,7 +1119,7 @@
 			    if ( defined $S->{$i}->{$r}->{$mnamindexnum} ) {
 				$M->{$act}->{$j}->{$r} = $S->{$i}->{$r}->{$mnamindexnum} ;
 			    } elsif ( ! defined $S->{$i}->{$r}->{'default'} ) {
-				Abort ( $ERR_SYNTAX, "No default route defined for interface ".$i ) ;
+				Warn ( $ERR_SYNTAX, "No default route defined for interface ".$i." skipping this route for host $mnam" ) ;
 			    } else {
 				$M->{$act}->{$j}->{$r} = $S->{$i}->{$r}->{'default'} ;
 			    }

Modified: trunk/lib/PFTools/Packages.pm
URL: http://svn.debian.org/wsvn/pf-tools/trunk/lib/PFTools/Packages.pm?rev=723&op=diff
==============================================================================
--- trunk/lib/PFTools/Packages.pm (original)
+++ trunk/lib/PFTools/Packages.pm Wed Nov 25 16:15:55 2009
@@ -173,10 +173,11 @@
 	return $dep_list ;
 }
 
-sub Get_pkg_policy ($$) {
-	my ( $pkg_type, $pkg_name ) = @_ ;
-	my ( $installed, $available ) ;
-
+sub Get_pkg_policy ($$$) {
+	my ( $pkg_type, $pkg_name, $version ) = @_ ;
+	my ( $installed, $available, $specified_version ) ;
+
+	$specified_version = 0 ;
 	if ( ! defined $PKG_CMD->{$pkg_type} ) {
 		Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) if ( $VERBOSE );
 		return undef ;
@@ -199,9 +200,12 @@
 			elsif (m/^  Candidate: (.*)$/) {
 				$available = $1;
 			}
+			elsif ( defined $version && /\Q$version\E/ ) {
+				$specified_version = 1 ;
+			}
 		}
 		close(APTPOLICY);
-		return ( $installed, $available ) ;
+		return ( $installed, $available, $specified_version ) ;
 	}
 }
 
@@ -232,8 +236,8 @@
 	}
 }
 
-sub Install_pkg ($$) {
-	my ( $pkg_type, $pkg_name ) = @_ ;
+sub Install_pkg ($$;$) {
+	my ( $pkg_type, $pkg_name, $version ) = @_ ;
 
 	if ( ! defined $PKG_CMD->{$pkg_type} ) {
 		Warn ( $ERR_OPEN, "Unknown package type ".$pkg_type ) if ( $VERBOSE );
@@ -246,7 +250,11 @@
 	}
 	else {
 		if ( $pkg_type eq 'deb' ) {
-			if ( deferredlogsystem ( $PKG_CMD->{$pkg_type}->{'install'}." '".$pkg_name."'" ) ) {
+			my $install_cmd = $PKG_CMD->{$pkg_type}->{'install'}." '".$pkg_name."'" ;
+			if ( defined $version ) {
+				$install_cmd = $PKG_CMD->{$pkg_type}->{'install'}." '".$pkg_name."=".$version."'" ;
+			}
+			if ( deferredlogsystem ( $install_cmd ) ) {
 				return 0 ;
 			}
 			return 1 ;

Modified: trunk/lib/PFTools/Update.pm
URL: http://svn.debian.org/wsvn/pf-tools/trunk/lib/PFTools/Update.pm?rev=723&op=diff
==============================================================================
--- trunk/lib/PFTools/Update.pm (original)
+++ trunk/lib/PFTools/Update.pm Wed Nov 25 16:15:55 2009
@@ -647,6 +647,7 @@
     $pkg_type = 'deb' if ( ! defined $pkg_type ) ;
     my $installed_version;
     my $available_version;
+    my $specified_version = 0;
     my $install;
 
     my $name_filter = $S->{'name_filter'};
@@ -665,7 +666,8 @@
 	$dest = $newdest;
     }
 
-    aptupdate();
+#     aptupdate();
+    Update_pkg_repository ( $pkg_type ) ;
 
 #     open( APTPOLICY, $APT_POLICY . ' ' . $dest . ' 2>/dev/null |' );
 #     while (<APTPOLICY>) {
@@ -682,7 +684,7 @@
 #     }
 #     close(APTPOLICY);
 
-    ( $installed_version, $available_version ) = Get_pkg_policy ( $pkg_type, $dest ) ;
+    ( $installed_version, $available_version, $specified_version ) = Get_pkg_policy ( $pkg_type, $dest, $S->{'version'} ) ;
     
 #     if ( !defined($available_version) ) {
 # 	Warn( $ERR_OPEN, "Package " . $dest . " indisponible" );
@@ -691,6 +693,10 @@
 
     if ( !defined ( $available_version ) ) {
 	Warn( $ERR_OPEN, "Package " . $dest . " indisponible" );
+	return 1;
+    }
+    if ( defined ( $S->{'version'} ) && ! $specified_version ) {
+	Warn( $ERR_OPEN, "Package " . $dest . " en version " . $S->{'version'} . " indisponible" );
 	return 1;
     }
 
@@ -783,7 +789,7 @@
 # 		Warn( $ERR_OPEN, "Installation de " . $dest . " impossible" );
 # 		return 1;
 # 	    }
-	    if ( ! Install_pkg ( $pkg_type, $dest ) ) {
+	    if ( ! Install_pkg ( $pkg_type, $dest, $S->{'version'} ) ) {
 	        Warn( $ERR_OPEN, "Installation de ".$dest." impossible" ) ;
 		return 1;
 	    }
@@ -1734,14 +1740,23 @@
 
 		foreach $d (@dependsraw) {
 		    if ( defined($d) && $d ne "" && defined( $C->{$d} ) ) {
+			if ( $d eq $s ) {
+			    Warn ( $ERR_SYNTAX,
+				"["
+				. $s
+				. "] circular dependancy detected, skipping this depend"
+			    );
+			    FlushLog();
+			    next;
+			}
 			push @depends, $d;
 			if ( $C->{$d}->{'action'} eq 'addmount' ) {
 			    Warn( $ERR_OPEN,
-				      "[" 
-				    . $s
-				    . "] depends on addmount ["
-				    . $d
-				    . "], it may not work during install!" );
+				"[" 
+				. $s
+				. "] depends on addmount ["
+				. $d
+				. "], it may not work during install!" );
 			    FlushLog();
 			}
 		    }




More information about the pf-tools-commits mailing list