Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
Red Hat Satellite engineering is moving the tracking of its product development work on Satellite to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "Satellite project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs will be migrated starting at the end of May. If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "Satellite project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/SAT-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.

Bug 956650

Summary: katello-configure w/ user name containing @ fails during creation of pulp user
Product: Red Hat Satellite Reporter: Tom McKay <tomckay>
Component: Content ManagementAssignee: David Davis <daviddavis>
Status: CLOSED NOTABUG QA Contact: Corey Welton <cwelton>
Severity: high Docs Contact:
Priority: unspecified    
Version: NightlyCC: asaleh, cwelton, gkhachik, jmontleo, mmccune, omaciel
Target Milestone: UnspecifiedKeywords: Regression, Triaged
Target Release: Unused   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1016761 (view as bug list) Environment:
Last Closed: 2014-05-14 14:06:32 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:    
Bug Blocks: 1016761    

Description Tom McKay 2013-04-25 11:30:07 UTC
Running

   katello-configure --user-name=thomasmckay --user-pass=123 --user-email=thomasmckay --org-name=Katello --reset-data=YES

fails.

db_seed.log

/opt/rh/ruby193/root/usr/share/rubygems/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead.
** Invoke seed_with_logging (first_time)
** Invoke db:seed (first_time)
** Execute db:seed
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:abort_if_pending_migrations
rake aborted!
500 Internal Server Error
/opt/rh/ruby193/root/usr/share/gems/gems/rest-client-1.6.1/lib/restclient/abstract_response.rb:48:in `return!'
/opt/rh/ruby193/root/usr/share/gems/gems/runcible-0.4.1/lib/runcible/base.rb:93:in `block in get_response'
/opt/rh/ruby193/root/usr/share/gems/gems/rest-client-1.6.1/lib/restclient/request.rb:218:in `call'
/opt/rh/ruby193/root/usr/share/gems/gems/rest-client-1.6.1/lib/restclient/request.rb:218:in `process_result'
/opt/rh/ruby193/root/usr/share/gems/gems/rest-client-1.6.1/lib/restclient/request.rb:169:in `block in transmit'
/opt/rh/ruby193/root/usr/share/ruby/net/http.rb:745:in `start'
/opt/rh/ruby193/root/usr/share/gems/gems/rest-client-1.6.1/lib/restclient/request.rb:166:in `transmit'
/opt/rh/ruby193/root/usr/share/gems/gems/rest-client-1.6.1/lib/restclient/request.rb:60:in `execute'
/opt/rh/ruby193/root/usr/share/gems/gems/rest-client-1.6.1/lib/restclient/request.rb:31:in `execute'
/opt/rh/ruby193/root/usr/share/gems/gems/rest-client-1.6.1/lib/restclient/resource.rb:59:in `post'
/opt/rh/ruby193/root/usr/share/gems/gems/runcible-0.4.1/lib/runcible/base.rb:92:in `get_response'
/opt/rh/ruby193/root/usr/share/gems/gems/runcible-0.4.1/lib/runcible/base.rb:83:in `call'
/opt/rh/ruby193/root/usr/share/gems/gems/runcible-0.4.1/lib/runcible/resources/user.rb:52:in `create'
/usr/share/katello/app/models/glue/pulp/user.rb:43:in `set_pulp_user'
/usr/share/katello/app/models/glue.rb:174:in `execute'
/usr/share/katello/app/models/glue.rb:124:in `block in process'
/usr/share/katello/app/models/glue.rb:111:in `each'
/usr/share/katello/app/models/glue.rb:111:in `process'
/usr/share/katello/app/models/glue.rb:35:in `on_save'
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:214:in `_conditional_callback_around_1505'
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:414:in `_run__2383710449456458001__save__1080593667653249338__callbacks'
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:405:in `__run_callback'
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:385:in `_run_save_callbacks'
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/callbacks.rb:81:in `run_callbacks'
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/callbacks.rb:264:in `create_or_update'
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/persistence.rb:104:in `save!'
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/validations.rb:56:in `save!'
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/attribute_methods/dirty.rb:33:in `save!'
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:246:in `block in save!'
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:295:in `block in with_transaction_returning_status'
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction'
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:208:in `transaction'
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:293:in `with_transaction_returning_status'
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/transactions.rb:246:in `save!'
/usr/share/katello/app/lib/lazy_accessor.rb:108:in `save!'
/usr/share/katello/db/seeds.rb:40:in `<top (required)>'
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/dependencies.rb:245:in `load'
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/dependencies.rb:245:in `block in load'
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/dependencies.rb:236:in `load_dependency'
/opt/rh/ruby193/root/usr/share/gems/gems/activesupport-3.2.8/lib/active_support/dependencies.rb:245:in `load'
/opt/rh/ruby193/root/usr/share/gems/gems/railties-3.2.8/lib/rails/engine.rb:520:in `load_seed'
/opt/rh/ruby193/root/usr/share/gems/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:309:in `block (2 levels) in <top (required)>'
/opt/rh/ruby193/root/usr/share/ruby/rake/task.rb:205:in `call'
/opt/rh/ruby193/root/usr/share/ruby/rake/task.rb:205:in `block in execute'
/opt/rh/ruby193/root/usr/share/ruby/rake/task.rb:200:in `each'
/opt/rh/ruby193/root/usr/share/ruby/rake/task.rb:200:in `execute'
/opt/rh/ruby193/root/usr/share/ruby/rake/task.rb:158:in `block in invoke_with_call_chain'
/opt/rh/ruby193/root/usr/share/ruby/monitor.rb:211:in `mon_synchronize'
/opt/rh/ruby193/root/usr/share/ruby/rake/task.rb:151:in `invoke_with_call_chain'
/opt/rh/ruby193/root/usr/share/ruby/rake/task.rb:176:in `block in invoke_prerequisites'
/opt/rh/ruby193/root/usr/share/ruby/rake/task.rb:174:in `each'
/opt/rh/ruby193/root/usr/share/ruby/rake/task.rb:174:in `invoke_prerequisites'
/opt/rh/ruby193/root/usr/share/ruby/rake/task.rb:157:in `block in invoke_with_call_chain'
/opt/rh/ruby193/root/usr/share/ruby/monitor.rb:211:in `mon_synchronize'
/opt/rh/ruby193/root/usr/share/ruby/rake/task.rb:151:in `invoke_with_call_chain'
/opt/rh/ruby193/root/usr/share/ruby/rake/task.rb:144:in `invoke'
/opt/rh/ruby193/root/usr/share/ruby/rake/application.rb:116:in `invoke_task'
/opt/rh/ruby193/root/usr/share/ruby/rake/application.rb:94:in `block (2 levels) in top_level'
/opt/rh/ruby193/root/usr/share/ruby/rake/application.rb:94:in `each'
/opt/rh/ruby193/root/usr/share/ruby/rake/application.rb:94:in `block in top_level'
/opt/rh/ruby193/root/usr/share/ruby/rake/application.rb:133:in `standard_exception_handling'
/opt/rh/ruby193/root/usr/share/ruby/rake/application.rb:88:in `top_level'
/opt/rh/ruby193/root/usr/share/ruby/rake/application.rb:66:in `block in run'
/opt/rh/ruby193/root/usr/share/ruby/rake/application.rb:133:in `standard_exception_handling'
/opt/rh/ruby193/root/usr/share/ruby/rake/application.rb:63:in `run'
/opt/rh/ruby193/root/usr/bin/rake:32:in `<main>'
Tasks: TOP => seed_with_logging => db:seed

Comment 1 Mike McCune 2013-06-19 02:41:16 UTC
this is definitely still present in 6.0.1 SNAP5.  would like to propose moving to MDP2

Comment 2 Og Maciel 2013-06-19 03:09:47 UTC
ACK for 6.0.2

Comment 3 David Davis 2013-10-08 15:58:45 UTC
Looks like an error in pulp:

2013-10-08 11:53:42,587 pulp.server.webservices.application:CRITICAL: *************************************************************
2013-10-08 11:53:42,588 pulp.server.webservices.application:ERROR: The Pulp server encountered an unexpected failure during initialization
Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 177, in wsgi_application
    _initialize_pulp()
  File "/usr/lib/python2.6/site-packages/pulp/server/webservices/application.py", line 138, in _initialize_pulp
    user_manager.ensure_admin()
  File "/usr/lib/python2.6/site-packages/pulp/server/managers/auth/user/cud.py", line 215, in ensure_admin
    admin = factory.user_manager().create_user(login=default_login, password=default_password)
  File "/usr/lib/python2.6/site-packages/pulp/server/managers/auth/user/cud.py", line 76, in create_user
    raise InvalidValue(invalid_values)
InvalidValue: Invalid properties: ['login']
2013-10-08 11:53:42,589 pulp.server.webservices.application:CRITICAL: *************************************************************

Comment 4 David Davis 2013-10-10 17:38:24 UTC
katello-installer PR

https://github.com/Katello/katello-installer/pull/54

katello PR

https://github.com/Katello/katello/pull/3157

Comment 5 David Davis 2013-10-10 21:23:56 UTC
katello-installer

fe1742ffafa4b53719097d068302b71652326297

956650: Escaping pulp login



katello

41babac72a3d418ba271ded07ad2b1ea99ae5bcc

956650: Escape the remote_id for pulp

Comment 8 Garik Khachikyan 2013-10-21 14:32:02 UTC
# REOPEN

making run of "katello-configure --db-name=katello --db-user=katello --db-password=katello --deployment=katello --user-name="gkhachik" --user-pass="asdf\!" --user-email=gkhachik --katello-web-workers=2 --org-name=Garik --job-workers=2 --es-min-mem=512M --es-max-mem=1024M --reset-data=YES --no-bars -b" I got $? == 0 for this, ... BUT:

===
subscription-manager orgs --username "gkhachik" --password "asd\!" fails:

"Resource not found on the server"
===

log: /var/log/rhsm/rhsm.log
---
2013-10-21 10:23:21,091 [DEBUG]  @connection.py:415 - Making request: GET /katello/api/users/gkhachik%40redhat.com/owners
2013-10-21 10:23:21,185 [DEBUG]  @connection.py:434 - Response status: 404
2013-10-21 10:23:21,186 [ERROR]  @managercli.py:669 - Resource not found on the server
Traceback (most recent call last):
  File "/usr/share/rhsm/subscription_manager/managercli.py", line 655, in _do_command
    owners = self.cp.getOwnerList(self.username)
  File "/usr/lib64/python2.6/site-packages/rhsm/connection.py", line 789, in getOwnerList
    return self.conn.request_get(method)
  File "/usr/lib64/python2.6/site-packages/rhsm/connection.py", line 481, in request_get
    return self._request("GET", method)
  File "/usr/lib64/python2.6/site-packages/rhsm/connection.py", line 443, in _request
    self.validateResponse(result)
  File "/usr/lib64/python2.6/site-packages/rhsm/connection.py", line 468, in validateResponse
    raise RestlibException(response['status'], error_msg)
RestlibException: Resource not found on the server
2013-10-21 10:23:21,191 [ERROR]  @managercli.py:670 - Error: Unable to retrieve org list from server: Resource not found on the server

===
checked on:
* apr-util-ldap-1.3.9-3.el6_0.1.x86_64
* candlepin-0.8.25-1.el6sam.noarch
* candlepin-scl-1-5.el6_4.noarch
* candlepin-scl-quartz-2.1.5-5.el6_4.noarch
* candlepin-scl-rhino-1.7R3-1.el6_4.noarch
* candlepin-scl-runtime-1-5.el6_4.noarch
* candlepin-selinux-0.8.25-1.el6sam.noarch
* candlepin-tomcat6-0.8.25-1.el6sam.noarch
* elasticsearch-0.19.9-8.el6sat.noarch
* foreman-1.3.0-18.el6sat.noarch
* foreman-compute-1.3.0-18.el6sat.noarch
* foreman-libvirt-1.3.0-18.el6sat.noarch
* foreman-postgresql-1.3.0-18.el6sat.noarch
* foreman-proxy-1.3.0-3.el6sat.noarch
* katello-1.4.6-39.el6sat.noarch
* katello-all-1.4.6-39.el6sat.noarch
* katello-candlepin-cert-key-pair-1.0-1.noarch
* katello-certs-tools-1.4.4-1.el6sat.noarch
* katello-cli-1.4.3-24.el6sat.noarch
* katello-cli-common-1.4.3-24.el6sat.noarch
* katello-common-1.4.6-39.el6sat.noarch
* katello-configure-1.4.7-5.el6sat.noarch
* katello-configure-foreman-1.4.7-5.el6sat.noarch
* katello-configure-foreman-proxy-1.4.7-5.el6sat.noarch
* katello-foreman-all-1.4.6-39.el6sat.noarch
* katello-glue-candlepin-1.4.6-39.el6sat.noarch
* katello-glue-elasticsearch-1.4.6-39.el6sat.noarch
* katello-glue-pulp-1.4.6-39.el6sat.noarch
* katello-qpid-broker-key-pair-1.0-1.noarch
* katello-qpid-client-key-pair-1.0-1.noarch
* katello-selinux-1.4.4-4.el6sat.noarch
* openldap-2.4.23-31.el6.x86_64
* pulp-katello-plugins-0.2-1.el6sat.noarch
* pulp-nodes-common-2.3.0-0.22.beta.el6sat.noarch
* pulp-nodes-parent-2.3.0-0.22.beta.el6sat.noarch
* pulp-puppet-plugins-2.3.0-0.22.beta.el6sat.noarch
* pulp-rpm-plugins-2.3.0-0.22.beta.el6sat.noarch
* pulp-selinux-2.3.0-0.22.beta.el6sat.noarch
* pulp-server-2.3.0-0.22.beta.el6sat.noarch
* python-ldap-2.3.10-1.el6.x86_64
* ruby193-rubygem-ldap_fluff-0.2.2-2.el6sat.noarch
* ruby193-rubygem-net-ldap-0.3.1-3.el6sat.noarch
* ruby193-rubygem-runcible-1.0.7-1.el6sat.noarch
* signo-0.0.22-2.el6sat.noarch
* signo-katello-0.0.22-2.el6sat.noarch

Comment 9 David Davis 2013-10-21 16:58:20 UTC
Garik, did you test this also with a user without @? And you're not hitting this 404 when your user doesn't have @?

Comment 10 Garik Khachikyan 2013-10-22 07:39:31 UTC
@David, of course: we are doing it tons of times during our QA testing (i mean both install and reset of data).

Comment 11 David Davis 2013-10-22 13:16:53 UTC
Garik, thanks for confirming.

Comment 12 David Davis 2013-10-25 15:24:36 UTC
I found that comment8 is not related to this bug. If you install a system without using a user who has @ in their name but then create a user that has an @ in their username and call "subscription-manager orgs", it fails as well.

For example, I created the admin user with username admin and then went in and created a new user admin. Here's the call from subscription manager:

subscription-manager orgs --username "admin" --password "admin"
Resource not found on the server

Here's a curl request to the url subscription manager is calling:

curl http://127.0.0.1:3000/katello/api/users/admin@mail.com/owners -u "admin:admin"
{"displayMessage":"Resource not found on the server","errors":["Not found"]}%   

Here's the rails log:

[ INFO 2013-10-25 11:17:35 app] Started GET "/katello/api/users/admin/owners" for 127.0.0.1 at 2013-10-25 11:17:35 -0400
[ INFO 2013-10-25 11:17:35 app] Processing by Api::V1::ErrorsController#render_404 as */*
[ INFO 2013-10-25 11:17:35 app]   Parameters: {"a"=>"/users/admin/owners"}
[DEBUG 2013-10-25 11:17:35 app] Setting locale: en
[DEBUG 2013-10-25 11:17:35 app] Setting current user thread-local variable to nil
[DEBUG 2013-10-25 11:17:35 app] Checking  params  for api/v1/errors/render_404
[DEBUG 2013-10-25 11:17:35 app] Setting current user thread-local variable to nil
[ INFO 2013-10-25 11:17:35 app] Completed 404 Not Found in 3ms (Views: 0.8ms | ActiveRecord: 0.0ms)
[DEBUG 2013-10-25 11:17:35 app] With body: {"displayMessage":"Resource not found on the server","errors":["Not found"]}


Here's a curl request for my initial user admin to show that the URL does in fact work:

curl http://127.0.0.1:3000/katello/api/users/admin/owners -u "admin:admin"
[{"key":"ACME_Corporation","displayName":"ACME_Corporation"}]

Here's the rails log:

[ INFO 2013-10-25 11:17:55 app] Started GET "/katello/api/users/admin/owners" for 127.0.0.1 at 2013-10-25 11:17:55 -0400
[ INFO 2013-10-25 11:17:55 app] Processing by Api::V1::UsersController#list_owners as */*
[ INFO 2013-10-25 11:17:55 app]   Parameters: {"username"=>"admin"}
[DEBUG 2013-10-25 11:17:55 app] Setting locale: en
[DEBUG 2013-10-25 11:17:55 app] Warden is authenticating admin against database
[DEBUG 2013-10-25 11:17:55 app] User admin authenticated: database
[DEBUG 2013-10-25 11:17:55 app] Setting current user thread-local variable to admin
[DEBUG 2013-10-25 11:17:55 app] Checking  params  for api/v1/users/list_owners
[DEBUG 2013-10-25 11:17:55 app] Authorizing admin for api/v1/users/list_owners
[DEBUG 2013-10-25 11:17:55 app] Setting current user thread-local variable to nil
[ INFO 2013-10-25 11:17:55 app] Completed 200 OK in 35ms (Views: 0.8ms | ActiveRecord: 7.6ms)
[DEBUG 2013-10-25 11:17:55 app] With body: [{"key":"ACME_Corporation","displayName":"ACME_Corporation"}]

Comment 13 David Davis 2013-10-25 15:29:35 UTC
I went ahead and created a bug for comment#12 

https://bugzilla.redhat.com/show_bug.cgi?id=1023518

Comment 17 Adam Saleh 2014-05-14 14:06:32 UTC
No longer relevant, katello-installer doesn't allow for assigning the admin's name.