a not-so-technical user's experience with Conductor

Greg Blomquist gblomqui at redhat.com
Mon Oct 22 15:34:01 UTC 2012


----- Original Message -----
> From: "Martin Povolny" <mpovolny at redhat.com>
> To: aeolus-devel at lists.fedorahosted.org
> Sent: Monday, October 22, 2012 4:56:26 AM
> Subject: a not-so-technical user's experience with Conductor
> 
> Setup: Fedora 16 RPMs, on top of that Conductor from githup so that I
> don't crash into what is already fixed.
> 
> Story:
> 
> ---------------------------
> 
> Log in, adding a provider
> 
> http://192.168.122.174:3000/providers
> #1 error: "Provider name must start with 'ec2-'"
> 
> WTF? why? the UI allows any name! (was told, this is fixed somewhere)
> 
> Under Providers I click "Provider Accounts" and start adding an
> account:
> 1 error prohibited this Provider Account from being saved
> 
> #2 error: "Cannot add the Provider Account." -- WTF message? tell's
> me nothing
> 
> Conductor (Rails) log, tells me nothing, but a quick look into
> /var/log/messages!! to find out I forgot to disable selinux
> (DC already fixed the logging AFAIK)
> 
> Next I Navigate to Content; I see a catalog "Default" I click that
> 
> I see "New Deployable"
> 
> Now I remember my previous experience I know, that to make a
> deployable I need an Image!
> 
> #3 problem: the UI should tell me I need an image or I'm lost at this
> point
> 
> So I navigate back, looking for a place to work with images. Image --
> that is probably "Content" so look there, not in "Environment"
> 
> nothing there
> 
> ok, I look into "Environments", it brings me to
> http://192.168.122.174:3000/pool_families (pool_families) ;-)
> 
> Wow, theres a greyed-out "Images" let's click
> 
> Now failed again I see an empty list,
> 
> #4 problem NO BUTTON to create an image from listing of images! WTF?
> 
> Ok, back to Environments, it has to be there, if it's not under
> Images
> 
> "Default" is clickable --> click and go to
> "http://192.168.122.174:3000/pools/1"
> 
> There's a text "Catalog Images" I click that it resembles "Images" I
> need an image to make a deployable, remember?
> 
> #5 problem shoot me! -- no link or button "New image" :-(
> 
> Back to http://192.168.122.174:3000/pool_families now I notice
> "Import Image", "New Image"
> 
> I choose "New Image" -->
>  http://192.168.122.174:3000/images/new?environment=1
> 
> There I read: "Choose one of the following options to upload or
> import an image into the "default Environment"."
> Below is written "Choose an Image Template file:" but who reads all
> the text?
> 
> As an average linux user who is prompted for an image I provide an
> ISO image of the latest Ubuntu.
> 
> #6 problem: after a dozen of minutes I get an empty browser window;
> the Rails log reads:
> 
>   Rendered layouts/_admin_nav.html.haml (19.5ms)
>   Rendered images/edit_xml.html.haml within layouts/application
>   (365004.5ms)
>   Rendered layouts/_new_notification.html.haml (45.3ms)
>   Rendered layouts/_footer.html.haml (882.3ms)
>   Rendered layouts/converge-ui/_header_layout.haml (4.9ms)
>   Rendered layouts/converge-ui/_base.haml (41565.7ms)
>   Rendered layouts/converge-ui/shell_layout.haml (201594.5ms)
> Completed 200 OK in 753340ms (Views: 743206.8ms | ActiveRecord:
> 5.9ms)
> terminate called after throwing an instance of 'std::runtime_error'
>   what():  no allocation for outbound data
> Aborted
> 
> hint: 1) add a size limit; 2) guess content type before starting XML
> parser
> 
> I restart Conductor, lost again -- where do I add an image?
> 
> #7 problem: in env/images there's a link to add image but in the list
> of images there's none; that is not intuitive
> 
> Next I manage to put in a valid XML and actually have a valid image
> 
> Next I found a button to create a Deployable from an image.
> 
> Next I get a page saying: "Images are not Built" and no hint what to
> do about it
> 
> http://192.168.122.174:3000/catalogs/1/deployables/1
> 
> There's a green button, it reads "Images valid" -- green is good,
> let's click it!
> 
> But it leads to a page to edit deployable XML
> http://192.168.122.174:3000/catalogs/1/deployables/1 ---> click
> "Images Valid" (green button) ---->
> http://192.168.122.174:3000/catalogs/1/deployables/1/edit?edit_xml=true
> 
> #8 problem: "Images Valid" should read "edit the deployable XML" and
> is probably should not be green
> 
> On the page under "Build Status" there's "Images are not Built" with
> CAPITAL B. But there's no hint what shall I do about it.
> 
> I got an advice from Jenik:	"for now, got to images show page (env ->
> images)"
> 
> http://192.168.122.174:3000/images/067f4d76-19fa-11e2-8f46-525400b4f6a2
> 
> there's a grey button there.	It reads "Build". I clicked it
> 
> 	Failed.  Response code = 500.  Response message = Internal Server
> 	Error.
> 	/home/martin/.gem/ruby/1.9.1/gems/activeresource-3.2.3/lib/active_resource/connection.rb:148:in
> 	`handle_response'
> 	 /home/martin/.gem/ruby/1.9.1/gems/activeresource-3.2.3/lib/active_resource/connection.rb:115:in
> 	 `request'
> 	 /home/martin/.gem/ruby/1.9.1/bundler/gems/aeolus-image-rubygem-4bffe3f60ce3/lib/aeolus_image/active_resource_oauth_client.rb:30:in
> 	 `request_with_oauth'
> 	 /home/martin/.gem/ruby/1.9.1/gems/activeresource-3.2.3/lib/active_resource/connection.rb:92:in
> 	 `block in put'
> 	 /home/martin/.gem/ruby/1.9.1/gems/activeresource-3.2.3/lib/active_resource/connection.rb:218:in
> 	 `with_auth'
> 	 /home/martin/.gem/ruby/1.9.1/gems/activeresource-3.2.3/lib/active_resource/connection.rb:92:in
> 	 `put'
> 
> probably some component missing, the 'intuitive' code of 500 suggests
> I forgot to install or configure image-factory
> 
> problem was with oauth credentials
> 
> #8 problem: there should be a nice error message telling me about
> auth problem
> 
> #9 problem also the image factory log is a mess. User should get
> something like "invalid credentials for image factory, configure the
> image factory, please"
> 
> 	2012-10-17 09:12:04,299 INFO root thread(MainThread) Message:
> 	Launched as daemon...
> 	2012-10-17 09:12:04,394 DEBUG root thread(MainThread) Message:
> 	Unable to start faulthandler - multi-thread tracebacks will not be
> 	available
> 	Traceback (most recent call last):
> 	  File "/usr/bin/imagefactory", line 176, in main
> 	    import faulthandler
> 	ImportError: No module named faulthandler
> 
> 	2012-10-17 09:12:04,433 DEBUG paste.httpserver.ThreadPool
> 	thread(worker 0) Message: Started new worker 139691243161344:
> 	Initial worker pool
> 
> 	2012-10-19 16:43:36,291 ERROR imgfac.rest.imagefactory thread(worker
> 	4) Message: 'oauth_consumer_key'
> 	Traceback (most recent call last):
> 	  File
> 	  "/usr/lib/python2.7/site-packages/imgfac/rest/imagefactory.py",
> 	  line 49, in validate_two_leg_oauth
> 	    oauth_consumer = Consumer(request.params['oauth_consumer_key'])
> 	  File "/usr/lib/python2.7/site-packages/imgfac/rest/bottle.py",
> 	  line 1528, in __getitem__
> 	    def __getitem__(self, key): return self.dict[key][-1]
> 	KeyError: 'oauth_consumer_key'
> 	(END)
> 
>   Failed.  Response code = 500.  Response message = Internal Server
>   Error.
>   /home/martin/.gem/ruby/1.9.1/gems/activeresource-3.2.3/lib/active_resource/connection.rb:148:in
>   `handle_response'
>    /home/martin/.gem/ruby/1.9.1/bundler/gems/aeolus-image-rubygem-4bffe3f60ce3/lib/aeolus_image/active_resource_oauth_client.rb:52:in
>    `request_with_oauth'
>    /home/martin/.gem/ruby/1.9.1/gems/activeresource-3.2.3/lib/active_resource/connection.rb:92:in
>    `block in put'
>    /home/martin/.gem/ruby/1.9.1/gems/activeresource-3.2.3/lib/active_resource/connection.rb:218:in
>    `with_auth'
>   	mpovolny: Hrm, in that case, I wonder if oauth.json was wrong.
> 
> 
>   after I copied the credentials I got:
> 
> 	2012-10-19 16:57:22,683 ERROR imgfac.rest.imagefactory thread(worker
> 	9) Message: 'NoneType' object has no attribute 'encode'
> 	Traceback (most recent call last):
> 	  File
> 	  "/usr/lib/python2.7/site-packages/imgfac/rest/imagefactory.py",
> 	  line 50, in validate_two_leg_oauth
> 	    oauth_server.verify_request(req, oauth_consumer, None)
> 	  File "/usr/lib/python2.7/site-packages/oauth2/__init__.py", line
> 	  712, in verify_request
> 	    self._check_signature(request, consumer, token)
> 	  File "/usr/lib/python2.7/site-packages/oauth2/__init__.py", line
> 	  765, in _check_signature
> 	    valid = signature_method.check(request, consumer, token,
> 	    signature)
> 	  File "/usr/lib/python2.7/site-packages/oauth2/__init__.py", line
> 	  816, in check
> 	    built = self.sign(request, consumer, token)
> 	  File "/usr/lib/python2.7/site-packages/oauth2/__init__.py", line
> 	  841, in sign
> 	    key, raw = self.signing_base(request, consumer, token)
> 	  File "/usr/lib/python2.7/site-packages/oauth2/__init__.py", line
> 	  833, in signing_base
> 	    key = '%s&' % escape(consumer.secret)
> 	  File "/usr/lib/python2.7/site-packages/oauth2/__init__.py", line
> 	  158, in escape
> 	    return urllib.quote(s.encode('utf-8'), safe='~')
> 	AttributeError: 'NoneType' object has no attribute 'encode'
> 
>   probably did not copy them right, but again, I would expect a sane
>   error message
> 
> Finally I disabled oauth, clicked the button and built the image.
> More
> fun to come.
> 
> --
> Martin Povolny <mpovolny at redhat.com>
> tel. +420 777714458
> 

Martin, this is a fantastic collection of feedback.

Not to sound too snarky, but did you file BZs for any of the issues you 
encountered?

If I can summarize your detailed report, the problems you encountered seem to
be of two classes:

  1)  usability issues (bad error messages, hard to find functionality); or, 
  2)  integration issues related to not having run aeolus-configure to setup
      the system (since you're running from a source checkout and not from 
      RPM install)

Is that a fair interpretation?  

I suspect that most of the integration issues (with deltacloud and 
imagefactory) would have been resolved if aeolus-configure had run through 
its configuration steps.  Or, possibly running the development setup script(s)
from the github page[1].  TBH, I haven't run through the development setup for
quite some time, so I'm not sure how well it resolves these issues.

Also, That's not to say, of course, that logging and bubbling up errors from
one system to the next couldn't be better.

As for the usability issues, these seem like excellent starters for redmine
issues.

[1]: https://github.com/aeolusproject/conductor



More information about the aeolus-devel mailing list