)]}'
{"id":"openstack%2Fpython-openstackclient~439048","triplet_id":"openstack%2Fpython-openstackclient~master~I0c3f9a52ffe1ae2b5b230cb13d6376dd9131aaf9","project":"openstack/python-openstackclient","branch":"master","topic":"bug/1656788","hashtags":[],"change_id":"I0c3f9a52ffe1ae2b5b230cb13d6376dd9131aaf9","subject":"Simplify logic around option lists in port set","status":"MERGED","created":"2017-02-28 16:28:07.000000000","updated":"2017-03-27 17:33:23.000000000","submitted":"2017-03-27 17:33:23.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"d4f9c4348a1f0803dc78fcca9837202e5276d99e","_number":439048,"virtual_id_number":439048,"owner":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":0,"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},{"value":2,"date":"2017-03-27 17:33:23.000000000","post_submit":true,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},{"value":0,"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"}],"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":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":2,"date":"2017-03-27 16:17:28.000000000","_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},{"value":2,"date":"2017-03-21 03:15:28.000000000","_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"}],"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":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"all":[{"value":0,"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":1,"date":"2017-03-27 16:17:28.000000000","_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},{"value":0,"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2017-02-28 16:36:54.000000000","updated_by":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"reviewer":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"state":"REVIEWER"},{"updated":"2017-03-21 03:15:28.000000000","updated_by":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"reviewer":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"state":"REVIEWER"},{"updated":"2017-03-27 17:33:23.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"62cbeb022d73db7c30dcc80f2ef5d2233933e785","author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"date":"2017-02-28 16:28:07.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"e135525f1ce7bf95f4dec993fa161ac02cb6fb7e","author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"date":"2017-02-28 16:28:28.000000000","message":"Patch Set 1: Workflow-1\n\nChasing possible SDK issue...","accounts_in_message":[],"_revision_number":1},{"id":"01883bbbcb2a77c4e37cc24d0d9d818247109231","author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"date":"2017-02-28 16:36:54.000000000","message":"Patch Set 1: Code-Review+1\n\nCode seems fine otherwise","accounts_in_message":[],"_revision_number":1},{"id":"b76c12e5fcb0dc0db68a38150ce12d4641a0108d","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2017-02-28 18:02:32.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-openstackclient-docs-ubuntu-xenial http://docs-draft.openstack.org/48/439048/1/check/gate-python-openstackclient-docs-ubuntu-xenial/3247218//doc/build/html/ : SUCCESS in 4m 07s\n- gate-python-openstackclient-pep8-ubuntu-xenial http://logs.openstack.org/48/439048/1/check/gate-python-openstackclient-pep8-ubuntu-xenial/aeaec9a/ : FAILURE in 5m 16s\n- gate-python-openstackclient-python27-ubuntu-xenial http://logs.openstack.org/48/439048/1/check/gate-python-openstackclient-python27-ubuntu-xenial/df5d580/ : FAILURE in 4m 24s\n- gate-python-openstackclient-python35 http://logs.openstack.org/48/439048/1/check/gate-python-openstackclient-python35/29e9e84/ : FAILURE in 2m 41s\n- gate-tempest-dsvm-neutron-src-python-openstackclient-ubuntu-xenial http://logs.openstack.org/48/439048/1/check/gate-tempest-dsvm-neutron-src-python-openstackclient-ubuntu-xenial/3c1acf7/ : SUCCESS in 1h 30m 37s\n- check-osc-plugins http://logs.openstack.org/48/439048/1/check/check-osc-plugins/e2e1fc1/ : SUCCESS in 6m 04s (non-voting)\n- gate-osc-dsvm-functional-ubuntu-xenial http://logs.openstack.org/48/439048/1/check/gate-osc-dsvm-functional-ubuntu-xenial/17f6b0e/ : FAILURE in 30m 56s\n- gate-osc-dsvm-functional-tips-ubuntu-xenial-nv http://logs.openstack.org/48/439048/1/check/gate-osc-dsvm-functional-tips-ubuntu-xenial-nv/ed6d5df/ : FAILURE in 32m 32s (non-voting)\n- gate-tripleo-ci-centos-7-nonha-multinode-nv http://logs.openstack.org/48/439048/1/check/gate-tripleo-ci-centos-7-nonha-multinode-nv/8d54d8e/ : SUCCESS in 1h 31m 52s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"58d9e1b1006260a97087366ecadf4753dec9b4b6","author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"date":"2017-02-28 22:14:33.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"44fbc39b6bbb37371f64baa10119c632c8912601","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2017-03-01 02:03:27.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-openstackclient-docs-ubuntu-xenial http://docs-draft.openstack.org/48/439048/2/check/gate-python-openstackclient-docs-ubuntu-xenial/02afb41//doc/build/html/ : SUCCESS in 3m 42s\n- gate-python-openstackclient-pep8-ubuntu-xenial http://logs.openstack.org/48/439048/2/check/gate-python-openstackclient-pep8-ubuntu-xenial/2685899/ : SUCCESS in 4m 36s\n- gate-python-openstackclient-python27-ubuntu-xenial http://logs.openstack.org/48/439048/2/check/gate-python-openstackclient-python27-ubuntu-xenial/355c609/ : SUCCESS in 4m 01s\n- gate-python-openstackclient-python35 http://logs.openstack.org/48/439048/2/check/gate-python-openstackclient-python35/2a9daad/ : SUCCESS in 3m 19s\n- gate-tempest-dsvm-neutron-src-python-openstackclient-ubuntu-xenial http://logs.openstack.org/48/439048/2/check/gate-tempest-dsvm-neutron-src-python-openstackclient-ubuntu-xenial/fb25626/ : SUCCESS in 1h 34m 35s\n- check-osc-plugins http://logs.openstack.org/48/439048/2/check/check-osc-plugins/3abbfc9/ : SUCCESS in 34m 23s (non-voting)\n- gate-osc-dsvm-functional-ubuntu-xenial http://logs.openstack.org/48/439048/2/check/gate-osc-dsvm-functional-ubuntu-xenial/20399b5/ : SUCCESS in 1h 07m 46s\n- gate-osc-dsvm-functional-tips-ubuntu-xenial-nv http://logs.openstack.org/48/439048/2/check/gate-osc-dsvm-functional-tips-ubuntu-xenial-nv/fbef03c/ : SUCCESS in 1h 06m 31s (non-voting)\n- gate-tripleo-ci-centos-7-nonha-multinode-nv http://logs.openstack.org/48/439048/2/check/gate-tripleo-ci-centos-7-nonha-multinode-nv/0ffd079/ : SUCCESS in 2h 16m 37s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"d194cc4765ea4ba4c9dcb3d37eda01a9018ca539","author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"date":"2017-03-02 12:50:15.000000000","message":"Patch Set 2: Code-Review+2","accounts_in_message":[],"_revision_number":2},{"id":"f7fe82f24c177a331f4f9c20bf561112faecec88","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2017-03-20 20:53:57.000000000","message":"Patch Set 2: Verified-1\n\nMerge Failed.\n\nThis change or one of its cross-repo dependencies was unable to be automatically merged with the current state of its repository. Please rebase the change and upload a new patchset.","accounts_in_message":[],"_revision_number":2},{"id":"b4d6ff20122111e1127d9abc31df0dd6e1f7a2e3","author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"date":"2017-03-20 21:56:19.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"18e37649e7be418bbcbb6323f5b7eb46f34410be","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2017-03-20 23:25:27.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-openstackclient-docs-ubuntu-xenial http://docs-draft.openstack.org/48/439048/3/check/gate-python-openstackclient-docs-ubuntu-xenial/a7623a5//doc/build/html/ : SUCCESS in 3m 21s\n- gate-python-openstackclient-pep8-ubuntu-xenial http://logs.openstack.org/48/439048/3/check/gate-python-openstackclient-pep8-ubuntu-xenial/a2a3f3d/ : SUCCESS in 3m 55s\n- gate-python-openstackclient-python27-ubuntu-xenial http://logs.openstack.org/48/439048/3/check/gate-python-openstackclient-python27-ubuntu-xenial/57bc3f2/ : SUCCESS in 4m 51s\n- gate-python-openstackclient-python35 http://logs.openstack.org/48/439048/3/check/gate-python-openstackclient-python35/d4d3860/ : SUCCESS in 5m 16s\n- gate-tempest-dsvm-neutron-src-python-openstackclient-ubuntu-xenial http://logs.openstack.org/48/439048/3/check/gate-tempest-dsvm-neutron-src-python-openstackclient-ubuntu-xenial/abe4f6b/ : SUCCESS in 1h 07m 54s\n- check-osc-plugins http://logs.openstack.org/48/439048/3/check/check-osc-plugins/5445a94/ : SUCCESS in 3m 37s (non-voting)\n- gate-osc-dsvm-functional-ubuntu-xenial http://logs.openstack.org/48/439048/3/check/gate-osc-dsvm-functional-ubuntu-xenial/9d44688/ : SUCCESS in 33m 55s\n- gate-osc-dsvm-functional-tips-ubuntu-xenial-nv http://logs.openstack.org/48/439048/3/check/gate-osc-dsvm-functional-tips-ubuntu-xenial-nv/09a4e6d/ : FAILURE in 1h 04m 31s (non-voting)\n- gate-tripleo-ci-centos-7-nonha-multinode-nv http://logs.openstack.org/48/439048/3/check/gate-tripleo-ci-centos-7-nonha-multinode-nv/deba027/ : SUCCESS in 1h 27m 18s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"02b5c910898ffb1b9d3cbf6230e425968f23ac62","author":{"_account_id":21514,"name":"Huanxuan Ao","email":"aohuanxuan@163.com","username":"aohuanxuan"},"date":"2017-03-21 03:15:28.000000000","message":"Patch Set 3: Code-Review+2","accounts_in_message":[],"_revision_number":3},{"id":"28ade603270efef7a39824fb00792b05f06d510e","author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"date":"2017-03-27 16:17:28.000000000","message":"Patch Set 3: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":3},{"id":"fe5902d4c513d4f58a32611f4514b2e7b1792182","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2017-03-27 16:17:39.000000000","message":"Patch Set 3: -Verified\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":3},{"id":"b4b2a4507c4db13961f66b5feeda878555a7f783","date":"2017-03-27 17:33:23.000000000","message":"Change has been successfully merged into the git repository by Jenkins","accounts_in_message":[],"_revision_number":3},{"id":"34871536105c1a56a8b78f991b2aa35319c31716","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2017-03-27 17:33:23.000000000","message":"Patch Set 3: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- gate-python-openstackclient-docs-ubuntu-xenial http://docs-draft.openstack.org/48/439048/3/gate/gate-python-openstackclient-docs-ubuntu-xenial/d3ab873//doc/build/html/ : SUCCESS in 4m 46s\n- gate-python-openstackclient-pep8-ubuntu-xenial http://logs.openstack.org/48/439048/3/gate/gate-python-openstackclient-pep8-ubuntu-xenial/e446578/ : SUCCESS in 3m 53s\n- gate-python-openstackclient-python27-ubuntu-xenial http://logs.openstack.org/48/439048/3/gate/gate-python-openstackclient-python27-ubuntu-xenial/2b28721/ : SUCCESS in 3m 47s\n- gate-python-openstackclient-python35 http://logs.openstack.org/48/439048/3/gate/gate-python-openstackclient-python35/421119a/ : SUCCESS in 6m 01s\n- gate-tempest-dsvm-neutron-src-python-openstackclient-ubuntu-xenial http://logs.openstack.org/48/439048/3/gate/gate-tempest-dsvm-neutron-src-python-openstackclient-ubuntu-xenial/0cab34c/ : SUCCESS in 1h 14m 42s\n- gate-osc-dsvm-functional-ubuntu-xenial http://logs.openstack.org/48/439048/3/gate/gate-osc-dsvm-functional-ubuntu-xenial/1f3e994/ : SUCCESS in 39m 48s","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"82a86d2d5857148eef96332761e4a88321f035fa","revisions":{"f0265b94f9569b1f34e9944d437b69c4806a3a7a":{"kind":"REWORK","_number":1,"created":"2017-02-28 16:28:07.000000000","uploader":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"ref":"refs/changes/48/439048/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-openstackclient","ref":"refs/changes/48/439048/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/48/439048/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/48/439048/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/48/439048/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-openstackclient refs/changes/48/439048/1"}}},"commit":{"parents":[{"commit":"9d946f0f45c83c5677e9dd2688830c45cb6a24af","subject":"Port set/unset SecGroup Bug Fix","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/9d946f0f45c83c5677e9dd2688830c45cb6a24af"}]}],"author":{"name":"Dean Troyer","email":"dtroyer@gmail.com","date":"2017-02-28 16:27:02.000000000","tz":-360},"committer":{"name":"Dean Troyer","email":"dtroyer@gmail.com","date":"2017-02-28 16:27:10.000000000","tz":-360},"subject":"Simplify logic around option lists in port set","message":"Simplify logic around option lists in port set\n\nUse the same pattern as much as possible to handle option pairs\n--XYZ and --no-XYZ for managing lists of attributes.\n\nChange-Id: I0c3f9a52ffe1ae2b5b230cb13d6376dd9131aaf9\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/f0265b94f9569b1f34e9944d437b69c4806a3a7a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/f0265b94f9569b1f34e9944d437b69c4806a3a7a"}]},"branch":"refs/heads/master"},"0e8a2d48bfc107100b6961d37625233cfc2000d9":{"kind":"REWORK","_number":2,"created":"2017-02-28 22:14:33.000000000","uploader":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"ref":"refs/changes/48/439048/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-openstackclient","ref":"refs/changes/48/439048/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/48/439048/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/48/439048/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/48/439048/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-openstackclient refs/changes/48/439048/2"}}},"commit":{"parents":[{"commit":"9d946f0f45c83c5677e9dd2688830c45cb6a24af","subject":"Port set/unset SecGroup Bug Fix","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/9d946f0f45c83c5677e9dd2688830c45cb6a24af"}]}],"author":{"name":"Dean Troyer","email":"dtroyer@gmail.com","date":"2017-02-28 16:27:02.000000000","tz":-360},"committer":{"name":"Dean Troyer","email":"dtroyer@gmail.com","date":"2017-02-28 22:10:05.000000000","tz":-360},"subject":"Simplify logic around option lists in port set","message":"Simplify logic around option lists in port set\n\nUse a common pattern to handle option pairs --XYZ and --no-XYZ for managing\nlists of attributes. This pattern looks at the presence of the option\nin parsed_args first and branches as necessary.\n\nSome specific steps are included for the SDK Network resources to reliably\nset the \u0027dirty\u0027 flag for changed attributes via one or both of the following:\n* iterate over lists of original resource attributes to force the creation\n  of a new list object\n* use [].extend() rather than +\u003d to add to the existing list (substitute\n  {}.update() for dicts)\n\nChange-Id: I0c3f9a52ffe1ae2b5b230cb13d6376dd9131aaf9\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/0e8a2d48bfc107100b6961d37625233cfc2000d9"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/0e8a2d48bfc107100b6961d37625233cfc2000d9"}]},"branch":"refs/heads/master"},"82a86d2d5857148eef96332761e4a88321f035fa":{"kind":"REWORK","_number":3,"created":"2017-03-20 21:56:19.000000000","uploader":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"ref":"refs/changes/48/439048/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-openstackclient","ref":"refs/changes/48/439048/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/48/439048/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/48/439048/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-openstackclient refs/changes/48/439048/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-openstackclient refs/changes/48/439048/3"}}},"commit":{"parents":[{"commit":"3e621c9a9c730e758bd4f8c73d29c00f3c622f5b","subject":"Merge \"Introduce Neutron DHCP agent commands to OSC\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/3e621c9a9c730e758bd4f8c73d29c00f3c622f5b"}]}],"author":{"name":"Dean Troyer","email":"dtroyer@gmail.com","date":"2017-02-28 16:27:02.000000000","tz":-360},"committer":{"name":"Dean Troyer","email":"dtroyer@gmail.com","date":"2017-03-20 21:55:48.000000000","tz":-300},"subject":"Simplify logic around option lists in port set","message":"Simplify logic around option lists in port set\n\nUse a common pattern to handle option pairs --XYZ and --no-XYZ for managing\nlists of attributes. This pattern looks at the presence of the option\nin parsed_args first and branches as necessary.\n\nSome specific steps are included for the SDK Network resources to reliably\nset the \u0027dirty\u0027 flag for changed attributes via one or both of the following:\n* iterate over lists of original resource attributes to force the creation\n  of a new list object\n* use [].extend() rather than +\u003d to add to the existing list (substitute\n  {}.update() for dicts)\n\nChange-Id: I0c3f9a52ffe1ae2b5b230cb13d6376dd9131aaf9\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/82a86d2d5857148eef96332761e4a88321f035fa"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-openstackclient/commit/82a86d2d5857148eef96332761e4a88321f035fa"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
