)]}'
{"id":"openstack%2Fpython-glanceclient~172728","triplet_id":"openstack%2Fpython-glanceclient~master~Ifd2fb913284a56684a4ed3611f743e5ad0645137","project":"openstack/python-glanceclient","branch":"master","topic":"upload-task","hashtags":[],"change_id":"Ifd2fb913284a56684a4ed3611f743e5ad0645137","subject":"Add task-upload command for uploading images in v2","status":"ABANDONED","created":"2015-04-12 17:40:17.000000000","updated":"2015-05-03 12:09:47.000000000","total_comment_count":3,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"3e8e92f22747cd3729e94beb54d26154f80333b4","_number":172728,"virtual_id_number":172728,"owner":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},{"date":"2015-04-13 01:06:29.000000000","_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},{"value":-1,"date":"2015-04-13 01:55:24.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},{"_account_id":9096,"name":"Cindy Pallares","email":"u1@cindy.sh","username":"cpallares"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"rejected":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"disliked":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"all":[{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},{"value":-2,"date":"2015-04-15 14:15:17.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":-1,"date":"2015-04-13 01:06:12.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},{"value":-1,"date":"2015-04-14 10:12:45.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":9096,"name":"Cindy Pallares","email":"u1@cindy.sh","username":"cpallares"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","value":-1,"default_value":0,"optional":true},"Workflow":{"all":[{"value":0,"date":"2015-04-15 14:28:43.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},{"value":0,"permitted_voting_range":{"min":-1,"max":0},"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},{"date":"2015-04-29 13:34:13.000000000","_account_id":9096,"name":"Cindy Pallares","email":"u1@cindy.sh","username":"cpallares"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":2},"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},{"value":0,"permitted_voting_range":{"min":-1,"max":2},"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},{"_account_id":9096,"name":"Cindy Pallares","email":"u1@cindy.sh","username":"cpallares"}],"values":{"-1":"Branch Freeze"," 0":"No Priority","+1":"Important Change","+2":"Top Priority / Holds Gate"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},{"_account_id":9096,"name":"Cindy Pallares","email":"u1@cindy.sh","username":"cpallares"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2015-04-12 23:20:48.000000000","updated_by":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"reviewer":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"state":"REVIEWER"},{"updated":"2015-04-13 01:55:24.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"},{"updated":"2015-04-14 10:12:45.000000000","updated_by":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"reviewer":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"state":"REVIEWER"},{"updated":"2015-04-15 14:15:17.000000000","updated_by":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"reviewer":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"state":"REVIEWER"},{"updated":"2015-04-15 14:28:43.000000000","updated_by":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"reviewer":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"state":"REVIEWER"},{"updated":"2015-04-29 13:34:13.000000000","updated_by":{"_account_id":9096,"name":"Cindy Pallares","email":"u1@cindy.sh","username":"cpallares"},"reviewer":{"_account_id":9096,"name":"Cindy Pallares","email":"u1@cindy.sh","username":"cpallares"},"state":"REVIEWER"}],"messages":[{"id":"4fb4ff9d5d1db797ae9638d64b8822d565a4e86e","author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"date":"2015-04-12 17:40:17.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"6ea36b7160589438552bbc30b31af85142afeaa5","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-04-12 18:34:26.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-glanceclient-python26 http://logs.openstack.org/28/172728/1/check/gate-python-glanceclient-python26/e7f0692/ : SUCCESS in 1m 26s\n- gate-python-glanceclient-pep8 http://logs.openstack.org/28/172728/1/check/gate-python-glanceclient-pep8/78547b8/ : SUCCESS in 1m 07s\n- gate-python-glanceclient-docs http://docs-draft.openstack.org/28/172728/1/check/gate-python-glanceclient-docs/92c0c6d//doc/build/html/ : SUCCESS in 1m 30s\n- gate-python-glanceclient-python27 http://logs.openstack.org/28/172728/1/check/gate-python-glanceclient-python27/49606ed/ : SUCCESS in 1m 16s\n- gate-python-glanceclient-python34 http://logs.openstack.org/28/172728/1/check/gate-python-glanceclient-python34/bd7d2ca/ : FAILURE in 2m 51s\n- gate-python-glanceclient-requirements http://logs.openstack.org/28/172728/1/check/gate-python-glanceclient-requirements/774db3e/ : SUCCESS in 13s\n- gate-tempest-dsvm-neutron-src-python-glanceclient-juno http://logs.openstack.org/28/172728/1/check/gate-tempest-dsvm-neutron-src-python-glanceclient-juno/60b80ee/ : FAILURE in 12m 48s\n- gate-python-glanceclient-pypy http://logs.openstack.org/28/172728/1/check/gate-python-glanceclient-pypy/51b9544/ : SUCCESS in 2m 20s\n- gate-tempest-dsvm-neutron-src-python-glanceclient http://logs.openstack.org/28/172728/1/check/gate-tempest-dsvm-neutron-src-python-glanceclient/b0c65b7/ : SUCCESS in 54m 02s","accounts_in_message":[],"_revision_number":1},{"id":"ec38c759fa40e186133288eaa0b272bab3857df3","author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"date":"2015-04-12 23:20:48.000000000","message":"Patch Set 1: Code-Review-1\n\nThanks for working on this, Monty. But I think this command will only work with swift backend. I\u0027m not really comfortable to have a limited command line, since it\u0027s most like a private use script. Thoughts?","accounts_in_message":[],"_revision_number":1},{"id":"c2f57f5e06b7798458dd15e2782716587608d8bb","author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"date":"2015-04-13 01:06:12.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"b11c5b0c266051637bd6edb62e10e62394f88b41","author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"date":"2015-04-13 01:06:29.000000000","message":"Patch Set 2:\n\nIt will only work if the deployer deployed with a swift backend - but this is currently the case already. Rackspace, for instance, _requires_ that the v2 task-create image-import functionality is used, and there is no support for such a thing in the command line client.\n\nAlso, as I understand, glance would prefer to get out of the business of storing images itself altogether, no?","accounts_in_message":[],"_revision_number":2},{"id":"914fefbd0b1574c6d9bfb56c3b7fbda8795e56c7","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-04-13 01:55:24.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-glanceclient-python26 http://logs.openstack.org/28/172728/2/check/gate-python-glanceclient-python26/30cf6da/ : SUCCESS in 1m 20s\n- gate-python-glanceclient-pep8 http://logs.openstack.org/28/172728/2/check/gate-python-glanceclient-pep8/e63bde1/ : FAILURE in 1m 18s\n- gate-python-glanceclient-docs http://docs-draft.openstack.org/28/172728/2/check/gate-python-glanceclient-docs/4b49868//doc/build/html/ : SUCCESS in 1m 22s\n- gate-python-glanceclient-python27 http://logs.openstack.org/28/172728/2/check/gate-python-glanceclient-python27/53454e2/ : SUCCESS in 1m 20s\n- gate-python-glanceclient-python34 http://logs.openstack.org/28/172728/2/check/gate-python-glanceclient-python34/fdf1acb/ : SUCCESS in 2m 04s\n- gate-python-glanceclient-requirements http://logs.openstack.org/28/172728/2/check/gate-python-glanceclient-requirements/a32f6db/ : SUCCESS in 12s\n- gate-tempest-dsvm-neutron-src-python-glanceclient-juno http://logs.openstack.org/28/172728/2/check/gate-tempest-dsvm-neutron-src-python-glanceclient-juno/ec17e9b/ : FAILURE in 13m 09s\n- gate-python-glanceclient-pypy http://logs.openstack.org/28/172728/2/check/gate-python-glanceclient-pypy/c0996dd/ : SUCCESS in 2m 12s\n- gate-tempest-dsvm-neutron-src-python-glanceclient http://logs.openstack.org/28/172728/2/check/gate-tempest-dsvm-neutron-src-python-glanceclient/e2f5321/ : SUCCESS in 49m 02s","accounts_in_message":[],"_revision_number":2},{"id":"40b0073068cba49a855ce16c127251874c2001eb","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-04-14 10:12:45.000000000","message":"Patch Set 2: Code-Review-1\n\n(3 comments)\n\nJust need some clarification on upload vs import. Thanks.\n\n\u003e Also, as I understand, glance would prefer to get out of the business of storing images itself altogether, no?\n\nI think this is one of several open questions in the project. I\u0027m not sure how we can retire functionality that users depend on. I\u0027m also not sure how the database and store can be guaranteed to be in sync (like they are today) if Glance doesn\u0027t have some control over the data storing.","accounts_in_message":[],"_revision_number":2},{"id":"a5df5980269197605589f12b292f59cbd4698237","author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"date":"2015-04-15 14:15:17.000000000","message":"Patch Set 2: Code-Review-2\n\nHi Monty,\n\nI think Fei Long and Stuart had excellent points there.\n\nI can recognize good intention behind this but I fail to see the definite benefits versus risks. As Stuart pointed out your logic fails as uploading the image to glance is single command operation from client already at the moment.\n\nFirst thing I\u0027m wondering is how I manage to fail to find this import functionality from Glance API server side. Could you point me to right track on this?\n\nMy main concern is related to the one Feil Long has, this functionality being only for swift deployments and specially the hard dependency to swiftclient in glanceclient.\n\nI think the right approach towards common agreement and understanding would be to write a spec for this and continue the discussion there. I\u0027m more than happy to re-review this after we have agreement on spec how we should proceed with this problem.","accounts_in_message":[],"_revision_number":2},{"id":"101ec8dafbd671acab9f74050f992af72fb7c655","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-04-15 14:32:46.000000000","message":"Patch Set 2:\n\n@erno\n\n\u003e benefits versus risks\n\nFor public clouds the vast majority of users do not have the privileges required to directly upload; they must use import. Currently that will involve several steps and different clients. The intention here I think is to make it more straightforward.\n\nAdding Brian -- he\u0027s probably got some good insights here.","accounts_in_message":[],"_revision_number":2},{"id":"ae06b961f23b37857a413c28926423e8d62e7634","author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"date":"2015-04-15 16:55:32.000000000","message":"Patch Set 2:\n\nHello everyone,\n\nMonty, I agree with Erno\u0027s suggestion that we discuss this on a spec first.  I completely sympathize with your desire to make this a simpler operation from the end-user\u0027s point of view, but I\u0027m not sure what\u0027s the best way to go about it, and I have some reservations about your particular solution.  (I numbered the following for reference, they\u0027re not in any particular order.)\n\n(1) The --poll option is a nice idea, but with tasks we could be talking about a long period of time (on the order of 10s of minutes), especially if you include the image data upload as part of the process.  Getting, say, 35GB into swift over public internet takes a while, and then you have any provider-defined import processing as well.  I think tasks are more a kind of \"go down to the corner coffee shop and check when you come back\" thing.  But that\u0027s just me.\n\n(2) I agree with Fei Long that this looks too customized.  It just so happens that at Rackspace we use swift both for object store and as the backend for glance, but we could use different technologies for either of those.  The import workflow we\u0027ve architected is that an end-user (a) uploads the image data to the cloud object store, then (b) creates an import task.  The import task then uses the customer\u0027s credentials to pull the data from the object store, do some processing on it, and then creates an image in Glance.\n\n(3) I agree with Stuart, by the way, that Glance doesn\u0027t necessarily want to get out of the image-storage business.  Glance needs to maintain consistency between the image records and the image data.\n\n(4) When tasks were designed (during the Icehouse cycle, iirc), the idea was that we wanted a simple interface that would be common across all openstack deployments, but that would also be customizable because providers would have different requirements based on the type of images used in their clouds, etc.  But that may have left things too wide open, because while the task schema is the same across providers, there\u0027s no guarantee that the \"input\" element of an import task for Cloud A will be recognized by Cloud B.  (I don\u0027t see any way around that, but that may be a failure of imagination on my part.)\n\n(5) I realize that it\u0027s a PITA not to be able to just upload your image to Glance, but that functionality is there, and private clouds may want to expose it directly to end-users.  For the public cloud situation, I don\u0027t think Glance is built for holding multiple simultaneous connections of various speeds, so I don\u0027t even want to try that.  I figure an OpenStack-wide solution would be to let end-users put the image data in the cloud\u0027s object store, which is designed for handling holding multiple simultaneous connections of various speeds over the public internet, and then the import task just needs to get the data from the object store, do whatever processing is desired, and then create the image.  So I guess what I\u0027m saying is that we want to change end-user expectations from \"hey, I want to upload an image to Glance\" to recognizing that the workflow is to put your putative image into your cloud\u0027s object store, and then ask Glance to import it.\n\n(6) Also, the design discussion around tasks recognized that these are likely to be high-error operations (e.g., end-users uploading JPEGs or other invalid stuff), so the image creation only happens at the end of the import operation.  (That\u0027s why the tasks were designed to be independent objects.)  Not sure why I mentioned this, it seemed important a minute ago.\n\nI\u0027ve gone on too long. I agree it would be nice to have a more straightforward way to import images.  On the other hand, I think that we should reframe the issue: in a public cloud, you shouldn\u0027t expect to \"upload\" an image in the first place.  You should expect to \"import\" it from your cloud\u0027s object store.  But I guess what I\u0027m worried about is that if we try to make the entire workflow into a single operation, as this patch would do, it\u0027s going to be really annoying to customers because it\u0027s going to take a long time and may not result in an image being created.  I\u0027d like to see the problem of getting the image from your laptop into the cloud separated from the problem of creating an image out of whatever that thing is you uploaded.  I don\u0027t want to see Glance be blamed for the first problem.","accounts_in_message":[],"_revision_number":2},{"id":"b7fda440951e0445a1a7c90cd8639c38a2453299","author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"date":"2015-04-21 19:32:57.000000000","message":"Patch Set 2:\n\nThank you for the very thorough response. It is helpful and   will start working on specs.\n\nHowever, I\u0027d like to disagree with one thing here:\n\n\"in a public cloud, you shouldn\u0027t expect to \"upload\" an image in the first place. You should expect to \"import\" it from your cloud\u0027s object store\"\n\nThere are two problems with that.\n\nOne is that I\u0027m a user and you\u0027re telling me I have the wrong expectations. That\u0027s something we as OpenStack need to do less. Instead, I think we should listen to our users, understand their expectations, and either provide them, or provide something _else_ which is not easy to mistake for a bad solution to their original expectations.\n\nThe second is that not all clouds have object stores. Not even all public clouds (neither RunAbove nor vexxhost have object stores) They DO all have Glance, and glance is always where the images go. That there are two different ways to get an image into glance based on choices a deployer made about services that have nothing to do with images is more than confusing. That we have no way to communicate that the user should use one API in one place and a different API in a different place is a failure on our part as OpenStack, and we should endeavor to fix it.\n\nPerhaps we could add an API call to glance that returns whether or not a user should use image-upload or task-import?\n\nOr perhaps glance image-upload should return a 301 if swift should be used?\n\nOr perhaps something more clever?\n\nIn any case - that\u0027s fodder for a spec, which I\u0027ll start working on soon.","accounts_in_message":[],"_revision_number":2},{"id":"212179267414c4e9229ec66854cb52d5654cb2ce","author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"date":"2015-05-03 12:09:47.000000000","message":"Abandoned","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"4a913731dc62cb698d630615d98c4d064068f93e","revisions":{"d6fbd7e24cc4c9bc4c81d0c0b74381f213235064":{"kind":"REWORK","_number":1,"created":"2015-04-12 17:40:17.000000000","uploader":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"ref":"refs/changes/28/172728/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-glanceclient","ref":"refs/changes/28/172728/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-glanceclient refs/changes/28/172728/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-glanceclient refs/changes/28/172728/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-glanceclient refs/changes/28/172728/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-glanceclient refs/changes/28/172728/1"}}},"commit":{"parents":[{"commit":"182ee7e77e0967c2610f90d748cd62bb75f1ca11","subject":"Split auth functions into a common file","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-glanceclient/commit/182ee7e77e0967c2610f90d748cd62bb75f1ca11"}]}],"author":{"name":"Monty Taylor","email":"mordred@inaugust.com","date":"2015-04-12 17:37:54.000000000","tz":-240},"committer":{"name":"Monty Taylor","email":"mordred@inaugust.com","date":"2015-04-12 17:37:54.000000000","tz":-240},"subject":"Add task-upload command for uploading images in v2","message":"Add task-upload command for uploading images in v2\n\nThere are several complicated steps involved with uploading an image\nsuccessfully in the glance v2 API. Provide an all-in-one command that\ndoes these steps, with an optional \"--poll\" options modeled after the\nnova --poll options which will poll the task status and ultimately print\nthe image dict.\n\nThis change adds python-swiftclient as a hard dependency, because even\nif a user does not want to use the task-upload command, swiftclient _IS_\na hard dependency for anyone who wants to upload an image with v2.\n\nChange-Id: Ifd2fb913284a56684a4ed3611f743e5ad0645137\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-glanceclient/commit/d6fbd7e24cc4c9bc4c81d0c0b74381f213235064"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-glanceclient/commit/d6fbd7e24cc4c9bc4c81d0c0b74381f213235064"}]},"branch":"refs/heads/master"},"4a913731dc62cb698d630615d98c4d064068f93e":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2015-04-13 01:06:12.000000000","uploader":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"ref":"refs/changes/28/172728/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-glanceclient","ref":"refs/changes/28/172728/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-glanceclient refs/changes/28/172728/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-glanceclient refs/changes/28/172728/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-glanceclient refs/changes/28/172728/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-glanceclient refs/changes/28/172728/2"}}},"commit":{"parents":[{"commit":"78097442629fde9e0ca4e48de76679a596c9669c","subject":"Split auth functions into a common file","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-glanceclient/commit/78097442629fde9e0ca4e48de76679a596c9669c"}]}],"author":{"name":"Monty Taylor","email":"mordred@inaugust.com","date":"2015-04-12 17:37:54.000000000","tz":-240},"committer":{"name":"Monty Taylor","email":"mordred@inaugust.com","date":"2015-04-13 01:04:05.000000000","tz":-240},"subject":"Add task-upload command for uploading images in v2","message":"Add task-upload command for uploading images in v2\n\nThere are several complicated steps involved with uploading an image\nsuccessfully in the glance v2 API. Provide an all-in-one command that\ndoes these steps, with an optional \"--poll\" options modeled after the\nnova --poll options which will poll the task status and ultimately print\nthe image dict.\n\nThis change adds python-swiftclient as a hard dependency, because even\nif a user does not want to use the task-upload command, swiftclient _IS_\na hard dependency for anyone who wants to upload an image with v2.\n\nChange-Id: Ifd2fb913284a56684a4ed3611f743e5ad0645137\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-glanceclient/commit/4a913731dc62cb698d630615d98c4d064068f93e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-glanceclient/commit/4a913731dc62cb698d630615d98c4d064068f93e"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
