)]}'
{"id":"openstack%2Fironic-python-agent~83087","triplet_id":"openstack%2Fironic-python-agent~master~Ic160478625226b4dd17bd68b3d37f3b05823e519","project":"openstack/ironic-python-agent","branch":"master","topic":"get_rid_of_modes","hashtags":[],"change_id":"Ic160478625226b4dd17bd68b3d37f3b05823e519","subject":"Get rid of modes. Introduce pluggable extensions","status":"MERGED","created":"2014-03-26 15:00:02.000000000","updated":"2014-03-27 15:02:20.000000000","submitted":"2014-03-27 15:02:20.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":5,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"23511fb77f393314942af3127071bf41d2dd287c","_number":83087,"virtual_id_number":83087,"owner":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":0,"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},{"value":0,"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},{"value":2,"date":"2014-03-27 15:02:20.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"}],"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":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"all":[{"value":2,"date":"2014-03-27 14:59:15.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},{"value":2,"date":"2014-03-27 13:33:39.000000000","_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"}],"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":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"all":[{"value":1,"date":"2014-03-27 14:59:15.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},{"value":0,"date":"2014-03-27 13:33:39.000000000","_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Backport-Candidate":{"all":[{"value":0,"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},{"value":0,"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"}],"values":{"-1":"Do Not Backport"," 0":"Backport Review Needed","+1":"Should Backport"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2014-03-27 13:33:39.000000000","updated_by":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"reviewer":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"state":"REVIEWER"},{"updated":"2014-03-27 14:59:15.000000000","updated_by":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"reviewer":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"state":"REVIEWER"},{"updated":"2014-03-27 15:02:20.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"84ab1e66bcef7e52d4a6f3d5b4f32eb190a6769c","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2014-03-26 15:00:02.000000000","message":"Patch Set 1:\n\nStarting check jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":1},{"id":"c1272403c3d37996c4ce4cf5541776b7e3ca2997","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2014-03-26 15:12:06.000000000","message":"Patch Set 1: Doesn\u0027t seem to work\n\nBuild failed.  For information on how to proceed, see https://wiki.openstack.org/wiki/GerritJenkinsGit#Test_Failures\n\n- gate-ironic-python-agent-pep8 http://logs.openstack.org/87/83087/1/check/gate-ironic-python-agent-pep8/7e8e0aa : SUCCESS in 37s\n- gate-ironic-python-agent-python26 http://logs.openstack.org/87/83087/1/check/gate-ironic-python-agent-python26/ed5480c : SUCCESS in 1m 25s\n- gate-ironic-python-agent-python27 http://logs.openstack.org/87/83087/1/check/gate-ironic-python-agent-python27/35c9cae : SUCCESS in 1m 19s\n- gate-ironic-python-agent-python33 http://logs.openstack.org/87/83087/1/check/gate-ironic-python-agent-python33/64ffd3e : FAILURE in 1m 13s\n\n","accounts_in_message":[],"_revision_number":1},{"id":"55a14ecb89da3435d79649e68345dc9eba384835","author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"date":"2014-03-27 00:21:42.000000000","message":"Patch Set 1:\n\nI made a mistake in the initial configuration to have py33 jobs gating/checking. I have an infra review up here: https://review.openstack.org/#/c/83255/ but this is blocked until that gets in.\n\nSorry,\nJay","accounts_in_message":[],"_revision_number":1},{"id":"cde2da734fc6a0328aa1179770bc5fffa6bf2a1d","author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"date":"2014-03-27 00:37:54.000000000","message":"Patch Set 1:\n\nrecheck no bug","accounts_in_message":[],"_revision_number":1},{"id":"ce0860453c7d0087207f2f5ae819cd8a9a205312","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2014-03-27 00:37:55.000000000","message":"Patch Set 1: No score\n\nStarting check jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":1},{"id":"de8e6a93f7b5537cc31eab1ef3b0b9b85b0994c6","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2014-03-27 00:45:25.000000000","message":"Patch Set 1: Doesn\u0027t seem to work\n\nBuild failed.  For information on how to proceed, see https://wiki.openstack.org/wiki/GerritJenkinsGit#Test_Failures\n\n- gate-ironic-python-agent-pep8 http://logs.openstack.org/87/83087/1/check/gate-ironic-python-agent-pep8/377d11a : SUCCESS in 57s\n- gate-ironic-python-agent-python26 http://logs.openstack.org/87/83087/1/check/gate-ironic-python-agent-python26/c073f3b : SUCCESS in 1m 03s\n- gate-ironic-python-agent-python27 http://logs.openstack.org/87/83087/1/check/gate-ironic-python-agent-python27/6eee71b : SUCCESS in 1m 01s\n- gate-ironic-python-agent-python33 http://logs.openstack.org/87/83087/1/check/gate-ironic-python-agent-python33/466bebe : FAILURE in 1m 20s\n\n","accounts_in_message":[],"_revision_number":1},{"id":"075225b70f453f6d49b49ab4425e9acd364970ae","author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"date":"2014-03-27 00:59:05.000000000","message":"Patch Set 1: I would prefer that you didn\u0027t merge this\n\n(1 inline comment)\n\nOne comment inline to clean things up a bit, and handle the \"no such extension\" case, for example if the command is \"doesnotexist.do_something\".\n\nI\u0027d also like to see a test for the \"no such extension\" case.\n\nOtherwise looks good, thanks for doing this!","accounts_in_message":[],"_revision_number":1},{"id":"ff954630f75a4392e6fad367a61cb78f892d3d2f","author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"date":"2014-03-27 01:03:39.000000000","message":"Patch Set 1:\n\nAlso, not sure why the python 3 tests are still showing up - if they run after you push another patch set I\u0027ll chat with infra and see what\u0027s going on.","accounts_in_message":[],"_revision_number":1},{"id":"92ac7636e784382cfbafe1c9cea44fed8a8402e8","author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"date":"2014-03-27 12:02:53.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"6c9873a9b0a1bdd32c9d19fe6e40100b8d8c5a5a","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2014-03-27 12:02:54.000000000","message":"Patch Set 2:\n\nStarting check jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":2},{"id":"8c0ff34ceb039c698481a81b1dcd0c39a22d56f9","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2014-03-27 12:04:02.000000000","message":"Patch Set 2: Works for me\n\nBuild succeeded.\n\n- gate-ironic-python-agent-pep8 http://logs.openstack.org/87/83087/2/check/gate-ironic-python-agent-pep8/1faae52 : SUCCESS in 59s\n- gate-ironic-python-agent-python26 http://logs.openstack.org/87/83087/2/check/gate-ironic-python-agent-python26/48f10ef : SUCCESS in 48s\n- gate-ironic-python-agent-python27 http://logs.openstack.org/87/83087/2/check/gate-ironic-python-agent-python27/2145171 : SUCCESS in 1m 07s\n\n","accounts_in_message":[],"_revision_number":2},{"id":"0b27bc9bbacac3dd2663572bd182363a57e8ed1c","author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"date":"2014-03-27 13:06:56.000000000","message":"Patch Set 2: I would prefer that you didn\u0027t merge this\n\n(2 inline comments)\n\nTwo comments inline - once these are fixed up, this should be good to go. Thanks! :)","accounts_in_message":[],"_revision_number":2},{"id":"1931d13e95aa256e9b2d0c54eb3aeef137a25bbd","author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"date":"2014-03-27 13:29:21.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"538582dc2b3fd8899f75e324bf4a97fa40016f23","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2014-03-27 13:29:22.000000000","message":"Patch Set 3:\n\nStarting check jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":3},{"id":"4e29ad3e01216fa3d6a68a75602a6307596e708a","author":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"date":"2014-03-27 13:31:37.000000000","message":"Patch Set 2: (2 inline comments)\n\n","accounts_in_message":[],"_revision_number":2},{"id":"c3b7e4d8fcb4a89afbbb6812e257cf167a556f1e","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2014-03-27 13:33:21.000000000","message":"Patch Set 3: Works for me\n\nBuild succeeded.\n\n- gate-ironic-python-agent-pep8 http://logs.openstack.org/87/83087/3/check/gate-ironic-python-agent-pep8/63276f3 : SUCCESS in 1m 19s\n- gate-ironic-python-agent-python26 http://logs.openstack.org/87/83087/3/check/gate-ironic-python-agent-python26/4263141 : SUCCESS in 1m 14s\n- gate-ironic-python-agent-python27 http://logs.openstack.org/87/83087/3/check/gate-ironic-python-agent-python27/bd7280f : SUCCESS in 47s\n\n","accounts_in_message":[],"_revision_number":3},{"id":"dbe619df23b379511051f3fb63832cd08d9e118f","author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"date":"2014-03-27 13:33:39.000000000","message":"Patch Set 3: Looks good to me (core reviewer)\n\nLGTM, thanks!","accounts_in_message":[],"_revision_number":3},{"id":"38482f7113b3acf990d0cfb49432ba6ac6a3964c","author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"date":"2014-03-27 14:59:15.000000000","message":"Patch Set 3: Looks good to me (core reviewer); Approved\n\n","accounts_in_message":[],"_revision_number":3},{"id":"8566f2d6cca0e974443f13f9d82c3f724c568671","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2014-03-27 14:59:16.000000000","message":"Patch Set 3: No score\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":3},{"id":"12b16eff9d74f82c5e914198b8aa0a61f06319b8","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2014-03-27 15:02:20.000000000","message":"Patch Set 3: Verified\n\nBuild succeeded.\n\n- gate-ironic-python-agent-pep8 http://logs.openstack.org/87/83087/3/gate/gate-ironic-python-agent-pep8/9e75f8d : SUCCESS in 1m 05s\n- gate-ironic-python-agent-python26 http://logs.openstack.org/87/83087/3/gate/gate-ironic-python-agent-python26/994d46c : SUCCESS in 1m 12s\n- gate-ironic-python-agent-python27 http://logs.openstack.org/87/83087/3/gate/gate-ironic-python-agent-python27/59ad1a6 : SUCCESS in 1m 11s\n\n","accounts_in_message":[],"_revision_number":3},{"id":"b172f44c9d148f5dbf0438bf32bfc189b969eaec","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2014-03-27 15:02:20.000000000","message":"Change has been successfully merged into the git repository.","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"aee1555156706bfebd37d98d6d315229ee024cc4","revisions":{"3e2a712343c9bdcb100902bb1b4f41b234ec2c69":{"kind":"REWORK","_number":1,"created":"2014-03-26 15:00:02.000000000","uploader":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"ref":"refs/changes/87/83087/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ironic-python-agent","ref":"refs/changes/87/83087/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ironic-python-agent refs/changes/87/83087/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ironic-python-agent refs/changes/87/83087/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ironic-python-agent refs/changes/87/83087/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ironic-python-agent refs/changes/87/83087/1"}}},"commit":{"parents":[{"commit":"55ea7b8edd563b5bd293110f09e49ae5317bfa84","subject":"Merge pull request #73 from rackerlabs/JoshNang/heartbeat","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ironic-python-agent/commit/55ea7b8edd563b5bd293110f09e49ae5317bfa84"}]}],"author":{"name":"Alexander Gordeev","email":"agordeev@mirantis.com","date":"2014-03-25 14:00:10.000000000","tz":240},"committer":{"name":"Alexander Gordeev","email":"agordeev@mirantis.com","date":"2014-03-26 14:57:23.000000000","tz":240},"subject":"Get rid of modes. Introduce pluggable extensions","message":"Get rid of modes. Introduce pluggable extensions\n\nAllow multiple extensions to be loaded by switching to ExtensionManager\nfrom stevedore. Remove any reference to modes.\n\nChange-Id: Ic160478625226b4dd17bd68b3d37f3b05823e519\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ironic-python-agent/commit/3e2a712343c9bdcb100902bb1b4f41b234ec2c69"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ironic-python-agent/commit/3e2a712343c9bdcb100902bb1b4f41b234ec2c69"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"55ea7b8edd563b5bd293110f09e49ae5317bfa84","is_merged_in_target_branch":true}],"branch":"refs/heads/master"},"5ca1e2be7011eb3df6c4a94410b10e749f347bfc":{"kind":"REWORK","_number":2,"created":"2014-03-27 12:02:53.000000000","uploader":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"ref":"refs/changes/87/83087/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ironic-python-agent","ref":"refs/changes/87/83087/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ironic-python-agent refs/changes/87/83087/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ironic-python-agent refs/changes/87/83087/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ironic-python-agent refs/changes/87/83087/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ironic-python-agent refs/changes/87/83087/2"}}},"commit":{"parents":[{"commit":"55ea7b8edd563b5bd293110f09e49ae5317bfa84","subject":"Merge pull request #73 from rackerlabs/JoshNang/heartbeat","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ironic-python-agent/commit/55ea7b8edd563b5bd293110f09e49ae5317bfa84"}]}],"author":{"name":"Alexander Gordeev","email":"agordeev@mirantis.com","date":"2014-03-25 14:00:10.000000000","tz":240},"committer":{"name":"Alexander Gordeev","email":"agordeev@mirantis.com","date":"2014-03-27 12:01:45.000000000","tz":240},"subject":"Get rid of modes. Introduce pluggable extensions","message":"Get rid of modes. Introduce pluggable extensions\n\nAllow multiple extensions to be loaded by switching to ExtensionManager\nfrom stevedore. Remove any reference to modes.\n\nChange-Id: Ic160478625226b4dd17bd68b3d37f3b05823e519\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ironic-python-agent/commit/5ca1e2be7011eb3df6c4a94410b10e749f347bfc"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ironic-python-agent/commit/5ca1e2be7011eb3df6c4a94410b10e749f347bfc"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"55ea7b8edd563b5bd293110f09e49ae5317bfa84","is_merged_in_target_branch":true}],"branch":"refs/heads/master"},"aee1555156706bfebd37d98d6d315229ee024cc4":{"kind":"REWORK","_number":3,"created":"2014-03-27 13:29:21.000000000","uploader":{"_account_id":8003,"name":"Aleksandr Gordeev","email":"agordeev@mirantis.com","username":"agordeev"},"ref":"refs/changes/87/83087/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ironic-python-agent","ref":"refs/changes/87/83087/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ironic-python-agent refs/changes/87/83087/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ironic-python-agent refs/changes/87/83087/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ironic-python-agent refs/changes/87/83087/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ironic-python-agent refs/changes/87/83087/3"}}},"commit":{"parents":[{"commit":"55ea7b8edd563b5bd293110f09e49ae5317bfa84","subject":"Merge pull request #73 from rackerlabs/JoshNang/heartbeat","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ironic-python-agent/commit/55ea7b8edd563b5bd293110f09e49ae5317bfa84"}]}],"author":{"name":"Alexander Gordeev","email":"agordeev@mirantis.com","date":"2014-03-25 14:00:10.000000000","tz":240},"committer":{"name":"Alexander Gordeev","email":"agordeev@mirantis.com","date":"2014-03-27 13:28:57.000000000","tz":240},"subject":"Get rid of modes. Introduce pluggable extensions","message":"Get rid of modes. Introduce pluggable extensions\n\nAllow multiple extensions to be loaded by switching to ExtensionManager\nfrom stevedore. Remove any reference to modes.\n\nChange-Id: Ic160478625226b4dd17bd68b3d37f3b05823e519\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ironic-python-agent/commit/aee1555156706bfebd37d98d6d315229ee024cc4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ironic-python-agent/commit/aee1555156706bfebd37d98d6d315229ee024cc4"}]},"parents_data":[{"branch_name":"refs/heads/master","commit_id":"55ea7b8edd563b5bd293110f09e49ae5317bfa84","is_merged_in_target_branch":true}],"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
