Bug 850506

Summary: spacewalk-clone-by-date when specifying the parameter -d <YYYY-MM-DD> does not include errata signed on the date for the date parameter given
Product: Red Hat Satellite 5 Reporter: Marcelo Moreira de Mello <mmello>
Component: ServerAssignee: Tomáš Kašpárek <tkasparek>
Status: CLOSED ERRATA QA Contact: Dimitar Yordanov <dyordano>
Severity: medium Docs Contact:
Priority: medium    
Version: 541CC: cperry, dyordano, mmello, tkasparek, xdmoon
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: spacewalk-utils-1.2.1-18 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-10-29 06:01:45 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 817410    
Bug Blocks: 465198, 677498    

Description Marcelo Moreira de Mello 2012-08-21 17:07:38 UTC
Description of problem:
spacewalk-clone-by-date when specifying the parameter -d <YYYY-MM-DD> does not include errata signed on the date for  the date parameter given

 For instance, if we run the command below: 

    spacewalk-clone-by-date -y --user=mmello --password=xxxxxx -d 2012-08-20 --channel=rhel-x86_64-server-6 test-sfdc00676052, errata signed on 2012-08-20 will be not included on the cloned channel. 

Version-Release number of selected component (if applicable):
spacewalk-utils-1.2.1-17.el6sat.src.rpm

How reproducible:
100%


Steps to Reproduce:
1. Run the command above and observe that errata signed on the same date will not be included

  
Actual results:
Errata is not included when signed on the same for the parameter -d 


Expected results:
Include errata for the parameter given


Additional info:

Comment 3 Marcelo Moreira de Mello 2012-08-21 17:58:11 UTC
  The issue is located in utils/CloneByDate.py
------------------
500     def get_errata(self):
501         """ Returns tuple of all available for cloning, and what falls in the date range"""
502         available_errata = self.db_api.applicable_errata(self.from_label, self.to_label)
503         to_clone = []
504 
505         for err in available_errata:
506             if err['issue_date'] <= self.to_date:
507                 to_clone.append(err)
508
509         return (to_clone, available_errata)

  As we can see, for every errata it check the issue_date <= self.to_date. 

 Adding some debug marks we can see the errata RHBA-2012:1175 being excluded. Look the debugging code below:


# diff -ruN /usr/share/rhn/utils/cloneByDate.py.bak  /usr/share/rhn/utils/cloneByDate.py
--- /usr/share/rhn/utils/cloneByDate.py.bak	2012-08-21 13:43:39.681541759 -0300
+++ /usr/share/rhn/utils/cloneByDate.py	2012-08-21 14:04:56.913077536 -0300
@@ -505,6 +505,11 @@
         for err in available_errata:
             if err['issue_date'] <= self.to_date:
                 to_clone.append(err)
+            else:
+                print "advisory_name --> %s" %(err['advisory_name'])
+                print "issue_date --> %s" %(err['issue_date'])
+                print "to_date --> %s" %(self.to_date)
+
         
         return (to_clone, available_errata)  

 Executing the command:

  # /usr/bin/spacewalk-clone-by-date -y --user=mmello --password=xxxxxxx -d 2012-08-20 --channel=rhel-x86_64-server-6 test-sfdc00676052-2012-08-20_3

2012-08-20 00:00:00
Reading repository information.

By continuing the following channels will be created: 
test-sfdc00676052-2012-08-20_3
Cloning rhel-x86_64-server-6 to test-sfdc00676052-2012-08-20_3 with original package set.
Copying repodata, please wait.
Solving Dependencies (3429): 
________________________________________
######################################## - complete
Processing Dependencies:
________________________________________
######################################## - complete
advisory_name --> RHBA-2012:1175
issue_date --> 2012-08-20 01:00:00
to_date --> 2012-08-20 00:00:00
advisory_name --> RHSA-2012:1180
issue_date --> 2012-08-20 01:00:00
to_date --> 2012-08-20 00:00:00

Comment 4 Marcelo Moreira de Mello 2012-08-21 17:59:49 UTC
  It seems that we already have a fix on upstream  spacewalk.master

    $ git show 7e066ddf
commit 7e066ddf8b08acc67f2f0eab80545edf600ed728
Author: Stephen Herr <sherr>
Date:   Wed May 23 15:17:07 2012 -0400

    824583 - spacewalk-clone-by-date failes with TypeError when on Postgres database.
    
    The Postgres database returns a datetime object with a timezone, whereas oracle returnes one without.
     The tool then tries to comparte it with a datetime that has no timezone info, which is illegal. The fix i

diff --git a/utils/cloneByDate.py b/utils/cloneByDate.py
index f93e964..c4f0fe1 100644
--- a/utils/cloneByDate.py
+++ b/utils/cloneByDate.py
@@ -503,7 +503,7 @@ class ChannelCloner:
         to_clone = []
         
         for err in available_errata:
-            if err['issue_date'] <= self.to_date:
+            if err['issue_date'].date() <= self.to_date.date():
                 to_clone.append(err)
         
         return (to_clone, available_errata)

Comment 13 errata-xmlrpc 2012-10-29 06:01:45 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2012-1408.html