Re: [Freeipa-devel] [PATCH 0283] copy-schema-to-ca: allow to overwrite schema files

2015-07-15 Thread Jan Cholasta

Dne 14.7.2015 v 14:17 David Kupka napsal(a):

On 10/07/15 14:31, Martin Basti wrote:

https://fedorahosted.org/freeipa/ticket/5034

Patch attached.




Works for me, ACK.



Pushed to:
master: 8bc0e9693b4b8356859b00afecd150b5c75fed99
ipa-4-2: cbdeba7a73c20b60b748558e63cf8672387febda

--
Jan Cholasta

--
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code


Re: [Freeipa-devel] [PATCH 0283] copy-schema-to-ca: allow to overwrite schema files

2015-07-14 Thread David Kupka

On 10/07/15 14:31, Martin Basti wrote:

https://fedorahosted.org/freeipa/ticket/5034

Patch attached.




Works for me, ACK.

--
David Kupka

--
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code


[Freeipa-devel] [PATCH 0283] copy-schema-to-ca: allow to overwrite schema files

2015-07-10 Thread Martin Basti

https://fedorahosted.org/freeipa/ticket/5034

Patch attached.

--
Martin Basti

From d77e41e76c333e504600109d4d9fdd41809bfe8b Mon Sep 17 00:00:00 2001
From: Martin Basti 
Date: Fri, 10 Jul 2015 14:17:02 +0200
Subject: [PATCH] copy-schema-to-ca: allow to overwrite schema files

If content of source and target file differs, the script will ask user
for permission to overwrite target file.

https://fedorahosted.org/freeipa/ticket/5034
---
 install/share/copy-schema-to-ca.py | 29 ++---
 1 file changed, 26 insertions(+), 3 deletions(-)

diff --git a/install/share/copy-schema-to-ca.py b/install/share/copy-schema-to-ca.py
index 1614e11636c2f52e231ea2ff40d882209194c60a..ff6c3568586f9f4b3fac7f848869e74d0db0df34 100755
--- a/install/share/copy-schema-to-ca.py
+++ b/install/share/copy-schema-to-ca.py
@@ -15,6 +15,8 @@ import sys
 import pwd
 import shutil
 
+from hashlib import sha1
+
 from ipapython import ipautil, dogtag
 from ipapython.ipa_log_manager import root_logger, standard_logging_setup
 from ipaserver.install.dsinstance import DS_USER, schema_dirname
@@ -42,6 +44,11 @@ SCHEMA_FILENAMES = (
 )
 
 
+def _sha1_file(filename):
+with open(filename, 'rb') as f:
+return sha1(f.read()).hexdigest()
+
+
 def add_ca_schema():
 """Copy IPA schema files into the CA DS instance
 """
@@ -54,9 +61,25 @@ def add_ca_schema():
 root_logger.debug('File does not exist: %s', source_fname)
 continue
 if os.path.exists(target_fname):
-root_logger.info(
-'Target exists, not overwriting: %s', target_fname)
-continue
+target_sha1 = _sha1_file(target_fname)
+source_sha1 = _sha1_file(source_fname)
+if target_sha1 != source_sha1:
+target_size = os.stat(target_fname).st_size
+source_size = os.stat(source_fname).st_size
+root_logger.info('Target file %s exists but the content is '
+ 'different', target_fname)
+root_logger.info('\tTarget file: sha1: %s, size: %s B',
+ target_sha1, target_size)
+root_logger.info('\tSource file: sha1: %s, size: %s B',
+ source_sha1, source_size)
+if not ipautil.user_input("Do you want replace %s file?" %
+  target_fname, True):
+continue
+
+else:
+root_logger.info(
+'Target exists, not overwriting: %s', target_fname)
+continue
 try:
 shutil.copyfile(source_fname, target_fname)
 except IOError, e:
-- 
2.4.3

-- 
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code