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 <[email protected]> tel. +420 777714458
