old_contents: #!/usr/bin/env python
  #
  # Copyright (C) 2014 Wind River Systems, Inc. 
  # 
  # Description: Calls other scripts in order, so that there can be multiple
  # scripts for a particular hook tied to libvirt.
  #
  # For example: If this script is called "qemu" and is in the
  # "/etc/libvirt/hooks/" directory.  This script will be called by libvirt
  # when certain actions are performed on a qemu guest.  This script then
  # will in turn call any executable file in the same directory matching
  # "qemu-" followed by at least one alpha-numeric character.  The scripts
  # are called in order (based on the python sorted function), and once any
  # sub-script returns a non-zero exit code no futher scripts are called.
  # This script passes any arguments it retrieves on the command line and a
  # copy of stdin to the sub-scripts it calls.
  
  import os
  import re
  import subprocess
  import sys
  
  def main():
  	return_value = 0
  	hook_name = os.path.basename( __file__ )
  	try:
  		hook_dir = os.path.dirname( __file__ )
  		hook_args = sys.argv
  		del hook_args[ 0 ] # Remove executable from argument list
  
  		# Save stdin, so we can pass it to each sub-script.
  		if sys.stdin.isatty():
  			stdin_save = [ "" ]
  		else: 
  			stdin_save = sys.stdin.readlines()
  		# Match the name name of the hook + a dash + atleast
  		# one alpha-numeric character.
  		matcher = re.compile( "%s-\w+" % hook_name )
  		for file_name in sorted( os.listdir( hook_dir ) ):
  			file_path = os.path.join( hook_dir, file_name )
  			if matcher.match( file_name ) \
  			   and os.access( file_path, os.X_OK ) \
  			   and os.path.isfile( file_path ) \
  			   and return_value == 0:
  				cmd = [ file_path ] + hook_args
  				p = subprocess.Popen( cmd, stdin=subprocess.PIPE )
  				p.communicate( input = ''.join( stdin_save ) )[0]
  				return_value = p.wait()
  	except Exception as e:
  		sys.stderr.write( "%s hook error: %s\n" % ( hook_name, str( e ) ) )
  		return_value = 1
  	return return_value
  
  if __name__ == '__main__':
  	sys.exit( main() )
  
new_contents: #!/usr/bin/env python3
  #
  # Copyright (C) 2014 Wind River Systems, Inc. 
  # 
  # Description: Calls other scripts in order, so that there can be multiple
  # scripts for a particular hook tied to libvirt.
  #
  # For example: If this script is called "qemu" and is in the
  # "/etc/libvirt/hooks/" directory.  This script will be called by libvirt
  # when certain actions are performed on a qemu guest.  This script then
  # will in turn call any executable file in the same directory matching
  # "qemu-" followed by at least one alpha-numeric character.  The scripts
  # are called in order (based on the python sorted function), and once any
  # sub-script returns a non-zero exit code no futher scripts are called.
  # This script passes any arguments it retrieves on the command line and a
  # copy of stdin to the sub-scripts it calls.
  
  import os
  import re
  import subprocess
  import sys
  
  def main():
  	return_value = 0
  	hook_name = os.path.basename( __file__ )
  	try:
  		hook_dir = os.path.dirname( __file__ )
  		hook_args = sys.argv
  		del hook_args[ 0 ] # Remove executable from argument list
  
  		# Save stdin, so we can pass it to each sub-script.
  		if sys.stdin.isatty():
  			stdin_save = [ "" ]
  		else: 
  			stdin_save = sys.stdin.readlines()
  		# Match the name name of the hook + a dash + atleast
  		# one alpha-numeric character.
  		matcher = re.compile( "%s-\w+" % hook_name )
  		for file_name in sorted( os.listdir( hook_dir ) ):
  			file_path = os.path.join( hook_dir, file_name )
  			if matcher.match( file_name ) \
  			   and os.access( file_path, os.X_OK ) \
  			   and os.path.isfile( file_path ) \
  			   and return_value == 0:
  				cmd = [ file_path ] + hook_args
  				p = subprocess.Popen( cmd, stdin=subprocess.PIPE )
  				p.communicate( input = ''.join( stdin_save ) )[0]
  				return_value = p.wait()
  	except Exception as e:
  		sys.stderr.write( "%s hook error: %s\n" % ( hook_name, str( e ) ) )
  		return_value = 1
  	return return_value
  
  if __name__ == '__main__':
  	sys.exit( main() )
  
subject: convert to python3