Bug 956650 - katello-configure w/ user name containing @ fails during creation of pulp user
Summary: katello-configure w/ user name containing @ fails during creation of pulp user
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Red Hat Satellite
Classification: Red Hat
Component: Content Management
Version: Nightly
Hardware: Unspecified
OS: Unspecified
unspecified
high
Target Milestone: Unspecified
Assignee: David Davis
QA Contact: Corey Welton
URL:
Whiteboard:
Depends On:
Blocks: 1016761
TreeView+ depends on / blocked
 
Reported: 2013-04-25 11:30 UTC by Tom McKay
Modified: 2014-05-14 14:06 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
: 1016761 (view as bug list)
Environment:
Last Closed: 2014-05-14 14:06:32 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

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.


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