Skip to content
This repository has been archived by the owner on Oct 24, 2022. It is now read-only.

Fixes #17051 - PUT quantity to attach for AK subs #134

Merged
merged 1 commit into from Nov 3, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
9 changes: 8 additions & 1 deletion lib/hammer_cli_csv/activation_keys.rb
Expand Up @@ -220,7 +220,14 @@ def single_subscription(activationkey, existing_subscriptions, line)
raise _("No matching subscriptions") if matches.empty?

match = matches[0]
print _(" attaching '%{name}'...") % {:name => match['name']} if option_verbose?

match = match_with_quantity_to_attach(match, line)

if option_verbose?
print _(" attaching %{quantity} of '%{name}'...") % {
:name => match['name'], :quantity => match['quantity']
}
end

@api.resource(:activation_keys).call(:add_subscriptions, {
'id' => activationkey['id'],
Expand Down
9 changes: 9 additions & 0 deletions lib/hammer_cli_csv/utils/subscriptions.rb
Expand Up @@ -119,6 +119,15 @@ def matches_by_quantity(matches, line)
matches
end

def match_with_quantity_to_attach(match, line)
if line[SUBS_QUANTITY] && line[SUBS_QUANTITY] != 'Automatic' && !line[SUBS_QUANTITY].empty?
match['quantity'] = line[SUBS_QUANTITY]
else
match['quantity'] = -1
end
match
end

# Subscription amount, SKU, name, contract number, and account number separated by '|'
# or simply the subscription name.
def split_subscription_details(details)
Expand Down
2 changes: 2 additions & 0 deletions test/data/setup/activation-keys.csv
@@ -0,0 +1,2 @@
Name,Organization,Description,Limit,Environment,Content View,Host Collections,Auto-Attach,Service Level,Release Version,Subscriptions
ak1,Default Organization,,,,Default Organization View,"",Yes,,,"""1|RH0105260|Red Hat Enterprise Linux Server, Premium (8 sockets) (Unlimited guests)|10855292|5535485"""
33,461 changes: 16,760 additions & 16,701 deletions test/fixtures/vcr_cassettes/apipie.yml

Large diffs are not rendered by default.

73,528 changes: 37,639 additions & 35,889 deletions test/fixtures/vcr_cassettes/resources/activation_keys/create_and_update.yml

Large diffs are not rendered by default.

22,734 changes: 22,734 additions & 0 deletions test/fixtures/vcr_cassettes/resources/activation_keys/itemized_create_and_update.yml

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

109 changes: 109 additions & 0 deletions test/resources/activation_keys_test.rb
Expand Up @@ -66,5 +66,114 @@ def test_create_and_update

stop_vcr
end

def test_itemized_create_and_update
stdout,stderr = capture {
hammer.run(%W{--reload-cache csv activation-keys --verbose --file test/data/setup/activation-keys.csv})
}

start_vcr
set_user 'admin'

name = "ak1"
sub_name = "Red Hat Enterprise Linux Server, Premium (8 sockets) (Unlimited guests)"
quantity = 1

file = Tempfile.new('activation_keys_test')
file.write("Name,Organization,Description,Limit,Environment,Content View,Host\
Collections,Auto-Attach,Service Level,Release Version,Subscription\
Name,Subscription Type,Subscription Quantity,Subscription SKU,Subscription\
Contract,Subscription Account,Subscription Start,Subscription End\n")
file.write("#{name},Default Organization,,,,Default Organization View,\"\",Yes,,,\"#{sub_name}\",Red\
Hat,#{quantity},RH0105260,10855292,5535485,2016-01-05T05:00:00+00:00,2017-01-05T04:59:59+00:00")

file.rewind

# Attaching an integer quantity of a subscription
stdout,stderr = capture {
hammer.run(%W{--reload-cache csv activation-keys --verbose --itemized-subscriptions --file #{file.path}})
}
assert_equal '', stderr
assert_equal stdout[0..-2], "Updating subscriptions for activation key '#{name}'... attaching #{quantity} of '#{sub_name}'...done"

file.rewind

# Attaching already-attached subscription
stdout,stderr = capture {
hammer.run(%W{--reload-cache csv activation-keys --verbose --itemized-subscriptions --file #{file.path}})
}
assert_equal '', stderr
assert_equal stdout[0..-2], "Updating subscriptions for activation key '#{name}'... '#{sub_name}' already attached...done"

# Attaching automatic quantity with Automatic in quantity field
stdout,stderr = capture {
hammer.run(%W{--reload-cache csv activation-keys --verbose --file test/data/setup/activation-keys.csv})
}

file.rewind

file.write("Name,Organization,Description,Limit,Environment,Content View,Host\
Collections,Auto-Attach,Service Level,Release Version,Subscription\
Name,Subscription Type,Subscription Quantity,Subscription SKU,Subscription\
Contract,Subscription Account,Subscription Start,Subscription End\n")
file.write("#{name},Default Organization,,,,Default Organization View,\"\",Yes,,,\"#{sub_name}\",Red\
Hat,Automatic,RH0105260,10855292,5535485,2016-01-05T05:00:00+00:00,2017-01-05T04:59:59+00:00")

file.rewind

stdout,stderr = capture {
hammer.run(%W{--reload-cache csv activation-keys --verbose --itemized-subscriptions --file #{file.path}})
}
assert_equal '', stderr
assert_equal stdout[0..-2], "Updating subscriptions for activation key '#{name}'... attaching -1 of '#{sub_name}'...done"

# Attaching automatic quantity with nothing in quantity field
stdout,stderr = capture {
hammer.run(%W{--reload-cache csv activation-keys --verbose --file test/data/setup/activation-keys.csv})
}

file.rewind

file.write("Name,Organization,Description,Limit,Environment,Content View,Host\
Collections,Auto-Attach,Service Level,Release Version,Subscription\
Name,Subscription Type,Subscription Quantity,Subscription SKU,Subscription\
Contract,Subscription Account,Subscription Start,Subscription End\n")
file.write("#{name},Default Organization,,,,Default Organization View,\"\",Yes,,,\"#{sub_name}\",Red\
Hat,,RH0105260,10855292,5535485,2016-01-05T05:00:00+00:00,2017-01-05T04:59:59+00:00")

file.rewind

stdout,stderr = capture {
hammer.run(%W{--reload-cache csv activation-keys --verbose --itemized-subscriptions --file #{file.path}})
}
assert_equal '', stderr
assert_equal stdout[0..-2], "Updating subscriptions for activation key '#{name}'... attaching -1 of '#{sub_name}'...done"

# Attaching automatic quantity with "" in quantity field
stdout,stderr = capture {
hammer.run(%W{--reload-cache csv activation-keys --verbose --file test/data/setup/activation-keys.csv})
}

file.rewind

file.write("Name,Organization,Description,Limit,Environment,Content View,Host\
Collections,Auto-Attach,Service Level,Release Version,Subscription\
Name,Subscription Type,Subscription Quantity,Subscription SKU,Subscription\
Contract,Subscription Account,Subscription Start,Subscription End\n")
file.write("#{name},Default Organization,,,,Default Organization View,\"\",Yes,,,\"#{sub_name}\",Red\
Hat,\"\",RH0105260,10855292,5535485,2016-01-05T05:00:00+00:00,2017-01-05T04:59:59+00:00")

file.rewind

stdout,stderr = capture {
hammer.run(%W{--reload-cache csv activation-keys --verbose --itemized-subscriptions --file #{file.path}})
}
assert_equal '', stderr
assert_equal stdout[0..-2], "Updating subscriptions for activation key '#{name}'... attaching -1 of '#{sub_name}'...done"

file.unlink

stop_vcr
end
end
end