)]}'
{"id":"openstack%2Fdevstack~25168","triplet_id":"openstack%2Fdevstack~master~I1d78d9e8cc4d52ee2df83d07e4c74dda4805f21a","project":"openstack/devstack","branch":"master","topic":"extract-plugin-install-fixedup","hashtags":[],"change_id":"I1d78d9e8cc4d52ee2df83d07e4c74dda4805f21a","subject":"xenapi: Extract plugin installation functions","status":"MERGED","created":"2013-03-22 18:19:49.000000000","updated":"2013-03-27 13:08:33.000000000","submitted":"2013-03-27 13:08:33.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":1,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"552998dbfb8a40613081df08b57bcca83148444a","_number":25168,"virtual_id_number":25168,"owner":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":2,"date":"2013-03-27 13:08:33.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},{"value":0,"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},{"value":0,"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},{"value":0,"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},{"value":0,"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"all":[{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},{"value":2,"date":"2013-03-26 20:04:22.000000000","_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},{"value":1,"date":"2013-03-27 11:30:04.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},{"value":2,"date":"2013-03-27 12:27:19.000000000","_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},{"value":1,"date":"2013-03-25 18:27:58.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"}],"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":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"all":[{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},{"value":0,"date":"2013-03-26 20:04:22.000000000","_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},{"value":0,"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},{"value":1,"date":"2013-03-27 12:27:19.000000000","_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},{"value":0,"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},{"value":0,"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},{"value":0,"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},{"value":0,"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},{"value":0,"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"}],"values":{"-1":"Branch Freeze"," 0":"No Priority","+1":"Important Change","+2":"Gate Blocker Fix / Urgent Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2013-03-25 18:27:58.000000000","updated_by":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"reviewer":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"state":"REVIEWER"},{"updated":"2013-03-26 20:04:22.000000000","updated_by":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"reviewer":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"state":"REVIEWER"},{"updated":"2013-03-27 11:30:04.000000000","updated_by":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"reviewer":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"state":"REVIEWER"},{"updated":"2013-03-27 12:27:19.000000000","updated_by":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"reviewer":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"state":"REVIEWER"},{"updated":"2013-03-27 13:08:33.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"db3929eb4eb317efc76d6c2fcb64c77f452b2c14","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2013-03-22 18:55:20.000000000","message":"Patch Set 1: Works for me\n\nBuild succeeded.\n\n- http://logs.openstack.org/25168/1/check/gate-tempest-devstack-vm-full/10098 : SUCCESS\n- http://logs.openstack.org/25168/1/check/gate-tempest-devstack-vm-postgres-full/9813 : SUCCESS\n- http://logs.openstack.org/25168/1/check/gate-tempest-devstack-vm-quantum/15579 : SUCCESS\n- http://logs.openstack.org/25168/1/check/gate-grenade-devstack-vm/41 : FAILURE (non-voting)\n","accounts_in_message":[],"_revision_number":1},{"id":"e697375dc74fbb396dcb9cd6f68bc42862035fef","author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"date":"2013-03-22 20:41:29.000000000","message":"Patch Set 1:\n\nI\u0027m not sure I understand why the trivial functions at the top are useful.  In my view, reading a script with \u0027rm-rf\u0027 replaced by \u0027_remove\u0027 is obscuring not clarifying.  This doesn\u0027t seem to be a situation where you are going to be abstracting different operating system syntax.","accounts_in_message":[],"_revision_number":1},{"id":"e63cd842b36dc3efdc428f41b710fe99de652fa8","author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"date":"2013-03-25 09:34:57.000000000","message":"Patch Set 1:\n\n@Dean: The _remove and their friends are extracted, so that they could be mocked out in the tests (see the mocks on the top of test_functions.sh). I tried to apply a test-driven approach during this refactor, and that was the best I could come up with.","accounts_in_message":[],"_revision_number":1},{"id":"088d3596f695d0d278f947f0d86c63d6b43d19b9","author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"date":"2013-03-25 12:24:56.000000000","message":"Patch Set 1: I would prefer that you didn\u0027t merge this\n\nI agree with Dean - this isn\u0027t clear.  Mocking in bash is fun!\n\nI\u0027d suggest prefixing everything you need to mock with a function call to _mockable, defined as:\n\n_mockable () \n{ \n    __mock_cmd\u003d_mock_${1};\n    echo $__mock_cmd;\n    if [ -n \"`declare -f -F $__mock_cmd`\" ]; then\n        shift;\n        $__mock_cmd \"$@\";\n    else\n        \"$@\";\n    fi\n}\n\nThen you can define a _mock_rm function in your unit test which will be called in place of rm.\n\nPerhaps something at the start of the script to assert that there are no functions mocked out would also be good - just grepping declare -f -F for \"_mock_\" to make sure that there isn\u0027t anything hanging around in the environment when the script is run proper.","accounts_in_message":[],"_revision_number":1},{"id":"c0b5a8ddadd735db741d2d9404d17a15cf1a68f0","author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"date":"2013-03-25 14:58:00.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"3fdc27b26a8cc8c165f4b229efadfbe416807898","author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"date":"2013-03-25 15:07:59.000000000","message":"Patch Set 2: (1 inline comment)\n\n","accounts_in_message":[],"_revision_number":2},{"id":"f86627e9a2bfce97934d64643b4e8c1e1b333dd6","author":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"date":"2013-03-25 15:17:35.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"bd80f4d8bb7953f83acb9c35764b272cb6aa0bd2","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2013-03-25 15:55:18.000000000","message":"Patch Set 3: Works for me\n\nBuild succeeded.\n\n- http://logs.openstack.org/25168/3/check/gate-tempest-devstack-vm-full/10313 : SUCCESS\n- http://logs.openstack.org/25168/3/check/gate-tempest-devstack-vm-postgres-full/10028 : SUCCESS\n- http://logs.openstack.org/25168/3/check/gate-tempest-devstack-vm-quantum/15834 : SUCCESS\n- http://logs.openstack.org/25168/3/check/gate-grenade-devstack-vm/50 : FAILURE (non-voting)\n","accounts_in_message":[],"_revision_number":3},{"id":"f11ccc4cdafdf85b8c2a4358865092aff23ca7a3","author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"date":"2013-03-25 18:27:58.000000000","message":"Patch Set 3: Looks good to me, but someone else must approve\n\n","accounts_in_message":[],"_revision_number":3},{"id":"51abab6ee65c7123ea82df67009a6fb44087a9d7","author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"date":"2013-03-26 20:04:22.000000000","message":"Patch Set 3: Looks good to me (core reviewer)\n\nI still think some of this is pretty trivial but it\u0027s in the Xen tree so I\u0027ll let you guys live with it.  We really only do unit tests for things that aren\u0027t obvious or are fragile, like the regex\u0027s in the ini* functions.","accounts_in_message":[],"_revision_number":3},{"id":"6bbbdb1959353704a7fe4561e6b95f30206e6410","author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"date":"2013-03-27 11:30:04.000000000","message":"Patch Set 3: Looks good to me, but someone else must approve\n\nSeems reasonable, I know you find it better developing that way.","accounts_in_message":[],"_revision_number":3},{"id":"d24ad08f2ac021159166c72bc23ff9fdb6df014f","author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"date":"2013-03-27 12:27:19.000000000","message":"Patch Set 3: Looks good to me (core reviewer); Approved\n\n","accounts_in_message":[],"_revision_number":3},{"id":"044c8a8639098297426a9a74039fd96440c1a83c","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2013-03-27 12:27:20.000000000","message":"Patch Set 3: No score\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":3},{"id":"d69da810afe558d28b1c73149e5cb8c603ef931c","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2013-03-27 13:08:33.000000000","message":"Change has been successfully merged into the git repository.","accounts_in_message":[],"_revision_number":3},{"id":"05e55acc6bf8a77a8b005633a82601c83ecd8503","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2013-03-27 13:08:33.000000000","message":"Patch Set 3: Verified\n\nBuild succeeded.\n\n- http://logs.openstack.org/25168/3/gate/gate-tempest-devstack-vm-full/10685 : SUCCESS\n- http://logs.openstack.org/25168/3/gate/gate-tempest-devstack-vm-postgres-full/10401 : SUCCESS\n- http://logs.openstack.org/25168/3/gate/gate-tempest-devstack-vm-quantum/16248 : SUCCESS\n","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"57e3da9b760260bba020d4b65f9db29a339ec02a","revisions":{"7094f8d131e1e422256f5da8868c43888cac3414":{"kind":"REWORK","_number":1,"created":"2013-03-22 18:19:49.000000000","uploader":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"ref":"refs/changes/68/25168/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/68/25168/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/68/25168/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/68/25168/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/68/25168/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/68/25168/1"}}},"commit":{"parents":[{"commit":"1a5d0339d0c3fb142de3fdedcfacee46d98a977d","subject":"Merge \"Accept Quantums rootwrap.conf in etc/quantum/rootwrap.conf\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/1a5d0339d0c3fb142de3fdedcfacee46d98a977d"}]}],"author":{"name":"Mate Lakat","email":"mate.lakat@citrix.com","date":"2013-03-22 16:34:05.000000000","tz":0},"committer":{"name":"Mate Lakat","email":"mate.lakat@citrix.com","date":"2013-03-22 18:14:18.000000000","tz":0},"subject":"xenapi: Extract plugin installation functions","message":"xenapi: Extract plugin installation functions\n\nThis change extracts the plugin installation functions, and covers the\nextracted functions with tests.\n\nChange-Id: I1d78d9e8cc4d52ee2df83d07e4c74dda4805f21a\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/7094f8d131e1e422256f5da8868c43888cac3414"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/7094f8d131e1e422256f5da8868c43888cac3414"}]},"branch":"refs/heads/master"},"3532a3e8f837009ebb5e23fa3060ec7b2bf25090":{"kind":"REWORK","_number":2,"created":"2013-03-25 14:58:00.000000000","uploader":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"ref":"refs/changes/68/25168/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/68/25168/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/68/25168/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/68/25168/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/68/25168/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/68/25168/2"}}},"commit":{"parents":[{"commit":"5e482c9ea27e9ba1b5518c37972e36d6c0e5a2cc","subject":"Merge \"Explicitly add cosine and inetorgperson schemas on Fedora\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/5e482c9ea27e9ba1b5518c37972e36d6c0e5a2cc"}]}],"author":{"name":"Mate Lakat","email":"mate.lakat@citrix.com","date":"2013-03-22 16:34:05.000000000","tz":0},"committer":{"name":"Mate Lakat","email":"mate.lakat@citrix.com","date":"2013-03-25 14:54:12.000000000","tz":0},"subject":"xenapi: Extract plugin installation functions","message":"xenapi: Extract plugin installation functions\n\nThis change extracts the plugin installation functions, and covers the\nextracted functions with tests.\n\nChange-Id: I1d78d9e8cc4d52ee2df83d07e4c74dda4805f21a\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/3532a3e8f837009ebb5e23fa3060ec7b2bf25090"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/3532a3e8f837009ebb5e23fa3060ec7b2bf25090"}]},"branch":"refs/heads/master"},"57e3da9b760260bba020d4b65f9db29a339ec02a":{"kind":"REWORK","_number":3,"created":"2013-03-25 15:17:35.000000000","uploader":{"_account_id":5044,"name":"Mate Lakat","email":"mlakat@suse.com","username":"mate-lakat"},"ref":"refs/changes/68/25168/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/devstack","ref":"refs/changes/68/25168/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/devstack refs/changes/68/25168/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/devstack refs/changes/68/25168/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/devstack refs/changes/68/25168/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/devstack refs/changes/68/25168/3"}}},"commit":{"parents":[{"commit":"5e482c9ea27e9ba1b5518c37972e36d6c0e5a2cc","subject":"Merge \"Explicitly add cosine and inetorgperson schemas on Fedora\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/5e482c9ea27e9ba1b5518c37972e36d6c0e5a2cc"}]}],"author":{"name":"Mate Lakat","email":"mate.lakat@citrix.com","date":"2013-03-22 16:34:05.000000000","tz":0},"committer":{"name":"Mate Lakat","email":"mate.lakat@citrix.com","date":"2013-03-25 15:12:58.000000000","tz":0},"subject":"xenapi: Extract plugin installation functions","message":"xenapi: Extract plugin installation functions\n\nThis change extracts the plugin installation functions, and covers the\nextracted functions with tests. Use:\n\n    ./test_funtions.sh run_tests\n\nto run the tests.\n\nChange-Id: I1d78d9e8cc4d52ee2df83d07e4c74dda4805f21a\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/57e3da9b760260bba020d4b65f9db29a339ec02a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/devstack/commit/57e3da9b760260bba020d4b65f9db29a339ec02a"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
