Bug #12628
closedhammer content-view promote failed when promoting content-view version with minor versions via option --version
Description
Cloned from https://bugzilla.redhat.com/show_bug.cgi?id=1286523
Description of problem:
I have content-view 'iam'
- hammer content-view list --organization rhit
----------------|------|-------|-----------|-----------------
CONTENT VIEW ID | NAME | LABEL | COMPOSITE | REPOSITORY IDS
----------------|------|-------|-----------|-----------------
10 | iam | iam | | 9, 6, 5, 1, 2, 7
with 2 versions (2.0 and 2.1)
- hammer content-view version list
---|---------|---------|-------------------------
ID | NAME | VERSION | LIFECYCLE ENVIRONMENTS
---|---------|---------|-------------------------
16 | iam 2.1 | 2.1 | qa
14 | iam 2.0 | 2.0 | Library
- hammer content-view version promote --content-view-id 10 --to-lifecycle-environment stage --version='2.1' --organization rhit
Could not promote the content view:
Error: content_view_version found more than once
Version-Release number of selected component (if applicable):
katello-2.2.0.16-1.el7sat.noarch
How reproducible:
always
Steps to Reproduce:
1. hammer content-view version promote --content-view-id 10 --to-lifecycle-environment stage --version '2.1'
2.
3.
Actual results:
error
Expected results:
content-view version should be promoted
Additional info:
I tracked the issue down to this file
/opt/rh/ruby193/root/usr/share/gems/gems/katello-2.2.0.76/app/models/katello/content_view_version.rb
def self.for_version(version)
major, minor = version.to_s.split('.')
query = where(:major => major)
query.where(:minor => minor) if minor <--- #1
Rails.logger.debug '!!DEBUG!!'
Rails.logger.debug version.to_s
Rails.logger.debug minor.to_s
Rails.logger.debug query.to_sql
query
end
-- log --
2015-11-30 06:26:46 [D] !!DEBUG!!
2015-11-30 06:26:46 [D] 2.1
2015-11-30 06:26:46 [D] 1
2015-11-30 06:26:46 [D] SELECT "katello_content_view_versions".* FROM "katello_content_view_versions" INNER JOIN "katello_content_views" ON "katello_content_views"."id" = "katello_content_view_versions"."content_view_id" WHERE "katello_content_views"."id" IN (1, 4, 8, 3, 7, 6, 10) AND "katello_content_view_versions"."content_view_id" = 10 AND "katello_content_view_versions"."major" = 2
-- log --
variable 'version' and 'minor' is getting the right figure, but somehow clause #1 does absolutely nothing, as "minor" = 1 does not appears in the query.
here is the proposed fix:
def self.for_version(version)
major, minor = version.to_s.split('.')
minor = 0 if minor.nil?
query = where(:major => major, :minor => minor)
query
end
Updated by The Foreman Bot almost 9 years ago
- Status changed from New to Ready For Testing
- Pull request https://github.com/Katello/katello/pull/5636 added
Updated by Neil Miao almost 9 years ago
- Status changed from Ready For Testing to Closed
- % Done changed from 0 to 100
Applied in changeset katello|9301efab185cd7eef60dfe308bbbe2304e904dc8.
Updated by Eric Helms almost 9 years ago
- Translation missing: en.field_release set to 86
- Triaged changed from No to Yes