On Mon, Oct 22, 2012 at 11:48:00AM -0400, Matt Wagner wrote:
On Mon, Oct 22, 2012 at 10:56:26AM +0200, Martin Povolny wrote:
> Setup: Fedora 16 RPMs, on top of that Conductor from githup so that I
> don't crash into what is already fixed.
Thanks for sending this! The new-user experience is something we
obviously need to work on a bit... Some notes inline:
> 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)
I'd be curious to know if this was actually fixed, and if the fix was
that we were no longer required to have "magic" names that indicated
provider type.
As I understand it, yes, ImageFactory should be fixed. But I'm not sure
about it, will try to find out.
> 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)
In general, we don't do a great job of indicating errors with our
services in our messages. In some cases it's because the other service
doesn't give us a great error message, but even if that's the case I
think it would have been better if we said something like, "Cannot add
the Provider Account because Deltacloud returned an unexpected error.
Check the Deltacloud log for more information."
If we can get a more specific error message, that would be better, of
course.
> 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
This is an interesting user story, because once you mention it, it makes
perfect sense and I could see how it would be an easy mistake to make --
but it never occurred to me to test that and see if we did something
sensible.
> 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
This has tripped me up so many times! It definitely seems like images
should be under "Content", but since they're scoped to environments, we
put them under the Environments tab instead. IMHO, this whole workflow
needs work.
> ok, I look into "Environments", it brings me to
http://192.168.122.174:3000/pool_families (pool_families) ;-)
If we ever settle with PM on one set of names, we should consider
renaming controllers to match. (Environments are the new name for "Pool
families", but they're called a third name in the downstream product.)
> 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?
Anyone opposed to adding a button to the list? I've also gone to the
images pane expecting the ability to create/import an image and been
kind of frustrated.
The button is obviously missing. You can pick the pool from a drop-down
when creating the image. Especially when you have just one pool, where
every user will start.
> 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?
A while back I proposed adding some conversational / descriptive text on
pages asking for input, so that the Catalog Images page might say
something like, "Catalog Images allow you to attach existing Images to a
Catalog for ease of launching. Click 'Create New' to define a new
Catalog Image below." -- or something to that effect.
> #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?
Heh, "who reads all the text?" is really a very fair point, but now I'm
not sure how to make this much clearer. The "upload or import an image"
should probably read, "upload an image template or import a reference to
an existing image" or something along those lines, to make it clear that
you're not actually transferring images.
One text reads "import an image" -- that's the first one. I see it and I
immediately think I have to provide an image. Then I don't read the 2nd
text that reads "Image Template".
If the word "Template" was brought to attention I would not upload an
ISO ;-)
Template for an image.
> As an average linux user who is prompted for an image I provide an ISO image of the
latest Ubuntu.
Noooooo!
>
> #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
Yes, we should definitely put some limits in place.
> 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
+1
> 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!
It would be interesting to usability-test this page, because it's
clearly lacking right now.
> 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
I'm surprised "Images Valid" was even a button. If you had asked me what
it did, I never would have guessed "Edit the XML".
Green for conveying "all systems go" makes sense, but making it look
like a button, particularly the most prominent one on the page, is not
good.
> 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 think we should fix this message, to (a) not randomly capitalize
"Built", and (b) tell the user what to do.
> 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
FWIW, I filed a BZ for this a while ago:
https://bugzilla.redhat.com/show_bug.cgi?id=856364
That's on the Image Factory side, but when it starts reporting something
other than a blanket 500, we should display a good error message in our
app, too.
> #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.
Ah, yeah, that falls under the existing BZ, too.
>
>
> 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.
Well, sounds like that went smoothly! ;)
Seriously, though, thanks for sharing this. It's obvious that we have a
lot of work to do on usability, but it's easy for us (or at least me) as
developers to know what a form is asking and thus not realize that a
normal user would have no clue what it was asking.
Again, thank you for reading and I will be happy to fix some of the
above myself.
--
Martin Povolny <mpovolny(a)redhat.com>
tel. +420 777714458