Bug 751033 - adding subscriptions to activation key - exception thrown
Summary: adding subscriptions to activation key - exception thrown
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Satellite
Classification: Red Hat
Component: katello-agent
Version: 6.0.0
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: Unspecified
Assignee: Lukas Zapletal
QA Contact: Katello QA List
URL:
Whiteboard:
Depends On:
Blocks: katello-blockers
TreeView+ depends on / blocked
 
Reported: 2011-11-03 10:04 UTC by Garik Khachikyan
Modified: 2019-09-26 13:23 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-08-22 18:04:20 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
Katello production.log (21.93 KB, text/x-log)
2011-11-04 10:26 UTC, Garik Khachikyan
no flags Details

Description Garik Khachikyan 2011-11-03 10:04:46 UTC
Description of problem:
On recent version of Katello it is not possible to add subscription to the activation key.
There is thrown an error:
---
undefined method `cp_oauth_header' for nil:NilClass


Version-Release number of selected component (if applicable):
katello-cli-0.1.10-1.git.1062.80beb3d.el6.noarch
katello-0.1.97-1.git.126.6dec5c9.el6.x86_64

How reproducible:
always

Steps to Reproduce:
Under katello shell apply following:
org create --name org1
provider create --type custom --name provider1 --org org1
product create --org org1 --name product1 --provider provider1
repo create --org org1 --product product1 --url http://repos.fedorapeople.org/repos/pulp/pulp/6Server/x86_64/ --name repo1
provider synchronize --name provider1 --org org1
environment create --name dev --prior Locker --org org1
product promote --name product1 --environment dev --org org1
org subscriptions --name org1 (pick the poolid)
activation_key create --org org1 --environment dev --name ak1
activation_key update --add_subscription <that_poolid> --org org1 --name ak1
  
Actual results:
error-244: undefined method `cp_oauth_header' for nil:NilClass

Expected results:
No error, activation key adds the subscription specified

Additional info:

Comment 1 Lukas Zapletal 2011-11-03 10:36:03 UTC
Taking

Comment 2 Lukas Zapletal 2011-11-03 11:04:32 UTC
I am not able to reproduce with current master. Subscription is added there:

katello> activation_key info --name ak1 --org org1
--------------------------------------------------------------------------------
                              Activation Key Info
--------------------------------------------------------------------------------

Id:                 1
Name:               ak1
Description:
    None
Environment Id:     3
System Template Id: None
Pools:
    [ ff80808133690ec201336913a9e30006 ]

Here is a log of the call which failed for you.

Started POST "/api/activation_keys/1/pools" for 127.0.0.1 at Thu Nov 03 11:59:33 +0100 2011
  Processing by Api::ActivationKeysController#add_pool as JSON
  Parameters: {"poolid"=>"ff80808133690ec201336913a9e30006", "id"=>"1"}
Setting locale: en
Warden is authenticating admin against database
Setting current user thread-local variable to admin
Resource GET request: /candlepin/pools/ff80808133690ec201336913a9e30006
Headers: {"accept":"application/json","content-type":"application/json","cp-user":"admin"}
Body: {}
Processing response: 200
{"id":"ff80808133690ec201336913a9e30006","attributes":[],"owner":{"href":"/owners/org1","id":"ff80808133690ec20133691385ba0003","key":"org1","displayName":"org1"},"providedProducts":[],"startDate":"2011-11-03T00:00:00.000+0000","endDate":"2041-10-26T00:00:00.000+0000","productName":"product1","quantity":-1,"contractNumber":"","accountNumber":"","productId":"1320317855903","subscriptionId":"ff80808133690ec201336913a8fb0005","consumed":0,"sourceEntitlement":null,"href":"/pools/ff80808133690ec201336913a9e30006","activeSubscription":true,"restrictedToUsername":null,"productAttributes":[],"updated":"2011-11-03T10:57:36.227+0000","created":"2011-11-03T10:57:36.227+0000"}
Authorizing admin for api/activation_keys/add_pool
Setting current user thread-local variable to nil
Completed 200 OK in 929ms (Views: 6.7ms | ActiveRecord: 68.1ms)

WFM, please provide full log or reproducer box and reopen then.

Comment 3 Lukas Zapletal 2011-11-03 12:59:26 UTC
Working gh -- 8c20cbb6d679d1eb93b2800609f03cfe4440d944

Comment 4 Garik Khachikyan 2011-11-04 10:25:40 UTC
# REOPEN

I have to reopen the issue (as it still fails for me):

logs would be attached below.

Packages the checks were performed:
candlepin-0.4.25-1.el6.noarch
pulp-0.0.237-5.el6.noarch
katello-0.1.98-1.git.13.5a8e341.el6.x86_64
katello-cli-0.1.10-1.git.1114.377e093.el6.noarch

Comment 5 Garik Khachikyan 2011-11-04 10:26:35 UTC
Created attachment 531742 [details]
Katello production.log

Katello is built right from git master.

Comment 6 Garik Khachikyan 2011-11-09 11:12:13 UTC
checked the scenario in comment#0 - the same still exists on recent/latest katello.
Version: katello-0.1.99-1.git.89.bc81fa8.el6.x86_64

Comment 7 Lukas Zapletal 2012-01-02 11:38:34 UTC
After three hours of debugging I found ApiController.require_user method is not getting called. After more debugging it is working again without any change. Very strange.

Comment 8 Lukas Zapletal 2012-01-02 12:09:24 UTC
So my next finding is - it works without any problem when in development mode, in the production mode I see the same error. Cool...

Comment 9 Lukas Zapletal 2012-01-02 12:27:09 UTC
More details:

katello> activation_key update --org org1 --name ak1 --add_subscription ff808081349e3e6501349e4d9f15000b
unauthenticated to call a backend engine

I have added

    logger.info "REQUIRE USER"

to the ApiController.require_user method. As we can see it is NOT called for the last POST:

Started GET "/katello///api/organizations/org1" for 127.0.0.1 at Mon Jan 02 13:25:50 +0100 2012
  Processing by Api::OrganizationsController#show as JSON
  Parameters: {"id"=>"org1"}
REQUIRE USER
Completed 200 OK in 230ms (Views: 4.7ms | ActiveRecord: 11.0ms)


Started GET "/katello///api/organizations/org1/activation_keys/?name=ak1" for 127.0.0.1 at Mon Jan 02 13:25:50 +0100 2012
  Processing by Api::ActivationKeysController#index as JSON
  Parameters: {"name"=>"ak1", "organization_id"=>"org1"}
REQUIRE USER
Completed 200 OK in 44ms (Views: 21.6ms | ActiveRecord: 8.8ms)


Started PUT "/katello///api/activation_keys/1/" for 127.0.0.1 at Mon Jan 02 13:25:50 +0100 2012
  Processing by Api::ActivationKeysController#update as JSON
  Parameters: {"activation_key"=>{}, "id"=>"1"}
REQUIRE USER
Completed 200 OK in 47ms (Views: 3.5ms | ActiveRecord: 8.6ms)


Started POST "/katello///api/activation_keys/1/pools" for 127.0.0.1 at Mon Jan 02 13:25:51 +0100 2012
  Processing by Api::ActivationKeysController#add_pool as JSON
  Parameters: {"poolid"=>"ff808081349e3e6501349e4d9f15000b", "id"=>"1"}
Errors::UserNotSet: unauthenticated to call a backend engine
/usr/share/katello/app/models/user.rb:332:in `cp_oauth_header'
/usr/share/katello/lib/resources/candlepin.rb:62:in `default_headers'
/usr/share/katello/lib/resources/candlepin.rb:295:in `get'
/usr/share/katello/app/models/glue/candlepin/pool.rb:25:in `included'
/usr/share/katello/app/models/lazy_accessor.rb:134:in `instance_eval'
/usr/share/katello/app/models/lazy_accessor.rb:134:in `run_initializer'
/usr/share/katello/app/models/lazy_accessor.rb:75:in `owner'
/usr/share/katello/app/models/glue/candlepin/pool.rb:74:in `organization'
/usr/share/katello/app/models/glue/candlepin/pool.rb:40:in `find_by_organization_and_id'
/usr/share/katello/app/controllers/api/activation_keys_controller.rb:103:in `find_pool'
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.10/lib/active_support/callbacks.rb:437:in `_run__1939669248__process_action__508642999__callbacks'
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.10/lib/active_support/callbacks.rb:410:in `send'
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.10/lib/active_support/callbacks.rb:410:in `_run_process_action_callbacks'
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.10/lib/active_support/callbacks.rb:94:in `send'
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.10/lib/active_support/callbacks.rb:94:in `run_callbacks'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/abstract_controller/callbacks.rb:17:in `process_action'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_controller/metal/rescue.rb:17:in `process_action'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.10/lib/active_support/notifications.rb:52:in `instrument'
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.10/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.10/lib/active_support/notifications.rb:52:in `instrument'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_controller/metal/instrumentation.rb:29:in `process_action'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/abstract_controller/base.rb:119:in `process'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/abstract_controller/rendering.rb:41:in `process'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_controller/metal.rb:138:in `dispatch'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_controller/metal.rb:178:in `action'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/routing/route_set.rb:62:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/routing/route_set.rb:62:in `dispatch'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/routing/route_set.rb:27:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-mount-0.7.1/lib/rack/mount/route_set.rb:150:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-mount-0.7.1/lib/rack/mount/code_generation.rb:93:in `recognize'
/usr/lib/ruby/gems/1.8/gems/rack-mount-0.7.1/lib/rack/mount/code_generation.rb:82:in `optimized_each'
/usr/lib/ruby/gems/1.8/gems/rack-mount-0.7.1/lib/rack/mount/code_generation.rb:92:in `recognize'
/usr/lib/ruby/gems/1.8/gems/rack-mount-0.7.1/lib/rack/mount/route_set.rb:141:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/routing/route_set.rb:493:in `call'
/usr/lib/ruby/gems/1.8/gems/warden-1.0.3/lib/warden/manager.rb:35:in `call'
/usr/lib/ruby/gems/1.8/gems/warden-1.0.3/lib/warden/manager.rb:34:in `catch'
/usr/lib/ruby/gems/1.8/gems/warden-1.0.3/lib/warden/manager.rb:34:in `call'
/usr/lib/ruby/gems/1.8/gems/sass-3.1.7/lib/sass/../sass/plugin/rack.rb:54:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/head.rb:14:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-1.3.0/lib/rack/methodoverride.rb:24:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/params_parser.rb:21:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/flash.rb:182:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/session/abstract_store.rb:149:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/cookies.rb:302:in `call'
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.10/lib/active_record/query_cache.rb:32:in `call'
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract/query_cache.rb:28:in `cache'
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.10/lib/active_record/query_cache.rb:12:in `cache'
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.10/lib/active_record/query_cache.rb:31:in `call'
/usr/lib/ruby/gems/1.8/gems/activerecord-3.0.10/lib/active_record/connection_adapters/abstract/connection_pool.rb:354:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/callbacks.rb:46:in `call'
/usr/lib/ruby/gems/1.8/gems/activesupport-3.0.10/lib/active_support/callbacks.rb:416:in `_run_call_callbacks'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/callbacks.rb:44:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-1.3.0/lib/rack/sendfile.rb:102:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/remote_ip.rb:48:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/show_exceptions.rb:47:in `call'
/usr/lib/ruby/gems/1.8/gems/railties-3.0.10/lib/rails/rack/logger.rb:13:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-1.3.0/lib/rack/runtime.rb:17:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-1.3.0/lib/rack/lock.rb:34:in `call'
/usr/lib/ruby/gems/1.8/gems/railties-3.0.10/lib/rails/application.rb:168:in `call'
/usr/lib/ruby/gems/1.8/gems/railties-3.0.10/lib/rails/application.rb:77:in `send'
/usr/lib/ruby/gems/1.8/gems/railties-3.0.10/lib/rails/application.rb:77:in `method_missing'
/usr/lib/ruby/gems/1.8/gems/rack-1.3.0/lib/rack/urlmap.rb:52:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-1.3.0/lib/rack/urlmap.rb:46:in `each'
/usr/lib/ruby/gems/1.8/gems/rack-1.3.0/lib/rack/urlmap.rb:46:in `call'
/usr/lib/ruby/gems/1.8/gems/thin-1.2.11/lib/thin/connection.rb:84:in `pre_process'
/usr/lib/ruby/gems/1.8/gems/thin-1.2.11/lib/thin/connection.rb:82:in `catch'
/usr/lib/ruby/gems/1.8/gems/thin-1.2.11/lib/thin/connection.rb:82:in `pre_process'
/usr/lib/ruby/gems/1.8/gems/thin-1.2.11/lib/thin/connection.rb:57:in `process'
/usr/lib/ruby/gems/1.8/gems/thin-1.2.11/lib/thin/connection.rb:42:in `receive_data'
/usr/lib/ruby/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine'
/usr/lib/ruby/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run'
/usr/lib/ruby/gems/1.8/gems/thin-1.2.11/lib/thin/backends/base.rb:61:in `start'
/usr/lib/ruby/gems/1.8/gems/thin-1.2.11/lib/thin/server.rb:159:in `start'
/usr/lib/ruby/gems/1.8/gems/thin-1.2.11/lib/thin/controllers/controller.rb:86:in `start'
/usr/lib/ruby/gems/1.8/gems/thin-1.2.11/lib/thin/runner.rb:185:in `send'
/usr/lib/ruby/gems/1.8/gems/thin-1.2.11/lib/thin/runner.rb:185:in `run_command'
/usr/lib/ruby/gems/1.8/gems/thin-1.2.11/lib/thin/runner.rb:151:in `run!'
/usr/lib/ruby/gems/1.8/gems/thin-1.2.11/bin/thin:6
/usr/bin/thin:19:in `load'
/usr/bin/thin:19
Completed 403 Forbidden in 9ms (Views: 0.6ms | ActiveRecord: 2.3ms)

Comment 10 Lukas Zapletal 2012-01-02 13:38:00 UTC
commit f42b46315ace7b96551ec20fd640824dfedb78d6
Refs: <origin/HEAD>, <origin/master>, katello-0.1.156-1-2-gf42b463
Author:     Lukas Zapletal <lzap+git>
AuthorDate: Mon Jan 2 14:08:23 2012 +0100
Commit:     Lukas Zapletal <lzap+git>
CommitDate: Mon Jan 2 14:08:23 2012 +0100

Comment 11 Kedar Bidarkar 2012-01-06 10:54:44 UTC
[root@szasxd pulp]# katello --username admin --password admin activation_key update --add_subscription 8ac149d334a786380134abbfa6a70096 --org ACME_Corporation --name 12345007
Successfully updated activation key [ 12345007 ]


[root@sxazsd pulp]# katello --username admin --password admin activation_key list --org ACME_Corporation
--------------------------------------------------------------------------------
                              Activation Key List

 Id   Name       Description   Environment Id   System Template Id  
--------------------------------------------------------------------------------
 1    12345007   None          4                None                

 
[root@xsdxs pulp]# katello --username admin --password admin activation_key info --name 12345007 --org ACME_Corporation
--------------------------------------------------------------------------------
                              Activation Key Info
--------------------------------------------------------------------------------

Id:                 1
Name:               12345007
Description:
    None
Environment Id:     4
System Template Id: None
Pools:
    [ 8ac149d334a786380134abbfa6a70096 ]


Note You need to log in before you can comment on or make changes to this bug.