)]}'
{".zuul.yaml":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"ce732f956cfcb9a54f56f4d48696cbdb4e5b57f3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"      - openstack/os-vif"},{"line_number":11,"context_line":"      - openstack/tempest"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"- job:"},{"line_number":14,"context_line":"    name: openstack-tox-functional-ovs-with-sudo"},{"line_number":15,"context_line":"    parent: openstack-tox-functional-with-sudo"},{"line_number":16,"context_line":"    pre: playbooks/openstack-tox-functional-ovs-with-sudo/pre.yaml"},{"line_number":17,"context_line":"    timeout: 600"},{"line_number":18,"context_line":"#    required-projects:"},{"line_number":19,"context_line":"#      - openstack-infra/devstack-gate"},{"line_number":20,"context_line":"#      - openstack/nova"},{"line_number":21,"context_line":"#      - openstack/os-vif"},{"line_number":22,"context_line":"#      - openstack/tempest"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"- project:"},{"line_number":25,"context_line":"    templates:"},{"line_number":26,"context_line":"      - check-requirements"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"3f79a3b5_83fbd379","line":23,"range":{"start_line":13,"start_character":2,"end_line":23,"end_character":0},"updated":"2018-09-24 15:40:44.000000000","message":"extra keys not allowed @ data[\u0027pre\u0027]","commit_id":"7d8afa7a6d573481d8b4697e2124a633f0e54101"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"ce732f956cfcb9a54f56f4d48696cbdb4e5b57f3","unresolved":false,"context_lines":[{"line_number":21,"context_line":"#      - openstack/os-vif"},{"line_number":22,"context_line":"#      - openstack/tempest"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"- project:"},{"line_number":25,"context_line":"    templates:"},{"line_number":26,"context_line":"      - check-requirements"},{"line_number":27,"context_line":"      - openstack-lower-constraints-jobs"},{"line_number":28,"context_line":"      - openstack-python-jobs"},{"line_number":29,"context_line":"      - openstack-python35-jobs"},{"line_number":30,"context_line":"      - openstack-python36-jobs"},{"line_number":31,"context_line":"      - publish-openstack-docs-pti"},{"line_number":32,"context_line":"      - release-notes-jobs-python3"},{"line_number":33,"context_line":"    check:"},{"line_number":34,"context_line":"      jobs:"},{"line_number":35,"context_line":"        - kuryr-kubernetes-tempest-daemon-octavia"},{"line_number":36,"context_line":"        - openstack-tox-functional-ovs-with-sudo"},{"line_number":37,"context_line":"        - os-vif-ovs"},{"line_number":38,"context_line":"    gate:"},{"line_number":39,"context_line":"      jobs:"},{"line_number":40,"context_line":"        - kuryr-kubernetes-tempest-daemon-octavia"},{"line_number":41,"context_line":"        - openstack-tox-functional-ovs-with-sudo"},{"line_number":42,"context_line":"        - os-vif-ovs"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"3f79a3b5_a3004f68","line":42,"range":{"start_line":24,"start_character":2,"end_line":42,"end_character":0},"updated":"2018-09-24 15:40:44.000000000","message":"Job openstack-tox-functional-ovs-with-sudo not defined","commit_id":"7d8afa7a6d573481d8b4697e2124a633f0e54101"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"af4c528337ac37ace93caece1e5792189c635f53","unresolved":false,"context_lines":[{"line_number":10,"context_line":"      - openstack/os-vif"},{"line_number":11,"context_line":"      - openstack/tempest"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"- job:"},{"line_number":14,"context_line":"    name: openstack-tox-functional-ovs-with-sudo"},{"line_number":15,"context_line":"    parent: openstack-tox-functional-with-sudo"},{"line_number":16,"context_line":"    pre: playbooks/openstack-tox-functional-ovs-with-sudo/pre.yaml"},{"line_number":17,"context_line":"    timeout: 600"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- project:"},{"line_number":20,"context_line":"    templates:"},{"line_number":21,"context_line":"      - check-requirements"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"3f79a3b5_63d317d5","line":18,"range":{"start_line":13,"start_character":2,"end_line":18,"end_character":0},"updated":"2018-09-24 15:45:49.000000000","message":"extra keys not allowed @ data[\u0027pre\u0027]","commit_id":"8724ed6a7ab43a9e244edf25232ce98ee7d46bf9"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"change_message_id":"af4c528337ac37ace93caece1e5792189c635f53","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    pre: playbooks/openstack-tox-functional-ovs-with-sudo/pre.yaml"},{"line_number":17,"context_line":"    timeout: 600"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- project:"},{"line_number":20,"context_line":"    templates:"},{"line_number":21,"context_line":"      - check-requirements"},{"line_number":22,"context_line":"      - openstack-lower-constraints-jobs"},{"line_number":23,"context_line":"      - openstack-python-jobs"},{"line_number":24,"context_line":"      - openstack-python35-jobs"},{"line_number":25,"context_line":"      - openstack-python36-jobs"},{"line_number":26,"context_line":"      - publish-openstack-docs-pti"},{"line_number":27,"context_line":"      - release-notes-jobs-python3"},{"line_number":28,"context_line":"    check:"},{"line_number":29,"context_line":"      jobs:"},{"line_number":30,"context_line":"        - kuryr-kubernetes-tempest-daemon-octavia"},{"line_number":31,"context_line":"        - openstack-tox-functional-ovs-with-sudo"},{"line_number":32,"context_line":"        - os-vif-ovs"},{"line_number":33,"context_line":"    gate:"},{"line_number":34,"context_line":"      jobs:"},{"line_number":35,"context_line":"        - kuryr-kubernetes-tempest-daemon-octavia"},{"line_number":36,"context_line":"        - openstack-tox-functional-ovs-with-sudo"},{"line_number":37,"context_line":"        - os-vif-ovs"}],"source_content_type":"text/x-yaml","patch_set":28,"id":"3f79a3b5_03e02397","line":37,"range":{"start_line":19,"start_character":2,"end_line":37,"end_character":0},"updated":"2018-09-24 15:45:49.000000000","message":"Job openstack-tox-functional-ovs-with-sudo not defined","commit_id":"8724ed6a7ab43a9e244edf25232ce98ee7d46bf9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f4b3fa1e8d1a5d58a2dff608a183464addbc181","unresolved":false,"context_lines":[{"line_number":10,"context_line":"      - openstack/os-vif"},{"line_number":11,"context_line":"      - openstack/tempest"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"- job:"},{"line_number":14,"context_line":"    name: openstack-tox-functional-ovs-with-sudo"},{"line_number":15,"context_line":"    parent: openstack-tox-functional-with-sudo"},{"line_number":16,"context_line":"    required-projects:"},{"line_number":17,"context_line":"      - git.openstack.org/openstack-dev/devstack"},{"line_number":18,"context_line":"    pre-run: playbooks/openstack-tox-functional-ovs-with-sudo/pre.yaml"},{"line_number":19,"context_line":"    timeout: 600"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"- project:"},{"line_number":22,"context_line":"    templates:"}],"source_content_type":"text/x-yaml","patch_set":46,"id":"9fdfeff1_e395fa89","line":19,"range":{"start_line":13,"start_character":0,"end_line":19,"end_character":16},"updated":"2019-02-04 15:54:47.000000000","message":"ok so you looking at \nhttps://review.openstack.org/#/c/482226/46/playbooks/openstack-tox-functional-ovs-with-sudo/pre.yaml\n\nyou are using devstack to install ovs but not actully executing devstack.\n\nsince the run playbook is not specified in this job the run playbook of the parent will be used instead which will run the tox functional tests with sudo.","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3fcffc712509ff06cbab17ef7316d2603711a1be","unresolved":false,"context_lines":[{"line_number":10,"context_line":"      - openstack/os-vif"},{"line_number":11,"context_line":"      - openstack/tempest"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"- job:"},{"line_number":14,"context_line":"    name: openstack-tox-functional-ovs-with-sudo"},{"line_number":15,"context_line":"    parent: openstack-tox-functional-with-sudo"},{"line_number":16,"context_line":"    required-projects:"},{"line_number":17,"context_line":"      - git.openstack.org/openstack-dev/devstack"},{"line_number":18,"context_line":"    pre-run: playbooks/openstack-tox-functional-ovs-with-sudo/pre.yaml"},{"line_number":19,"context_line":"    timeout: 600"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"- project:"},{"line_number":22,"context_line":"    templates:"}],"source_content_type":"text/x-yaml","patch_set":46,"id":"9fdfeff1_beee25b2","line":19,"range":{"start_line":13,"start_character":0,"end_line":19,"end_character":16},"in_reply_to":"9fdfeff1_e395fa89","updated":"2019-02-04 16:48:32.000000000","message":"I\u0027m using \"install_package\" and \"restart_service\" functions from devstack inside the playbook","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f4b3fa1e8d1a5d58a2dff608a183464addbc181","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        - os-vif-ovs"},{"line_number":36,"context_line":"    gate:"},{"line_number":37,"context_line":"      jobs:"},{"line_number":38,"context_line":"        - kuryr-kubernetes-tempest-daemon-octavia"},{"line_number":39,"context_line":"        - openstack-tox-functional-ovs-with-sudo"},{"line_number":40,"context_line":"        - os-vif-ovs"}],"source_content_type":"text/x-yaml","patch_set":46,"id":"9fdfeff1_a3b6123e","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":49},"updated":"2019-02-04 15:54:47.000000000","message":"the kuryr job was intentonally removed form the gate until it is observed to be stable so please dont re add it in this patch.","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3fcffc712509ff06cbab17ef7316d2603711a1be","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        - os-vif-ovs"},{"line_number":36,"context_line":"    gate:"},{"line_number":37,"context_line":"      jobs:"},{"line_number":38,"context_line":"        - kuryr-kubernetes-tempest-daemon-octavia"},{"line_number":39,"context_line":"        - openstack-tox-functional-ovs-with-sudo"},{"line_number":40,"context_line":"        - os-vif-ovs"}],"source_content_type":"text/x-yaml","patch_set":46,"id":"9fdfeff1_3e38f53b","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":49},"in_reply_to":"9fdfeff1_a3b6123e","updated":"2019-02-04 16:48:32.000000000","message":"Sorry, that was a problem with the merge conflict","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"}],"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a838d46a996be80f76eb2febeafc4df2ecb8f666","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add native implementation OVSDB API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added native implementation OVSDB API. Both APIs are accesible"},{"line_number":10,"context_line":"via configuration file. The default one is the CLI vsctl."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"A new configuration variable, ``ovsdb_connection``, is added to"},{"line_number":13,"context_line":"define the connection string for the OVSDB backend."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"3f79a3b5_b4ba8e08","line":10,"range":{"start_line":10,"start_character":25,"end_line":10,"end_character":57},"updated":"2018-10-09 10:18:34.000000000","message":"it would be nice to enable the native driver as the default to have parity with neutron.\n\noperators can opt out of the native driver by setting vsctl but if we default to vsctl we cant really change it unless\nwe remmove the vsctl driver.","commit_id":"04fa9e494b75832ffd5157ead3828f802e43b1e0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"dcd448d05b60bd2d0767ccd2e17aa6e5924c7a41","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add native implementation OVSDB API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added native implementation OVSDB API. Both APIs are accesible"},{"line_number":10,"context_line":"via configuration file. The default one is the CLI vsctl."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"A new configuration variable, ``ovsdb_connection``, is added to"},{"line_number":13,"context_line":"define the connection string for the OVSDB backend."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"3f79a3b5_4e97373b","line":10,"range":{"start_line":10,"start_character":25,"end_line":10,"end_character":57},"in_reply_to":"3f79a3b5_b4ba8e08","updated":"2018-10-17 10:20:22.000000000","message":"Done","commit_id":"04fa9e494b75832ffd5157ead3828f802e43b1e0"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a838d46a996be80f76eb2febeafc4df2ecb8f666","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Added native implementation OVSDB API. Both APIs are accesible"},{"line_number":10,"context_line":"via configuration file. The default one is the CLI vsctl."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"A new configuration variable, ``ovsdb_connection``, is added to"},{"line_number":13,"context_line":"define the connection string for the OVSDB backend."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Added functional tests to vif_plug_ovs. This commit also includes"},{"line_number":16,"context_line":"the base functions to execute functional tests and a set of them"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"3f79a3b5_34ee7e21","line":13,"range":{"start_line":12,"start_character":0,"end_line":13,"end_character":51},"updated":"2018-10-09 10:18:34.000000000","message":"this was added in the previous patch","commit_id":"04fa9e494b75832ffd5157ead3828f802e43b1e0"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"dcd448d05b60bd2d0767ccd2e17aa6e5924c7a41","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Added native implementation OVSDB API. Both APIs are accesible"},{"line_number":10,"context_line":"via configuration file. The default one is the CLI vsctl."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"A new configuration variable, ``ovsdb_connection``, is added to"},{"line_number":13,"context_line":"define the connection string for the OVSDB backend."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Added functional tests to vif_plug_ovs. This commit also includes"},{"line_number":16,"context_line":"the base functions to execute functional tests and a set of them"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"3f79a3b5_2e92fb4b","line":13,"range":{"start_line":12,"start_character":0,"end_line":13,"end_character":51},"in_reply_to":"3f79a3b5_34ee7e21","updated":"2018-10-17 10:20:22.000000000","message":"Done","commit_id":"04fa9e494b75832ffd5157ead3828f802e43b1e0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b3402077dbb20a813e1b1403bf5bc630726fe4f9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add native implementation OVSDB API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added native implementation OVSDB API. Both APIs are accesible"},{"line_number":10,"context_line":"via configuration file. The default one is the CLI vsctl."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"A new configuration variable, ``ovsdb_connection``, is added to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":34,"id":"3f79a3b5_e0c6f641","line":9,"range":{"start_line":9,"start_character":53,"end_line":9,"end_character":62},"updated":"2018-10-22 14:58:53.000000000","message":"\"are accessible\" but actually I think you meant to say \"may be enabled\"","commit_id":"d573e9bf954c2cc196b254f122d3d6b3ae0f3c59"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8402148143695367c36b003a387b47ef485642d9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add native implementation OVSDB API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added native implementation OVSDB API. Both APIs are accesible"},{"line_number":10,"context_line":"via configuration file. The default one is the CLI vsctl."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"A new configuration variable, ``ovsdb_connection``, is added to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":34,"id":"9fdfeff1_78e0d5cd","line":9,"range":{"start_line":9,"start_character":53,"end_line":9,"end_character":62},"in_reply_to":"3f79a3b5_e0c6f641","updated":"2019-02-04 15:17:44.000000000","message":"Done","commit_id":"d573e9bf954c2cc196b254f122d3d6b3ae0f3c59"}],"playbooks/openstack-tox-functional-ovs-with-sudo/Debian.yaml":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5ddc198122a10e3b29c80d6bbe3fec77f9f1400d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"ovs_package: \"openvswitch-switch\""},{"line_number":3,"context_line":"ovs_service: \"openvswitch-switch\""}],"source_content_type":"text/x-yaml","patch_set":53,"id":"9fdfeff1_b36b40b7","line":2,"range":{"start_line":2,"start_character":19,"end_line":2,"end_character":33},"updated":"2019-02-25 13:18:28.000000000","message":"sigh...","commit_id":"b236560e243b20a2a3315bc6ebf7225d165b6673"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6fab43daf046b8ea7a476fa02cb6dffdcac9159c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"ovs_package: \"openvswitch-switch\""},{"line_number":3,"context_line":"ovs_service: \"openvswitch-switch\""}],"source_content_type":"text/x-yaml","patch_set":53,"id":"9fdfeff1_733e382a","line":2,"range":{"start_line":2,"start_character":19,"end_line":2,"end_character":33},"in_reply_to":"9fdfeff1_b36b40b7","updated":"2019-02-25 13:41:38.000000000","message":"I know...","commit_id":"b236560e243b20a2a3315bc6ebf7225d165b6673"}],"playbooks/openstack-tox-functional-ovs-with-sudo/Gentoo.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"08ab2cb2f7ddd882c07ea4833f01ef92e46d432a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":53,"id":"9fdfeff1_c93519dd","updated":"2019-02-25 14:59:52.000000000","message":"i dont think we support gentoo in the gate but ok","commit_id":"b236560e243b20a2a3315bc6ebf7225d165b6673"}],"playbooks/openstack-tox-functional-ovs-with-sudo/pre.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2b41a5c49d10d667f212bc00e75f68e7b49934b4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    - name: Install Open vSwitch"},{"line_number":11,"context_line":"      shell:"},{"line_number":12,"context_line":"        cmd:"},{"line_number":13,"context_line":"          /tools/configure_functional_tests.sh"},{"line_number":14,"context_line":"        executable: /bin/bash"},{"line_number":15,"context_line":"        chdir: \u0027{{ ansible_user_dir }}/workspace\u0027"},{"line_number":16,"context_line":"      environment: \u0027{{ zuul | zuul_legacy_vars }}\u0027"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"3f79a3b5_d4a6430e","line":13,"range":{"start_line":13,"start_character":10,"end_line":13,"end_character":11},"updated":"2018-10-08 11:20:50.000000000","message":"this should not be an absolte path form the root of the filesystem :)\n\nhttp://logs.openstack.org/26/482226/30/check/openstack-tox-functional-ovs-with-sudo/8811fa2/job-output.txt.gz#_2018-10-04_01_48_22_399708\n\nit should be a relative path from the os-vif dir so remove the \"/\"","commit_id":"6fc18fe75bb556ef91141f87a319849eb940d357"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"55afa7770b65359a4f4a29ec30f43b7e15a7bf16","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    - name: Install Open vSwitch"},{"line_number":11,"context_line":"      shell:"},{"line_number":12,"context_line":"        cmd:"},{"line_number":13,"context_line":"          /tools/configure_functional_tests.sh"},{"line_number":14,"context_line":"        executable: /bin/bash"},{"line_number":15,"context_line":"        chdir: \u0027{{ ansible_user_dir }}/workspace\u0027"},{"line_number":16,"context_line":"      environment: \u0027{{ zuul | zuul_legacy_vars }}\u0027"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"3f79a3b5_4705a7c0","line":13,"range":{"start_line":13,"start_character":10,"end_line":13,"end_character":11},"in_reply_to":"3f79a3b5_d4a6430e","updated":"2018-10-08 12:50:46.000000000","message":"Done","commit_id":"6fc18fe75bb556ef91141f87a319849eb940d357"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2b41a5c49d10d667f212bc00e75f68e7b49934b4","unresolved":false,"context_lines":[{"line_number":12,"context_line":"        cmd:"},{"line_number":13,"context_line":"          /tools/configure_functional_tests.sh"},{"line_number":14,"context_line":"        executable: /bin/bash"},{"line_number":15,"context_line":"        chdir: \u0027{{ ansible_user_dir }}/workspace\u0027"},{"line_number":16,"context_line":"      environment: \u0027{{ zuul | zuul_legacy_vars }}\u0027"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"3f79a3b5_14f35b0b","line":15,"range":{"start_line":15,"start_character":8,"end_line":15,"end_character":49},"updated":"2018-10-08 11:20:50.000000000","message":"you might need to add git.openstack.org/openstack/os-vif\n\ne.g. \n{{ ansible_user_dir }}/workspace/git.openstack.org/openstack/os-vif\n\n\nim not sure is there a dedicated ansible var you can use to get the current repos sorce directory or not.","commit_id":"6fc18fe75bb556ef91141f87a319849eb940d357"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"55afa7770b65359a4f4a29ec30f43b7e15a7bf16","unresolved":false,"context_lines":[{"line_number":12,"context_line":"        cmd:"},{"line_number":13,"context_line":"          /tools/configure_functional_tests.sh"},{"line_number":14,"context_line":"        executable: /bin/bash"},{"line_number":15,"context_line":"        chdir: \u0027{{ ansible_user_dir }}/workspace\u0027"},{"line_number":16,"context_line":"      environment: \u0027{{ zuul | zuul_legacy_vars }}\u0027"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"3f79a3b5_e7e153d1","line":15,"range":{"start_line":15,"start_character":8,"end_line":15,"end_character":49},"in_reply_to":"3f79a3b5_14f35b0b","updated":"2018-10-08 12:50:46.000000000","message":"I\u0027ll try to find it","commit_id":"6fc18fe75bb556ef91141f87a319849eb940d357"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d7ba7a5633cff9c7145b1692f85ed754bc9ba9c9","unresolved":false,"context_lines":[{"line_number":7,"context_line":"        path: \u0027{{ ansible_user_dir }}/workspace\u0027"},{"line_number":8,"context_line":"        state: directory"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    - name: Install Open vSwitch"},{"line_number":11,"context_line":"      shell:"},{"line_number":12,"context_line":"        cmd: |"},{"line_number":13,"context_line":"          set -e"},{"line_number":14,"context_line":"          set -x"},{"line_number":15,"context_line":"          GATE_STACK_USER\u003d{{ ansible_user }}"},{"line_number":16,"context_line":"          IS_GATE\u003dTrue"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"          GATE_DEST\u003d\"{{ ansible_user_dir }}/src/git.openstack.org\""},{"line_number":19,"context_line":"          DEVSTACK_PATH\u003d\"$GATE_DEST/openstack-dev/devstack\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"          source $DEVSTACK_PATH/functions"},{"line_number":22,"context_line":"          install_package openvswitch-switch"},{"line_number":23,"context_line":"          install_package python-openvswitch"},{"line_number":24,"context_line":"          restart_service openvswitch-switch"},{"line_number":25,"context_line":"        executable: /bin/bash"},{"line_number":26,"context_line":"        chdir: \u0027{{ zuul.project.src_dir }}\u0027"},{"line_number":27,"context_line":"      environment: \u0027{{ zuul | zuul_legacy_vars }}\u0027"}],"source_content_type":"text/x-yaml","patch_set":48,"id":"9fdfeff1_9da69d53","line":27,"range":{"start_line":10,"start_character":0,"end_line":27,"end_character":50},"updated":"2019-02-20 13:59:55.000000000","message":"Can someone explain to me why this is how we\u0027re installing Open vSwitch, as opposed to listing binary packages to be apt install\u0027d? Is there some reason to use devstack install_package and restart_service special Bash functions?\n\nI\u0027m honestly curious here, not trolling.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1df1f6a08d2f19dd26929f6af780d4fa2d5d19c6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"        path: \u0027{{ ansible_user_dir }}/workspace\u0027"},{"line_number":8,"context_line":"        state: directory"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    - name: Install Open vSwitch"},{"line_number":11,"context_line":"      shell:"},{"line_number":12,"context_line":"        cmd: |"},{"line_number":13,"context_line":"          set -e"},{"line_number":14,"context_line":"          set -x"},{"line_number":15,"context_line":"          GATE_STACK_USER\u003d{{ ansible_user }}"},{"line_number":16,"context_line":"          IS_GATE\u003dTrue"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"          GATE_DEST\u003d\"{{ ansible_user_dir }}/src/git.openstack.org\""},{"line_number":19,"context_line":"          DEVSTACK_PATH\u003d\"$GATE_DEST/openstack-dev/devstack\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"          source $DEVSTACK_PATH/functions"},{"line_number":22,"context_line":"          install_package openvswitch-switch"},{"line_number":23,"context_line":"          install_package python-openvswitch"},{"line_number":24,"context_line":"          restart_service openvswitch-switch"},{"line_number":25,"context_line":"        executable: /bin/bash"},{"line_number":26,"context_line":"        chdir: \u0027{{ zuul.project.src_dir }}\u0027"},{"line_number":27,"context_line":"      environment: \u0027{{ zuul | zuul_legacy_vars }}\u0027"}],"source_content_type":"text/x-yaml","patch_set":48,"id":"9fdfeff1_f68b36bd","line":27,"range":{"start_line":10,"start_character":0,"end_line":27,"end_character":50},"in_reply_to":"9fdfeff1_43db7820","updated":"2019-02-21 11:12:42.000000000","message":"Agree:\n- Python OVS is a dependency in ovsdbapp, so we don\u0027t need it.\n- OVS should be installed and started using the ansible package manager. For example: https://github.com/openstack-infra/openstack-zuul-jobs/blob/e3b2b86292e2ab898dbb7fae3ea872d9b3e4f9af/tests/multi-node-bridge.yaml","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"856c54cf55708c0c6ba3cb0df0fc3ca30d314caf","unresolved":false,"context_lines":[{"line_number":7,"context_line":"        path: \u0027{{ ansible_user_dir }}/workspace\u0027"},{"line_number":8,"context_line":"        state: directory"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    - name: Install Open vSwitch"},{"line_number":11,"context_line":"      shell:"},{"line_number":12,"context_line":"        cmd: |"},{"line_number":13,"context_line":"          set -e"},{"line_number":14,"context_line":"          set -x"},{"line_number":15,"context_line":"          GATE_STACK_USER\u003d{{ ansible_user }}"},{"line_number":16,"context_line":"          IS_GATE\u003dTrue"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"          GATE_DEST\u003d\"{{ ansible_user_dir }}/src/git.openstack.org\""},{"line_number":19,"context_line":"          DEVSTACK_PATH\u003d\"$GATE_DEST/openstack-dev/devstack\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"          source $DEVSTACK_PATH/functions"},{"line_number":22,"context_line":"          install_package openvswitch-switch"},{"line_number":23,"context_line":"          install_package python-openvswitch"},{"line_number":24,"context_line":"          restart_service openvswitch-switch"},{"line_number":25,"context_line":"        executable: /bin/bash"},{"line_number":26,"context_line":"        chdir: \u0027{{ zuul.project.src_dir }}\u0027"},{"line_number":27,"context_line":"      environment: \u0027{{ zuul | zuul_legacy_vars }}\u0027"}],"source_content_type":"text/x-yaml","patch_set":48,"id":"9fdfeff1_43db7820","line":27,"range":{"start_line":10,"start_character":0,"end_line":27,"end_character":50},"in_reply_to":"9fdfeff1_9da69d53","updated":"2019-02-20 14:32:00.000000000","message":"i had some question about this too earlier.\n\nit feels heavy weight too me too.\n\ni was debating suggestion we use bindep to do the installation or just\n\nsudo apt-get install openvswith-swtich || sudo yum install openvswith\n\nbut since this is ansible we can also just use teh ansible package module to install the required packages.\n\nim actully not sure if we shoudl be installing python-openvswitch as we proably should be getting it form pip.\n\nwe already list ovsdbapp as a dep in the requrement.txt\nhttps://github.com/openstack/os-vif/blob/master/requirements.txt#L13\n\nif we need ovs specifically and it is not pulled in by ovsdbapp for some reason we sould also add ovs to the requiremetns.txt\n\nthe one thing to bare in mind form a ci point of view is devstack will already be precached in the infra images so we dont have to download anything but it was not my first taught.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5ddc198122a10e3b29c80d6bbe3fec77f9f1400d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        name: \"{{ ovs_service }}\""},{"line_number":21,"context_line":"        state: started"},{"line_number":22,"context_line":"        enabled: yes"},{"line_number":23,"context_line":"      register: ovs_running"}],"source_content_type":"text/x-yaml","patch_set":53,"id":"9fdfeff1_f39a28c3","line":23,"updated":"2019-02-25 13:18:28.000000000","message":"++\n\nmuch better than the Bash-based goop from previous patch :)","commit_id":"b236560e243b20a2a3315bc6ebf7225d165b6673"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6fab43daf046b8ea7a476fa02cb6dffdcac9159c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        name: \"{{ ovs_service }}\""},{"line_number":21,"context_line":"        state: started"},{"line_number":22,"context_line":"        enabled: yes"},{"line_number":23,"context_line":"      register: ovs_running"}],"source_content_type":"text/x-yaml","patch_set":53,"id":"9fdfeff1_531a14c6","line":23,"in_reply_to":"9fdfeff1_f39a28c3","updated":"2019-02-25 13:41:38.000000000","message":"I took the idea from OSinfra","commit_id":"b236560e243b20a2a3315bc6ebf7225d165b6673"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f079835e4f87655408b20e4643498f01d621e446","unresolved":false,"context_lines":[{"line_number":1,"context_line":"- hosts: all"},{"line_number":2,"context_line":"  name: Functional tests pre-tasks"},{"line_number":3,"context_line":"  tasks:"},{"line_number":4,"context_line":"    - name: Include OS-specific variables"},{"line_number":5,"context_line":"      include_vars: \"{{ item }}\""},{"line_number":6,"context_line":"      with_first_found:"},{"line_number":7,"context_line":"        - \"{{ ansible_distribution }}.yaml\""},{"line_number":8,"context_line":"        - \"{{ ansible_os_family }}.yaml\""},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    - name: Install Open vSwitch"},{"line_number":11,"context_line":"      become: yes"}],"source_content_type":"text/x-yaml","patch_set":54,"id":"9fdfeff1_2e103000","line":8,"range":{"start_line":4,"start_character":0,"end_line":8,"end_character":40},"updated":"2019-02-26 10:49:29.000000000","message":"Is this based off something? Might be worth linking to the original source, if so","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a50c728dd1d1d37da15cabf7122cd1f7a615685c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"- hosts: all"},{"line_number":2,"context_line":"  name: Functional tests pre-tasks"},{"line_number":3,"context_line":"  tasks:"},{"line_number":4,"context_line":"    - name: Include OS-specific variables"},{"line_number":5,"context_line":"      include_vars: \"{{ item }}\""},{"line_number":6,"context_line":"      with_first_found:"},{"line_number":7,"context_line":"        - \"{{ ansible_distribution }}.yaml\""},{"line_number":8,"context_line":"        - \"{{ ansible_os_family }}.yaml\""},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    - name: Install Open vSwitch"},{"line_number":11,"context_line":"      become: yes"}],"source_content_type":"text/x-yaml","patch_set":54,"id":"9fdfeff1_e9d9c282","line":8,"range":{"start_line":4,"start_character":0,"end_line":8,"end_character":40},"in_reply_to":"9fdfeff1_2e103000","updated":"2019-02-26 12:23:42.000000000","message":"I found the idea in this link: https://monkeyswithbuttons.wordpress.com/2014/04/03/multi-os-support-in-ansible/","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"}],"releasenotes/notes/add-ovsdb-native-322fffb49c91503d.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"93fe0560f5c5f1ce7088a570cf08960873e8fb53","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added native implementation OVSDB API in ``vif_plug_ovs``. Both ``vsctl``"},{"line_number":5,"context_line":"    and ``native`` APIs could be selected by setting the configuration variable"},{"line_number":6,"context_line":"    ``ovsdb_interface``."},{"line_number":7,"context_line":"    A new configuration variable, ``ovsdb_connection``, is added. This variable"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"3f79a3b5_145a7bf1","line":4,"updated":"2018-10-08 11:55:47.000000000","message":"of","commit_id":"6fc18fe75bb556ef91141f87a319849eb940d357"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"55afa7770b65359a4f4a29ec30f43b7e15a7bf16","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added native implementation OVSDB API in ``vif_plug_ovs``. Both ``vsctl``"},{"line_number":5,"context_line":"    and ``native`` APIs could be selected by setting the configuration variable"},{"line_number":6,"context_line":"    ``ovsdb_interface``."},{"line_number":7,"context_line":"    A new configuration variable, ``ovsdb_connection``, is added. This variable"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"3f79a3b5_27742b04","line":4,"in_reply_to":"3f79a3b5_145a7bf1","updated":"2018-10-08 12:50:46.000000000","message":"Done","commit_id":"6fc18fe75bb556ef91141f87a319849eb940d357"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f4b3fa1e8d1a5d58a2dff608a183464addbc181","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added native implementation of OVSDB API in ``vif_plug_ovs``. Both"},{"line_number":5,"context_line":"    ``vsctl`` and ``native`` APIs could be selected by setting the"},{"line_number":6,"context_line":"    configuration variable ``ovsdb_interface``."},{"line_number":7,"context_line":"    A new configuration variable, ``ovsdb_connection``, is added. This variable"},{"line_number":8,"context_line":"    defines the connection string for the OVSDB backend."}],"source_content_type":"text/x-yaml","patch_set":46,"id":"9fdfeff1_833aee95","line":5,"range":{"start_line":5,"start_character":6,"end_line":5,"end_character":11},"updated":"2019-02-04 15:54:47.000000000","message":"we likely should deprecate vsctl in stien and look at removing it in Train or U","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3fcffc712509ff06cbab17ef7316d2603711a1be","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added native implementation of OVSDB API in ``vif_plug_ovs``. Both"},{"line_number":5,"context_line":"    ``vsctl`` and ``native`` APIs could be selected by setting the"},{"line_number":6,"context_line":"    configuration variable ``ovsdb_interface``."},{"line_number":7,"context_line":"    A new configuration variable, ``ovsdb_connection``, is added. This variable"},{"line_number":8,"context_line":"    defines the connection string for the OVSDB backend."}],"source_content_type":"text/x-yaml","patch_set":46,"id":"9fdfeff1_de53e96b","line":5,"range":{"start_line":5,"start_character":6,"end_line":5,"end_character":11},"in_reply_to":"9fdfeff1_833aee95","updated":"2019-02-04 16:48:32.000000000","message":"Well, this deprecation can be set in a follow patch","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f4b3fa1e8d1a5d58a2dff608a183464addbc181","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Added native implementation of OVSDB API in ``vif_plug_ovs``. Both"},{"line_number":5,"context_line":"    ``vsctl`` and ``native`` APIs could be selected by setting the"},{"line_number":6,"context_line":"    configuration variable ``ovsdb_interface``."},{"line_number":7,"context_line":"    A new configuration variable, ``ovsdb_connection``, is added. This variable"},{"line_number":8,"context_line":"    defines the connection string for the OVSDB backend."}],"source_content_type":"text/x-yaml","patch_set":46,"id":"9fdfeff1_635eeaea","line":7,"range":{"start_line":7,"start_character":36,"end_line":7,"end_character":52},"updated":"2019-02-04 15:54:47.000000000","message":"this should probably be used for both drivers if set.\nvsctl can support connecting over tcp just as they python bindings can.","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3fcffc712509ff06cbab17ef7316d2603711a1be","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Added native implementation of OVSDB API in ``vif_plug_ovs``. Both"},{"line_number":5,"context_line":"    ``vsctl`` and ``native`` APIs could be selected by setting the"},{"line_number":6,"context_line":"    configuration variable ``ovsdb_interface``."},{"line_number":7,"context_line":"    A new configuration variable, ``ovsdb_connection``, is added. This variable"},{"line_number":8,"context_line":"    defines the connection string for the OVSDB backend."}],"source_content_type":"text/x-yaml","patch_set":46,"id":"9fdfeff1_7ef3dd74","line":7,"range":{"start_line":7,"start_character":36,"end_line":7,"end_character":52},"in_reply_to":"9fdfeff1_635eeaea","updated":"2019-02-04 16:48:32.000000000","message":"Actually is used in BaseOVS and is not implementation dependent","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c6112f7fac4596e66fdd1c4070f6d7af34153d","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    configuration variable ``ovsdb_interface``."},{"line_number":7,"context_line":"    A new configuration variable, ``ovsdb_connection``, is added. This variable"},{"line_number":8,"context_line":"    defines the connection string for the OVSDB backend."},{"line_number":9,"context_line":"other:"},{"line_number":10,"context_line":"  - |"},{"line_number":11,"context_line":"    Changed default value of ``ovsdb_connection`` to \"tcp:127.0.0.1:6640\", to"},{"line_number":12,"context_line":"    match the default value set in Neutron project. This connection string is"}],"source_content_type":"text/x-yaml","patch_set":56,"id":"9fdfeff1_9e662551","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":5},"updated":"2019-02-26 14:37:40.000000000","message":"this should probably be an \u0027upgrade\u0027 section","commit_id":"1f7b5e8a20986b951f28657be424bd57a27ec04e"}],"test-requirements.txt":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b3402077dbb20a813e1b1403bf5bc630726fe4f9","unresolved":false,"context_lines":[{"line_number":6,"context_line":"coverage!\u003d4.4,\u003e\u003d4.0 # Apache-2.0"},{"line_number":7,"context_line":"python-subunit\u003e\u003d1.0.0 # Apache-2.0/BSD"},{"line_number":8,"context_line":"oslotest\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":9,"context_line":"ovs\u003e\u003d2.9.2 # Apache-2.0"},{"line_number":10,"context_line":"stestr\u003e\u003d1.0.0 # Apache-2.0"},{"line_number":11,"context_line":"testrepository\u003e\u003d0.0.18 # Apache-2.0/BSD"},{"line_number":12,"context_line":"testscenarios\u003e\u003d0.4 # Apache-2.0/BSD"}],"source_content_type":"text/plain","patch_set":34,"id":"3f79a3b5_e3a4c007","line":9,"updated":"2018-10-22 14:58:53.000000000","message":"this was added to lower-constraints.txt. Does it also need to be added here?","commit_id":"d573e9bf954c2cc196b254f122d3d6b3ae0f3c59"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8402148143695367c36b003a387b47ef485642d9","unresolved":false,"context_lines":[{"line_number":6,"context_line":"coverage!\u003d4.4,\u003e\u003d4.0 # Apache-2.0"},{"line_number":7,"context_line":"python-subunit\u003e\u003d1.0.0 # Apache-2.0/BSD"},{"line_number":8,"context_line":"oslotest\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":9,"context_line":"ovs\u003e\u003d2.9.2 # Apache-2.0"},{"line_number":10,"context_line":"stestr\u003e\u003d1.0.0 # Apache-2.0"},{"line_number":11,"context_line":"testrepository\u003e\u003d0.0.18 # Apache-2.0/BSD"},{"line_number":12,"context_line":"testscenarios\u003e\u003d0.4 # Apache-2.0/BSD"}],"source_content_type":"text/plain","patch_set":34,"id":"9fdfeff1_18e509dd","line":9,"in_reply_to":"3f79a3b5_e3a4c007","updated":"2019-02-04 15:17:44.000000000","message":"removed","commit_id":"d573e9bf954c2cc196b254f122d3d6b3ae0f3c59"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5ddc198122a10e3b29c80d6bbe3fec77f9f1400d","unresolved":false,"context_lines":[{"line_number":2,"context_line":"# of appearance. Changing the order has an impact on the overall integration"},{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"eventlet\u003e\u003d0.20.0 # MIT"},{"line_number":6,"context_line":"hacking\u003e\u003d1.1.0,\u003c1.2.0 # Apache-2.0"},{"line_number":7,"context_line":"coverage!\u003d4.4,\u003e\u003d4.0 # Apache-2.0"},{"line_number":8,"context_line":"python-subunit\u003e\u003d1.0.0 # Apache-2.0/BSD"}],"source_content_type":"text/plain","patch_set":53,"id":"9fdfeff1_73ae38e8","line":5,"updated":"2019-02-25 13:18:28.000000000","message":"I\u0027m not pleased with this addition, just FYI. I would appreciate getting rid of this in a future patch, but won\u0027t hold this up because I know you copied the functional test pretty much as-is from Neutron.","commit_id":"b236560e243b20a2a3315bc6ebf7225d165b6673"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6fab43daf046b8ea7a476fa02cb6dffdcac9159c","unresolved":false,"context_lines":[{"line_number":2,"context_line":"# of appearance. Changing the order has an impact on the overall integration"},{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"eventlet\u003e\u003d0.20.0 # MIT"},{"line_number":6,"context_line":"hacking\u003e\u003d1.1.0,\u003c1.2.0 # Apache-2.0"},{"line_number":7,"context_line":"coverage!\u003d4.4,\u003e\u003d4.0 # Apache-2.0"},{"line_number":8,"context_line":"python-subunit\u003e\u003d1.0.0 # Apache-2.0/BSD"}],"source_content_type":"text/plain","patch_set":53,"id":"9fdfeff1_93695c26","line":5,"in_reply_to":"9fdfeff1_73ae38e8","updated":"2019-02-25 13:41:38.000000000","message":"The point is we where using this library in os-vif tests, before this patch, without declaring it here.","commit_id":"b236560e243b20a2a3315bc6ebf7225d165b6673"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"08ab2cb2f7ddd882c07ea4833f01ef92e46d432a","unresolved":false,"context_lines":[{"line_number":2,"context_line":"# of appearance. Changing the order has an impact on the overall integration"},{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"eventlet\u003e\u003d0.20.0 # MIT"},{"line_number":6,"context_line":"hacking\u003e\u003d1.1.0,\u003c1.2.0 # Apache-2.0"},{"line_number":7,"context_line":"coverage!\u003d4.4,\u003e\u003d4.0 # Apache-2.0"},{"line_number":8,"context_line":"python-subunit\u003e\u003d1.0.0 # Apache-2.0/BSD"}],"source_content_type":"text/plain","patch_set":54,"id":"9fdfeff1_39bbaf0f","line":5,"range":{"start_line":5,"start_character":0,"end_line":5,"end_character":22},"updated":"2019-02-25 14:59:52.000000000","message":"ok i see that we have enventles in \nhere\nhttps://github.com/openstack/os-vif/blob/1e4cf6160efc7fb4fd8279bd2a666e4d72f4fb6c/os_vif/tests/functional/base.py#L24\nhowever we are not ment to use eventlets at all in os-vif\nso for now this is ok but we should remove all uses of eventlets even in the functional tests in train.\n\ngivent its only a test dependcy it is ok for now but i\ndo not want to see this ever become a runtime depency.\n\nthe privesep deamon by use eventlet internally but os-vif code should remain eventlet free. we currently only import eventlets to catch teh timeout exception raised by privep.\n\nin U when python 2.7 support is removed from privsep eventlest should be replaced with asio and we can drop this from the test requirement and functional tests.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e64aa0d9cc8b8db24649f2174f94a5d886e93611","unresolved":false,"context_lines":[{"line_number":2,"context_line":"# of appearance. Changing the order has an impact on the overall integration"},{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"eventlet\u003e\u003d0.20.0 # MIT"},{"line_number":6,"context_line":"hacking\u003e\u003d1.1.0,\u003c1.2.0 # Apache-2.0"},{"line_number":7,"context_line":"coverage!\u003d4.4,\u003e\u003d4.0 # Apache-2.0"},{"line_number":8,"context_line":"python-subunit\u003e\u003d1.0.0 # Apache-2.0/BSD"}],"source_content_type":"text/plain","patch_set":54,"id":"9fdfeff1_74213e4d","line":5,"range":{"start_line":5,"start_character":0,"end_line":5,"end_character":22},"in_reply_to":"9fdfeff1_39bbaf0f","updated":"2019-02-25 15:29:54.000000000","message":"I can respin this patch or submit a new one to remove this dependency. I think you prefer the second option.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d034a76aa9cc85c549c2ddcb28fe3ef4768d9029","unresolved":false,"context_lines":[{"line_number":2,"context_line":"# of appearance. Changing the order has an impact on the overall integration"},{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"eventlet\u003e\u003d0.20.0 # MIT"},{"line_number":6,"context_line":"hacking\u003e\u003d1.1.0,\u003c1.2.0 # Apache-2.0"},{"line_number":7,"context_line":"coverage!\u003d4.4,\u003e\u003d4.0 # Apache-2.0"},{"line_number":8,"context_line":"python-subunit\u003e\u003d1.0.0 # Apache-2.0/BSD"}],"source_content_type":"text/plain","patch_set":54,"id":"9fdfeff1_5e2774c8","line":5,"range":{"start_line":5,"start_character":0,"end_line":5,"end_character":22},"in_reply_to":"9fdfeff1_74213e4d","updated":"2019-02-25 17:23:52.000000000","message":"yes i would prefer to defer cleaning this up until train.\ni brought the leakage of the eventlet.timeout form privsep on the oslo channel and im going to propose addint a new privesep.timeout that is a subclass of evetlet.timeout and so we can avoid import eventlet in the future.\n\nso lets wait for that to clean this up.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"}],"tools/configure_functional_tests.sh":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4e14c68a7d93a326f8ecc53f48d03e1a76acc7f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"df7087c5_fdb8b1e5","updated":"2018-03-13 11:50:33.000000000","message":"i dont think this file is strictly needed.\n\npersonally rather then depend on devstack if we add this i would prefer to install the only things we actully need\novs + ovs python bindings.","commit_id":"7fb5e32eaf06772ebaf4b75b2c75836e8f26a02f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"93fe0560f5c5f1ce7088a570cf08960873e8fb53","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    FILES\u003d$DEVSTACK_PATH/files"},{"line_number":37,"context_line":"    TOP_DIR\u003d$DEVSTACK_PATH"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    source $DEVSTACK_PATH/stackrc"},{"line_number":40,"context_line":"    source $DEVSTACK_PATH/lib/neutron_plugins/ovs_base"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    # Allow the gate to override values set by stackrc."}],"source_content_type":"text/x-sh","patch_set":30,"id":"3f79a3b5_74c08f2c","line":39,"range":{"start_line":39,"start_character":3,"end_line":39,"end_character":33},"updated":"2018-10-08 11:55:47.000000000","message":"im not sure you need to use stackrc here\nyou could use functions or functions-common\nto pullin less of devstack but this is only a minor nit.\n\nthis will work fine but it could have extra sideffects.","commit_id":"6fc18fe75bb556ef91141f87a319849eb940d357"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"55afa7770b65359a4f4a29ec30f43b7e15a7bf16","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    FILES\u003d$DEVSTACK_PATH/files"},{"line_number":37,"context_line":"    TOP_DIR\u003d$DEVSTACK_PATH"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    source $DEVSTACK_PATH/stackrc"},{"line_number":40,"context_line":"    source $DEVSTACK_PATH/lib/neutron_plugins/ovs_base"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    # Allow the gate to override values set by stackrc."}],"source_content_type":"text/x-sh","patch_set":30,"id":"3f79a3b5_674a23ae","line":39,"range":{"start_line":39,"start_character":3,"end_line":39,"end_character":33},"in_reply_to":"3f79a3b5_74c08f2c","updated":"2018-10-08 12:50:46.000000000","message":"Done","commit_id":"6fc18fe75bb556ef91141f87a319849eb940d357"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"93fe0560f5c5f1ce7088a570cf08960873e8fb53","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    # venv to use the installed package.  Once python-openvswitch"},{"line_number":55,"context_line":"    # becomes available on pypi, this will no longer be required."},{"line_number":56,"context_line":"    #"},{"line_number":57,"context_line":"    # NOTE: the package name \u0027python-openvswitch\u0027 is common across"},{"line_number":58,"context_line":"    # supported distros."},{"line_number":59,"context_line":"    install_package python-openvswitch"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-sh","patch_set":30,"id":"3f79a3b5_94bd2bb3","line":58,"range":{"start_line":57,"start_character":5,"end_line":58,"end_character":24},"updated":"2018-10-08 11:55:47.000000000","message":":) i was going to ask that","commit_id":"6fc18fe75bb556ef91141f87a319849eb940d357"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f4b3fa1e8d1a5d58a2dff608a183464addbc181","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."},{"line_number":5,"context_line":"# You may obtain a copy of the License at"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":8,"context_line":"#"},{"line_number":9,"context_line":"# Unless required by applicable law or agreed to in writing, software"},{"line_number":10,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"set -e"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"# Default to environment variables to permit the gate_hook to override"},{"line_number":20,"context_line":"# when sourcing."},{"line_number":21,"context_line":"DEVSTACK_PATH\u003d${DEVSTACK_PATH:-$1}"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"if [[ ! -f \"$DEVSTACK_PATH/stack.sh\" ]]; then"},{"line_number":25,"context_line":"    \u003e\u00262 echo \"Unable to find devstack at \u0027$DEVSTACK_PATH\u0027. Please verify that the specified path points to a valid devstack repo.\""},{"line_number":26,"context_line":"    exit 1"},{"line_number":27,"context_line":"fi"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"set -x"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"function _install_post_devstack {"},{"line_number":34,"context_line":"    echo_summary \"Performing post-devstack installation\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    # Installing python-openvswitch from packages is a stop-gap while"},{"line_number":37,"context_line":"    # python-openvswitch remains unavailable from pypi.  This also"},{"line_number":38,"context_line":"    # requires that sitepackages\u003dTrue be set in tox.ini to allow the"},{"line_number":39,"context_line":"    # venv to use the installed package.  Once python-openvswitch"},{"line_number":40,"context_line":"    # becomes available on pypi, this will no longer be required."},{"line_number":41,"context_line":"    #"},{"line_number":42,"context_line":"    # NOTE: the package name \u0027python-openvswitch\u0027 is common across"},{"line_number":43,"context_line":"    # supported distros."},{"line_number":44,"context_line":"    install_package python-openvswitch"},{"line_number":45,"context_line":"}"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"function configure_host_for_func_testing {"},{"line_number":50,"context_line":"    echo_summary \"Configuring host for functional testing\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    _neutron_ovs_base_install_agent_packages"},{"line_number":53,"context_line":"    _install_post_devstack"},{"line_number":54,"context_line":"}"}],"source_content_type":"text/x-sh","patch_set":46,"id":"9fdfeff1_e3f65ad9","line":54,"range":{"start_line":1,"start_character":0,"end_line":54,"end_character":1},"updated":"2019-02-04 15:54:47.000000000","message":"is this needed\n\nthis seams to duplicate the logic of https://review.openstack.org/#/c/482226/46/playbooks/openstack-tox-functional-ovs-with-sudo/pre.yaml\n\nis this intended for local testing? \nif so devstack feel rather heavyweight to use out side\nof ci to just install ovs.","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3fcffc712509ff06cbab17ef7316d2603711a1be","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/env bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."},{"line_number":5,"context_line":"# You may obtain a copy of the License at"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    http://www.apache.org/licenses/LICENSE-2.0"},{"line_number":8,"context_line":"#"},{"line_number":9,"context_line":"# Unless required by applicable law or agreed to in writing, software"},{"line_number":10,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"set -e"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"# Default to environment variables to permit the gate_hook to override"},{"line_number":20,"context_line":"# when sourcing."},{"line_number":21,"context_line":"DEVSTACK_PATH\u003d${DEVSTACK_PATH:-$1}"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"if [[ ! -f \"$DEVSTACK_PATH/stack.sh\" ]]; then"},{"line_number":25,"context_line":"    \u003e\u00262 echo \"Unable to find devstack at \u0027$DEVSTACK_PATH\u0027. Please verify that the specified path points to a valid devstack repo.\""},{"line_number":26,"context_line":"    exit 1"},{"line_number":27,"context_line":"fi"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"set -x"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"function _install_post_devstack {"},{"line_number":34,"context_line":"    echo_summary \"Performing post-devstack installation\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    # Installing python-openvswitch from packages is a stop-gap while"},{"line_number":37,"context_line":"    # python-openvswitch remains unavailable from pypi.  This also"},{"line_number":38,"context_line":"    # requires that sitepackages\u003dTrue be set in tox.ini to allow the"},{"line_number":39,"context_line":"    # venv to use the installed package.  Once python-openvswitch"},{"line_number":40,"context_line":"    # becomes available on pypi, this will no longer be required."},{"line_number":41,"context_line":"    #"},{"line_number":42,"context_line":"    # NOTE: the package name \u0027python-openvswitch\u0027 is common across"},{"line_number":43,"context_line":"    # supported distros."},{"line_number":44,"context_line":"    install_package python-openvswitch"},{"line_number":45,"context_line":"}"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"function configure_host_for_func_testing {"},{"line_number":50,"context_line":"    echo_summary \"Configuring host for functional testing\""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    _neutron_ovs_base_install_agent_packages"},{"line_number":53,"context_line":"    _install_post_devstack"},{"line_number":54,"context_line":"}"}],"source_content_type":"text/x-sh","patch_set":46,"id":"9fdfeff1_bef86549","line":54,"range":{"start_line":1,"start_character":0,"end_line":54,"end_character":1},"in_reply_to":"9fdfeff1_e3f65ad9","updated":"2019-02-04 16:48:32.000000000","message":"I new to delete this. I\u0027m not using it anymore","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"}],"tox.ini":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5ddc198122a10e3b29c80d6bbe3fec77f9f1400d","unresolved":false,"context_lines":[{"line_number":15,"context_line":"  -r{toxinidir}/test-requirements.txt"},{"line_number":16,"context_line":"whitelist_externals \u003d"},{"line_number":17,"context_line":"  bash"},{"line_number":18,"context_line":"  find"},{"line_number":19,"context_line":"  rm"},{"line_number":20,"context_line":"commands \u003d stestr run --black-regex \".tests.functional\" {posargs}"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"[testenv:pep8]"}],"source_content_type":"text/x-properties","patch_set":53,"id":"9fdfeff1_1389ec73","line":19,"range":{"start_line":18,"start_character":0,"end_line":19,"end_character":4},"updated":"2019-02-25 13:18:28.000000000","message":"is this needed?","commit_id":"b236560e243b20a2a3315bc6ebf7225d165b6673"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6fab43daf046b8ea7a476fa02cb6dffdcac9159c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"  -r{toxinidir}/test-requirements.txt"},{"line_number":16,"context_line":"whitelist_externals \u003d"},{"line_number":17,"context_line":"  bash"},{"line_number":18,"context_line":"  find"},{"line_number":19,"context_line":"  rm"},{"line_number":20,"context_line":"commands \u003d stestr run --black-regex \".tests.functional\" {posargs}"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"[testenv:pep8]"}],"source_content_type":"text/x-properties","patch_set":53,"id":"9fdfeff1_536f7427","line":19,"range":{"start_line":18,"start_character":0,"end_line":19,"end_character":4},"in_reply_to":"9fdfeff1_1389ec73","updated":"2019-02-25 13:41:38.000000000","message":"Not anymore, I\u0027ll remove it.","commit_id":"b236560e243b20a2a3315bc6ebf7225d165b6673"}],"vif_plug_ovs/linux_net.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f4b3fa1e8d1a5d58a2dff608a183464addbc181","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                          {\u0027bridge\u0027: bridge, \u0027device\u0027: device})"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"@privsep.vif_plug_ovs_pctxt.entrypoint"},{"line_number":70,"context_line":"def delete_net_dev(dev):"},{"line_number":71,"context_line":"    \"\"\"Delete a network device only if it exists.\"\"\""},{"line_number":72,"context_line":"    if ip_lib.exists(dev):"}],"source_content_type":"text/x-python","patch_set":46,"id":"9fdfeff1_838d0e33","line":69,"range":{"start_line":69,"start_character":17,"end_line":69,"end_character":26},"updated":"2019-02-04 15:54:47.000000000","message":"unrelated change","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3fcffc712509ff06cbab17ef7316d2603711a1be","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                          {\u0027bridge\u0027: bridge, \u0027device\u0027: device})"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"@privsep.vif_plug_ovs_pctxt.entrypoint"},{"line_number":70,"context_line":"def delete_net_dev(dev):"},{"line_number":71,"context_line":"    \"\"\"Delete a network device only if it exists.\"\"\""},{"line_number":72,"context_line":"    if ip_lib.exists(dev):"}],"source_content_type":"text/x-python","patch_set":46,"id":"9fdfeff1_9e57a127","line":69,"range":{"start_line":69,"start_character":17,"end_line":69,"end_character":26},"in_reply_to":"9fdfeff1_838d0e33","updated":"2019-02-04 16:48:32.000000000","message":"How is this currently working? It shouldn\u0027t.\n\n(2 mins later) Ok, now I understand: the merge wasn\u0027t as clean as it should. I\u0027ll change it","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"}],"vif_plug_ovs/ovs.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f079835e4f87655408b20e4643498f01d621e446","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                   \u0027forever.\u0027,"},{"line_number":58,"context_line":"                   deprecated_group\u003d\"DEFAULT\"),"},{"line_number":59,"context_line":"        cfg.StrOpt(\u0027ovsdb_connection\u0027,"},{"line_number":60,"context_line":"                   default\u003d\u0027tcp:127.0.0.1:6640\u0027,"},{"line_number":61,"context_line":"                   help\u003d\u0027The connection string for the OVSDB backend. \u0027"},{"line_number":62,"context_line":"                   \u0027Will be used by ovsdb-client when monitoring and used for \u0027"},{"line_number":63,"context_line":"                   \u0027the all ovsdb commands when native ovsdb_interface is \u0027"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_0e244c5f","line":60,"range":{"start_line":60,"start_character":0,"end_line":60,"end_character":48},"updated":"2019-02-26 10:49:29.000000000","message":"This needs an \u0027upgrade\u0027 reno","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a50c728dd1d1d37da15cabf7122cd1f7a615685c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                   \u0027forever.\u0027,"},{"line_number":58,"context_line":"                   deprecated_group\u003d\"DEFAULT\"),"},{"line_number":59,"context_line":"        cfg.StrOpt(\u0027ovsdb_connection\u0027,"},{"line_number":60,"context_line":"                   default\u003d\u0027tcp:127.0.0.1:6640\u0027,"},{"line_number":61,"context_line":"                   help\u003d\u0027The connection string for the OVSDB backend. \u0027"},{"line_number":62,"context_line":"                   \u0027Will be used by ovsdb-client when monitoring and used for \u0027"},{"line_number":63,"context_line":"                   \u0027the all ovsdb commands when native ovsdb_interface is \u0027"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_a9df3a64","line":60,"range":{"start_line":60,"start_character":0,"end_line":60,"end_character":48},"in_reply_to":"9fdfeff1_0e244c5f","updated":"2019-02-26 12:23:42.000000000","message":"Done","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"18b586459a7d83c2de2ad2dae4b49fa654cf0fb8","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                   \u0027forever.\u0027,"},{"line_number":58,"context_line":"                   deprecated_group\u003d\"DEFAULT\"),"},{"line_number":59,"context_line":"        cfg.StrOpt(\u0027ovsdb_connection\u0027,"},{"line_number":60,"context_line":"                   default\u003d\u0027tcp:127.0.0.1:6640\u0027,"},{"line_number":61,"context_line":"                   help\u003d\u0027The connection string for the OVSDB backend. \u0027"},{"line_number":62,"context_line":"                   \u0027Will be used by ovsdb-client when monitoring and used for \u0027"},{"line_number":63,"context_line":"                   \u0027the all ovsdb commands when native ovsdb_interface is \u0027"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_49b80ec7","line":60,"range":{"start_line":60,"start_character":0,"end_line":60,"end_character":48},"in_reply_to":"9fdfeff1_0e244c5f","updated":"2019-02-26 11:27:49.000000000","message":"lets leave the defult at None\novs does not listen on tcp by default\nand the unix socket is more secure.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"18b586459a7d83c2de2ad2dae4b49fa654cf0fb8","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                   deprecated_group\u003d\"DEFAULT\"),"},{"line_number":59,"context_line":"        cfg.StrOpt(\u0027ovsdb_connection\u0027,"},{"line_number":60,"context_line":"                   default\u003d\u0027tcp:127.0.0.1:6640\u0027,"},{"line_number":61,"context_line":"                   help\u003d\u0027The connection string for the OVSDB backend. \u0027"},{"line_number":62,"context_line":"                   \u0027Will be used by ovsdb-client when monitoring and used for \u0027"},{"line_number":63,"context_line":"                   \u0027the all ovsdb commands when native ovsdb_interface is \u0027"},{"line_number":64,"context_line":"                   \u0027enabled\u0027),"},{"line_number":65,"context_line":"        cfg.StrOpt(\u0027ovsdb_interface\u0027,"},{"line_number":66,"context_line":"                   choices\u003dlist(ovsdb_api.interface_map),"},{"line_number":67,"context_line":"                   default\u003d\u0027vsctl\u0027,"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_498fae22","line":64,"range":{"start_line":61,"start_character":25,"end_line":64,"end_character":30},"updated":"2019-02-26 11:27:49.000000000","message":"actully reading this again this will be used for the vsctl interface too. not just the native implemntation","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"}],"vif_plug_ovs/ovsdb/impl_idl.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b3402077dbb20a813e1b1403bf5bc630726fe4f9","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class NeutronOvsdbIdl(impl_idl.OvsdbIdl):"},{"line_number":37,"context_line":"    def __init__(self, connection):"},{"line_number":38,"context_line":"        vlog.use_python_logger()"},{"line_number":39,"context_line":"        super(NeutronOvsdbIdl, self).__init__(connection)"}],"source_content_type":"text/x-python","patch_set":34,"id":"3f79a3b5_69609135","line":37,"range":{"start_line":37,"start_character":23,"end_line":37,"end_character":33},"updated":"2018-10-22 14:58:53.000000000","message":"you use _connection above so as not to shadow the connection module being imported.\n\nMight as well just change this to conn and _connection to conn and be done with it.","commit_id":"d573e9bf954c2cc196b254f122d3d6b3ae0f3c59"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8402148143695367c36b003a387b47ef485642d9","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class NeutronOvsdbIdl(impl_idl.OvsdbIdl):"},{"line_number":37,"context_line":"    def __init__(self, connection):"},{"line_number":38,"context_line":"        vlog.use_python_logger()"},{"line_number":39,"context_line":"        super(NeutronOvsdbIdl, self).__init__(connection)"}],"source_content_type":"text/x-python","patch_set":34,"id":"9fdfeff1_5812b1b6","line":37,"range":{"start_line":37,"start_character":23,"end_line":37,"end_character":33},"in_reply_to":"3f79a3b5_69609135","updated":"2019-02-04 15:17:44.000000000","message":"Done","commit_id":"d573e9bf954c2cc196b254f122d3d6b3ae0f3c59"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f079835e4f87655408b20e4643498f01d621e446","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    return NeutronOvsdbIdl(conn)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class NeutronOvsdbIdl(impl_idl.OvsdbIdl, api.ImplAPI):"},{"line_number":38,"context_line":"    def __init__(self, conn):"},{"line_number":39,"context_line":"        vlog.use_python_logger()"},{"line_number":40,"context_line":"        super(NeutronOvsdbIdl, self).__init__(conn)"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_0ee68cb1","line":37,"updated":"2019-02-26 10:49:29.000000000","message":"A docstring would be helpful","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a50c728dd1d1d37da15cabf7122cd1f7a615685c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    return NeutronOvsdbIdl(conn)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"class NeutronOvsdbIdl(impl_idl.OvsdbIdl, api.ImplAPI):"},{"line_number":38,"context_line":"    def __init__(self, conn):"},{"line_number":39,"context_line":"        vlog.use_python_logger()"},{"line_number":40,"context_line":"        super(NeutronOvsdbIdl, self).__init__(conn)"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_a9665aba","line":37,"in_reply_to":"9fdfeff1_0ee68cb1","updated":"2019-02-26 12:23:42.000000000","message":"Done","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"}],"vif_plug_ovs/ovsdb/impl_vsctl.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f4b3fa1e8d1a5d58a2dff608a183464addbc181","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    return OvsdbVsctl(context)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"@privsep.vif_plug_ovs_pctxt.entrypoint"},{"line_number":61,"context_line":"def _run_vsctl(full_args):"},{"line_number":62,"context_line":"    # NOTE(ralonsoh): this function is defined outside the class Transaction"},{"line_number":63,"context_line":"    #                 to allow oslo_privsep.PrivContext.entrypoint to wrap"}],"source_content_type":"text/x-python","patch_set":46,"id":"9fdfeff1_c399d679","line":60,"range":{"start_line":60,"start_character":16,"end_line":60,"end_character":27},"updated":"2019-02-04 15:54:47.000000000","message":"unrelated","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3fcffc712509ff06cbab17ef7316d2603711a1be","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    return OvsdbVsctl(context)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"@privsep.vif_plug_ovs_pctxt.entrypoint"},{"line_number":61,"context_line":"def _run_vsctl(full_args):"},{"line_number":62,"context_line":"    # NOTE(ralonsoh): this function is defined outside the class Transaction"},{"line_number":63,"context_line":"    #                 to allow oslo_privsep.PrivContext.entrypoint to wrap"}],"source_content_type":"text/x-python","patch_set":46,"id":"9fdfeff1_5e185983","line":60,"range":{"start_line":60,"start_character":16,"end_line":60,"end_character":27},"in_reply_to":"9fdfeff1_c399d679","updated":"2019-02-04 16:48:32.000000000","message":"???","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"}],"vif_plug_ovs/ovsdb/ovsdb_lib.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f4b3fa1e8d1a5d58a2dff608a183464addbc181","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def _ovs_supports_mtu_requests(self):"},{"line_number":34,"context_line":"        return bool(self.ovsdb.db_list("},{"line_number":35,"context_line":"            \u0027Interface\u0027, columns\u003d[\u0027mtu_request\u0027]).execute(check_error\u003dFalse,"},{"line_number":36,"context_line":"                                                          log_errors\u003dTrue))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _set_mtu_request(self, dev, mtu):"}],"source_content_type":"text/x-python","patch_set":46,"id":"9fdfeff1_c372364a","line":35,"range":{"start_line":35,"start_character":70,"end_line":35,"end_character":75},"updated":"2019-02-04 15:54:47.000000000","message":"why do we need this change\nif there are error we expect we should list the codes instead of disable tchecinkg\n\nnormally i belive we use [0,2,254] or maybe its [0,2,256]","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"030afad51ef4db5a400b90cf5f3cba7d35919105","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def _ovs_supports_mtu_requests(self):"},{"line_number":34,"context_line":"        return bool(self.ovsdb.db_list("},{"line_number":35,"context_line":"            \u0027Interface\u0027, columns\u003d[\u0027mtu_request\u0027]).execute(check_error\u003dFalse,"},{"line_number":36,"context_line":"                                                          log_errors\u003dTrue))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _set_mtu_request(self, dev, mtu):"}],"source_content_type":"text/x-python","patch_set":46,"id":"9fdfeff1_5097d83b","line":35,"range":{"start_line":35,"start_character":70,"end_line":35,"end_character":75},"in_reply_to":"9fdfeff1_b86b9883","updated":"2019-02-05 10:38:29.000000000","message":"We can modify the vsctl implementation (the current one), but we can\u0027t modify the ovs_idl one (unless we change ovsdbapp).\n\nWhat do you suggest?\n\nWhat I can do in this to try/catch the exception in this call.","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3fcffc712509ff06cbab17ef7316d2603711a1be","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def _ovs_supports_mtu_requests(self):"},{"line_number":34,"context_line":"        return bool(self.ovsdb.db_list("},{"line_number":35,"context_line":"            \u0027Interface\u0027, columns\u003d[\u0027mtu_request\u0027]).execute(check_error\u003dFalse,"},{"line_number":36,"context_line":"                                                          log_errors\u003dTrue))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _set_mtu_request(self, dev, mtu):"}],"source_content_type":"text/x-python","patch_set":46,"id":"9fdfeff1_de0be928","line":35,"range":{"start_line":35,"start_character":70,"end_line":35,"end_character":75},"in_reply_to":"9fdfeff1_c372364a","updated":"2019-02-04 16:48:32.000000000","message":"Done","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4be2fe1feefa47c78ac2f43fc2477d0f6359dd31","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def _ovs_supports_mtu_requests(self):"},{"line_number":34,"context_line":"        return bool(self.ovsdb.db_list("},{"line_number":35,"context_line":"            \u0027Interface\u0027, columns\u003d[\u0027mtu_request\u0027]).execute(check_error\u003dFalse,"},{"line_number":36,"context_line":"                                                          log_errors\u003dTrue))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _set_mtu_request(self, dev, mtu):"}],"source_content_type":"text/x-python","patch_set":46,"id":"9fdfeff1_b86b9883","line":35,"range":{"start_line":35,"start_character":70,"end_line":35,"end_character":75},"in_reply_to":"9fdfeff1_c372364a","updated":"2019-02-04 18:19:32.000000000","message":"We didn\u0027t implement this exception code checking for ovsdb calls. First I\u0027ll need to implement this.","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"60765248366576164642207b169c3d893f4f5539","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def _ovs_supports_mtu_requests(self):"},{"line_number":34,"context_line":"        return bool(self.ovsdb.db_list("},{"line_number":35,"context_line":"            \u0027Interface\u0027, columns\u003d[\u0027mtu_request\u0027]).execute(check_error\u003dFalse,"},{"line_number":36,"context_line":"                                                          log_errors\u003dTrue))"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _set_mtu_request(self, dev, mtu):"}],"source_content_type":"text/x-python","patch_set":47,"id":"9fdfeff1_f8e4c010","line":35,"range":{"start_line":35,"start_character":70,"end_line":35,"end_character":75},"updated":"2019-02-04 18:21:24.000000000","message":"I need to modify this. We need to handle error codes.","commit_id":"5954b5e2dd13130dee349825de0b22a14f746b96"}],"vif_plug_ovs/ovsdb/vlog.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"b3402077dbb20a813e1b1403bf5bc630726fe4f9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copied from: ovsdbapp/backend/ovs_idl_vlog.py"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":34,"id":"3f79a3b5_09cc7d32","line":1,"range":{"start_line":1,"start_character":18,"end_line":1,"end_character":50},"updated":"2018-10-22 14:58:53.000000000","message":"no longer exists. it\u0027s now https://github.com/openstack/ovsdbapp/blob/master/ovsdbapp/backend/ovs_idl/vlog.py\n\nalso, if we\u0027re importing ovsdbapp already, why are we duplicating this here?","commit_id":"d573e9bf954c2cc196b254f122d3d6b3ae0f3c59"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8402148143695367c36b003a387b47ef485642d9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copied from: ovsdbapp/backend/ovs_idl_vlog.py"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":34,"id":"9fdfeff1_3811edad","line":1,"range":{"start_line":1,"start_character":18,"end_line":1,"end_character":50},"in_reply_to":"3f79a3b5_09cc7d32","updated":"2019-02-04 15:17:44.000000000","message":"Done","commit_id":"d573e9bf954c2cc196b254f122d3d6b3ae0f3c59"}],"vif_plug_ovs/privsep.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f4b3fa1e8d1a5d58a2dff608a183464addbc181","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_privsep import priv_context"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"vif_plug_ovs_pctxt \u003d priv_context.PrivContext("},{"line_number":21,"context_line":"    \"vif_plug_ovs\","},{"line_number":22,"context_line":"    cfg_section\u003d\"vif_plug_ovs_privileged\","},{"line_number":23,"context_line":"    pypath\u003d__name__ + \".vif_plug_ovs_pctxt\","},{"line_number":24,"context_line":"    capabilities\u003d[c.CAP_NET_ADMIN, c.CAP_SYS_ADMIN],"},{"line_number":25,"context_line":")"}],"source_content_type":"text/x-python","patch_set":46,"id":"9fdfeff1_03e27e02","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":44},"updated":"2019-02-04 15:54:47.000000000","message":"why are you changing the privsep context name.\nthis seam like an unrelated change","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3fcffc712509ff06cbab17ef7316d2603711a1be","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from oslo_privsep import priv_context"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"vif_plug_ovs_pctxt \u003d priv_context.PrivContext("},{"line_number":21,"context_line":"    \"vif_plug_ovs\","},{"line_number":22,"context_line":"    cfg_section\u003d\"vif_plug_ovs_privileged\","},{"line_number":23,"context_line":"    pypath\u003d__name__ + \".vif_plug_ovs_pctxt\","},{"line_number":24,"context_line":"    capabilities\u003d[c.CAP_NET_ADMIN, c.CAP_SYS_ADMIN],"},{"line_number":25,"context_line":")"}],"source_content_type":"text/x-python","patch_set":46,"id":"9fdfeff1_e9107952","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":44},"in_reply_to":"9fdfeff1_03e27e02","updated":"2019-02-04 16:48:32.000000000","message":"This is just because this patch is one year old and when I rebased..... well, you know. I\u0027ll change this back","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3f4b3fa1e8d1a5d58a2dff608a183464addbc181","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    \"vif_plug_ovs\","},{"line_number":22,"context_line":"    cfg_section\u003d\"vif_plug_ovs_privileged\","},{"line_number":23,"context_line":"    pypath\u003d__name__ + \".vif_plug_ovs_pctxt\","},{"line_number":24,"context_line":"    capabilities\u003d[c.CAP_NET_ADMIN, c.CAP_SYS_ADMIN],"},{"line_number":25,"context_line":")"}],"source_content_type":"text/x-python","patch_set":46,"id":"9fdfeff1_63ba6ae2","line":24,"range":{"start_line":24,"start_character":34,"end_line":24,"end_character":50},"updated":"2019-02-04 15:54:47.000000000","message":"what requires cap_sys_admin?\nim not saying we cant add this i just want to know\nwhat we are doing now that needs it that did not before.","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3fcffc712509ff06cbab17ef7316d2603711a1be","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    \"vif_plug_ovs\","},{"line_number":22,"context_line":"    cfg_section\u003d\"vif_plug_ovs_privileged\","},{"line_number":23,"context_line":"    pypath\u003d__name__ + \".vif_plug_ovs_pctxt\","},{"line_number":24,"context_line":"    capabilities\u003d[c.CAP_NET_ADMIN, c.CAP_SYS_ADMIN],"},{"line_number":25,"context_line":")"}],"source_content_type":"text/x-python","patch_set":46,"id":"9fdfeff1_a91a716c","line":24,"range":{"start_line":24,"start_character":34,"end_line":24,"end_character":50},"in_reply_to":"9fdfeff1_63ba6ae2","updated":"2019-02-04 16:48:32.000000000","message":"ditto","commit_id":"c37cfefc3b7176a7e89cf210caece6455c18ccf6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"748dcd2a00edf4729ff679f778588176abac2258","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_privsep import capabilities as c"},{"line_number":17,"context_line":"from oslo_privsep import priv_context"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"vif_plug \u003d priv_context.PrivContext("},{"line_number":21,"context_line":"    \"vif_plug_ovs\","},{"line_number":22,"context_line":"    cfg_section\u003d\"vif_plug_ovs_privileged\","}],"source_content_type":"text/x-python","patch_set":48,"id":"9fdfeff1_23544b21","line":19,"updated":"2019-02-20 02:17:37.000000000","message":"nit: unrelated","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ed90e3fd39c9f8b2fe8a4237830dec6ee44109d2","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_privsep import capabilities as c"},{"line_number":17,"context_line":"from oslo_privsep import priv_context"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"vif_plug \u003d priv_context.PrivContext("},{"line_number":21,"context_line":"    \"vif_plug_ovs\","},{"line_number":22,"context_line":"    cfg_section\u003d\"vif_plug_ovs_privileged\","}],"source_content_type":"text/x-python","patch_set":48,"id":"9fdfeff1_a04a5aa9","line":19,"in_reply_to":"9fdfeff1_23544b21","updated":"2019-02-20 13:37:43.000000000","message":"If I need to submit a new patch, I\u0027ll remove it.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"}],"vif_plug_ovs/tests/functional/base.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"748dcd2a00edf4729ff679f778588176abac2258","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":48,"id":"9fdfeff1_a0d7c44f","updated":"2019-02-20 02:17:37.000000000","message":"im kind of conflicted on this.\non one hand i understand wanting to use the plugins as refernece for external plugins but on the other hand this is duplicating code that we could share from the main os-vif lib.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1883547725d6629e3b7e8c8ffaff99fb6817b5a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":48,"id":"9fdfeff1_033fb087","in_reply_to":"9fdfeff1_205f4a73","updated":"2019-02-20 13:59:10.000000000","message":"no if we split the porject then there can be no sharing of this kindo of code form os-vif.\n\nwe said very early on that out of tree plugins cannot import code other then  what in the os-vif subtree and event then \nthey are really only ment to use the ovos and inherit form the base plugin.\n\nwhat we could do however is split out a reference plugin into its own repo at some point that people could clone. or even just provide a cookie cutter template to create a new repo.\n\nthat would allow the intree plugins to share code more freely.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1df1f6a08d2f19dd26929f6af780d4fa2d5d19c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":48,"id":"9fdfeff1_b6bfee5e","in_reply_to":"9fdfeff1_6008f2d8","updated":"2019-02-21 11:12:42.000000000","message":"I\u0027ll submit a followup patch just after this one.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d7ba7a5633cff9c7145b1692f85ed754bc9ba9c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":48,"id":"9fdfeff1_6008f2d8","in_reply_to":"9fdfeff1_a0d7c44f","updated":"2019-02-20 13:59:55.000000000","message":"Agree with Sean that it would be useful to pull this into a shared osvif/tests/functional/base.py module. Can do in a followup though.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ed90e3fd39c9f8b2fe8a4237830dec6ee44109d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":48,"id":"9fdfeff1_205f4a73","in_reply_to":"9fdfeff1_a0d7c44f","updated":"2019-02-20 13:37:43.000000000","message":"I know,.\n\nBut IMO we should split the projects (os_vif, vos, lb, etc), including this file.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"748dcd2a00edf4729ff679f778588176abac2258","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        super(BaseFunctionalTestCase, self).setUp()"},{"line_number":92,"context_line":"        logging.register_options(CONF)"},{"line_number":93,"context_line":"        setup_logging()"},{"line_number":94,"context_line":"        fileutils.ensure_tree(DEFAULT_LOG_DIR, mode\u003d0o755)"},{"line_number":95,"context_line":"        log_file \u003d sanitize_log_path("},{"line_number":96,"context_line":"            os.path.join(DEFAULT_LOG_DIR, \"%s.txt\" % self.id()))"},{"line_number":97,"context_line":"        self.config(log_file\u003dlog_file)"}],"source_content_type":"text/x-python","patch_set":48,"id":"9fdfeff1_5e64c2e5","line":94,"range":{"start_line":94,"start_character":52,"end_line":94,"end_character":57},"updated":"2019-02-20 02:17:37.000000000","message":"we don\u0027t use octal much :)","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ed90e3fd39c9f8b2fe8a4237830dec6ee44109d2","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        super(BaseFunctionalTestCase, self).setUp()"},{"line_number":92,"context_line":"        logging.register_options(CONF)"},{"line_number":93,"context_line":"        setup_logging()"},{"line_number":94,"context_line":"        fileutils.ensure_tree(DEFAULT_LOG_DIR, mode\u003d0o755)"},{"line_number":95,"context_line":"        log_file \u003d sanitize_log_path("},{"line_number":96,"context_line":"            os.path.join(DEFAULT_LOG_DIR, \"%s.txt\" % self.id()))"},{"line_number":97,"context_line":"        self.config(log_file\u003dlog_file)"}],"source_content_type":"text/x-python","patch_set":48,"id":"9fdfeff1_804dd6c5","line":94,"range":{"start_line":94,"start_character":52,"end_line":94,"end_character":57},"in_reply_to":"9fdfeff1_5e64c2e5","updated":"2019-02-20 13:37:43.000000000","message":"hehehe I know. I copy/pasted from the files referred in the description.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f079835e4f87655408b20e4643498f01d621e446","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\"Wait until callable predicate is evaluated as True"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    :param predicate: Callable deciding whether waiting should continue."},{"line_number":47,"context_line":"    Best practice is to instantiate predicate with functools.partial()"},{"line_number":48,"context_line":"    :param timeout: Timeout in seconds how long should function wait."},{"line_number":49,"context_line":"    :param sleep: Polling interval for results in seconds."},{"line_number":50,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_ce21644f","line":47,"range":{"start_line":47,"start_character":0,"end_line":47,"end_character":70},"updated":"2019-02-26 10:49:29.000000000","message":"This needs to be indented by at least a space (use four)","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f079835e4f87655408b20e4643498f01d621e446","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\"Wait until callable predicate is evaluated as True"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    :param predicate: Callable deciding whether waiting should continue."},{"line_number":47,"context_line":"    Best practice is to instantiate predicate with functools.partial()"},{"line_number":48,"context_line":"    :param timeout: Timeout in seconds how long should function wait."},{"line_number":49,"context_line":"    :param sleep: Polling interval for results in seconds."},{"line_number":50,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_ae1420ea","line":47,"range":{"start_line":47,"start_character":51,"end_line":47,"end_character":70},"updated":"2019-02-26 10:49:29.000000000","message":"``literal``","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a50c728dd1d1d37da15cabf7122cd1f7a615685c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\"Wait until callable predicate is evaluated as True"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    :param predicate: Callable deciding whether waiting should continue."},{"line_number":47,"context_line":"    Best practice is to instantiate predicate with functools.partial()"},{"line_number":48,"context_line":"    :param timeout: Timeout in seconds how long should function wait."},{"line_number":49,"context_line":"    :param sleep: Polling interval for results in seconds."},{"line_number":50,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_49056ec1","line":47,"range":{"start_line":47,"start_character":51,"end_line":47,"end_character":70},"in_reply_to":"9fdfeff1_ae1420ea","updated":"2019-02-26 12:23:42.000000000","message":"Done","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a50c728dd1d1d37da15cabf7122cd1f7a615685c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\"Wait until callable predicate is evaluated as True"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    :param predicate: Callable deciding whether waiting should continue."},{"line_number":47,"context_line":"    Best practice is to instantiate predicate with functools.partial()"},{"line_number":48,"context_line":"    :param timeout: Timeout in seconds how long should function wait."},{"line_number":49,"context_line":"    :param sleep: Polling interval for results in seconds."},{"line_number":50,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_690ab2d2","line":47,"range":{"start_line":47,"start_character":0,"end_line":47,"end_character":70},"in_reply_to":"9fdfeff1_ce21644f","updated":"2019-02-26 12:23:42.000000000","message":"Done","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f079835e4f87655408b20e4643498f01d621e446","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    Best practice is to instantiate predicate with functools.partial()"},{"line_number":48,"context_line":"    :param timeout: Timeout in seconds how long should function wait."},{"line_number":49,"context_line":"    :param sleep: Polling interval for results in seconds."},{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    try:"},{"line_number":52,"context_line":"        with eventlet.Timeout(timeout):"},{"line_number":53,"context_line":"            while not predicate():"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_4ed33439","line":50,"updated":"2019-02-26 10:49:29.000000000","message":"Missing :return: description","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"08ab2cb2f7ddd882c07ea4833f01ef92e46d432a","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    try:"},{"line_number":52,"context_line":"        with eventlet.Timeout(timeout):"},{"line_number":53,"context_line":"            while not predicate():"},{"line_number":54,"context_line":"                eventlet.sleep(sleep)"},{"line_number":55,"context_line":"    except eventlet.Timeout:"},{"line_number":56,"context_line":"        return False"},{"line_number":57,"context_line":"    return True"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_399acf6e","line":54,"range":{"start_line":53,"start_character":12,"end_line":54,"end_character":37},"updated":"2019-02-25 14:59:52.000000000","message":"we will not have monkey patched and we should not monkey patch so im not sure this is correct. \n\nit may work but i have never invoked eventlys sleep like this direclty.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e64aa0d9cc8b8db24649f2174f94a5d886e93611","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    try:"},{"line_number":52,"context_line":"        with eventlet.Timeout(timeout):"},{"line_number":53,"context_line":"            while not predicate():"},{"line_number":54,"context_line":"                eventlet.sleep(sleep)"},{"line_number":55,"context_line":"    except eventlet.Timeout:"},{"line_number":56,"context_line":"        return False"},{"line_number":57,"context_line":"    return True"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_74e61e19","line":54,"range":{"start_line":53,"start_character":12,"end_line":54,"end_character":37},"in_reply_to":"9fdfeff1_399acf6e","updated":"2019-02-25 15:29:54.000000000","message":"It\u0027s a copy/paste from Neutron.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d034a76aa9cc85c549c2ddcb28fe3ef4768d9029","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    \"\"\""},{"line_number":51,"context_line":"    try:"},{"line_number":52,"context_line":"        with eventlet.Timeout(timeout):"},{"line_number":53,"context_line":"            while not predicate():"},{"line_number":54,"context_line":"                eventlet.sleep(sleep)"},{"line_number":55,"context_line":"    except eventlet.Timeout:"},{"line_number":56,"context_line":"        return False"},{"line_number":57,"context_line":"    return True"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_a138c5d2","line":54,"range":{"start_line":53,"start_character":12,"end_line":54,"end_character":37},"in_reply_to":"9fdfeff1_74e61e19","updated":"2019-02-25 17:23:52.000000000","message":"ya thinking about this it should be fine but i\nthink it will actully translate into a thread sleep since\nthere are no greenthread but that is fine.\n\nthis is just test code so blocking is fine only one\ntest will be running on each worker at a time anyway.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f079835e4f87655408b20e4643498f01d621e446","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    return True"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"def _catch_timeout(f):"},{"line_number":61,"context_line":"    @functools.wraps(f)"},{"line_number":62,"context_line":"    def func(self, *args, **kwargs):"},{"line_number":63,"context_line":"        try:"},{"line_number":64,"context_line":"            return f(self, *args, **kwargs)"},{"line_number":65,"context_line":"        except eventlet.Timeout as e:"},{"line_number":66,"context_line":"            self.fail(\u0027Execution of this test timed out: %s\u0027 % e)"},{"line_number":67,"context_line":"    return func"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class _CatchTimeoutMetaclass(abc.ABCMeta):"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_6e67184f","line":67,"range":{"start_line":60,"start_character":0,"end_line":67,"end_character":15},"updated":"2019-02-26 10:49:29.000000000","message":"nit: this might make sense as a staticmethod of _CatchTimeoutMetaclass","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a50c728dd1d1d37da15cabf7122cd1f7a615685c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    return True"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"def _catch_timeout(f):"},{"line_number":61,"context_line":"    @functools.wraps(f)"},{"line_number":62,"context_line":"    def func(self, *args, **kwargs):"},{"line_number":63,"context_line":"        try:"},{"line_number":64,"context_line":"            return f(self, *args, **kwargs)"},{"line_number":65,"context_line":"        except eventlet.Timeout as e:"},{"line_number":66,"context_line":"            self.fail(\u0027Execution of this test timed out: %s\u0027 % e)"},{"line_number":67,"context_line":"    return func"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"class _CatchTimeoutMetaclass(abc.ABCMeta):"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_643c1993","line":67,"range":{"start_line":60,"start_character":0,"end_line":67,"end_character":15},"in_reply_to":"9fdfeff1_6e67184f","updated":"2019-02-26 12:23:42.000000000","message":"Done","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f079835e4f87655408b20e4643498f01d621e446","unresolved":false,"context_lines":[{"line_number":87,"context_line":"             {\u0027prog\u0027: sys.argv[0], \u0027version\u0027: osvif_version.__version__})"},{"line_number":88,"context_line":"    LOG.debug(\"command line: %s\", \" \".join(sys.argv))"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"def sanitize_log_path(path):"},{"line_number":92,"context_line":"    # Sanitize the string so that its log path is shell friendly"},{"line_number":93,"context_line":"    replace_map \u003d {\u0027 \u0027: \u0027-\u0027, \u0027(\u0027: \u0027_\u0027, \u0027)\u0027: \u0027_\u0027}"},{"line_number":94,"context_line":"    for s, r in replace_map.items():"},{"line_number":95,"context_line":"        path \u003d path.replace(s, r)"},{"line_number":96,"context_line":"    return path"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# Test worker cannot survive eventlet\u0027s Timeout exception, which effectively"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_eee30804","line":96,"range":{"start_line":90,"start_character":0,"end_line":96,"end_character":15},"updated":"2019-02-26 10:49:29.000000000","message":"Could have sworn I saw this somewhere else in the os-vif codebase yesterday...","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a50c728dd1d1d37da15cabf7122cd1f7a615685c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"             {\u0027prog\u0027: sys.argv[0], \u0027version\u0027: osvif_version.__version__})"},{"line_number":88,"context_line":"    LOG.debug(\"command line: %s\", \" \".join(sys.argv))"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"def sanitize_log_path(path):"},{"line_number":92,"context_line":"    # Sanitize the string so that its log path is shell friendly"},{"line_number":93,"context_line":"    replace_map \u003d {\u0027 \u0027: \u0027-\u0027, \u0027(\u0027: \u0027_\u0027, \u0027)\u0027: \u0027_\u0027}"},{"line_number":94,"context_line":"    for s, r in replace_map.items():"},{"line_number":95,"context_line":"        path \u003d path.replace(s, r)"},{"line_number":96,"context_line":"    return path"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# Test worker cannot survive eventlet\u0027s Timeout exception, which effectively"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_c4ae25e6","line":96,"range":{"start_line":90,"start_character":0,"end_line":96,"end_character":15},"in_reply_to":"9fdfeff1_eee30804","updated":"2019-02-26 12:23:42.000000000","message":"As commented with Jay and Sean, the base classes for FT and UT will be merged in os-vif.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"18b586459a7d83c2de2ad2dae4b49fa654cf0fb8","unresolved":false,"context_lines":[{"line_number":87,"context_line":"             {\u0027prog\u0027: sys.argv[0], \u0027version\u0027: osvif_version.__version__})"},{"line_number":88,"context_line":"    LOG.debug(\"command line: %s\", \" \".join(sys.argv))"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"def sanitize_log_path(path):"},{"line_number":92,"context_line":"    # Sanitize the string so that its log path is shell friendly"},{"line_number":93,"context_line":"    replace_map \u003d {\u0027 \u0027: \u0027-\u0027, \u0027(\u0027: \u0027_\u0027, \u0027)\u0027: \u0027_\u0027}"},{"line_number":94,"context_line":"    for s, r in replace_map.items():"},{"line_number":95,"context_line":"        path \u003d path.replace(s, r)"},{"line_number":96,"context_line":"    return path"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# Test worker cannot survive eventlet\u0027s Timeout exception, which effectively"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_a9d3ba00","line":96,"range":{"start_line":90,"start_character":0,"end_line":96,"end_character":15},"in_reply_to":"9fdfeff1_eee30804","updated":"2019-02-26 11:27:49.000000000","message":"yes im fixing this in my python3-functional series.\nbut that is in os_vif/tests/functional/base.py \n\nthis file is basically a copy of that.\nwe said we would converge them in train.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f079835e4f87655408b20e4643498f01d621e446","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    return path"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# Test worker cannot survive eventlet\u0027s Timeout exception, which effectively"},{"line_number":100,"context_line":"# kills the whole worker, with all test cases scheduled to it. This metaclass"},{"line_number":101,"context_line":"# makes all test cases convert Timeout exceptions into unittest friendly"},{"line_number":102,"context_line":"# failure mode (self.fail)."},{"line_number":103,"context_line":"@six.add_metaclass(_CatchTimeoutMetaclass)"},{"line_number":104,"context_line":"class BaseFunctionalTestCase(base.BaseTestCase):"},{"line_number":105,"context_line":"    \"\"\"Base class for functional tests.\"\"\""}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_0ecd2c2f","line":102,"range":{"start_line":99,"start_character":0,"end_line":102,"end_character":27},"updated":"2019-02-26 10:49:29.000000000","message":"This could/should be the docstring of the class itself. I had no idea what that was doing until I got here","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a50c728dd1d1d37da15cabf7122cd1f7a615685c","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    return path"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# Test worker cannot survive eventlet\u0027s Timeout exception, which effectively"},{"line_number":100,"context_line":"# kills the whole worker, with all test cases scheduled to it. This metaclass"},{"line_number":101,"context_line":"# makes all test cases convert Timeout exceptions into unittest friendly"},{"line_number":102,"context_line":"# failure mode (self.fail)."},{"line_number":103,"context_line":"@six.add_metaclass(_CatchTimeoutMetaclass)"},{"line_number":104,"context_line":"class BaseFunctionalTestCase(base.BaseTestCase):"},{"line_number":105,"context_line":"    \"\"\"Base class for functional tests.\"\"\""}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_24a61111","line":102,"range":{"start_line":99,"start_character":0,"end_line":102,"end_character":27},"in_reply_to":"9fdfeff1_0ecd2c2f","updated":"2019-02-26 12:23:42.000000000","message":"Done","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f079835e4f87655408b20e4643498f01d621e446","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            helper_command\u003d\u0027 \u0027.join([\u0027sudo\u0027, \u0027-E\u0027, privsep_helper]),"},{"line_number":119,"context_line":"            group\u003d\u0027vif_plug_ovs_privileged\u0027)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def config(self, **kw):"},{"line_number":122,"context_line":"        \"\"\"Override some configuration values."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        The keyword arguments are the names of configuration options to"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_8ee03c99","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":14},"updated":"2019-02-26 10:49:29.000000000","message":"This is called \u0027flags\u0027 in nova [1]. I assume there\u0027s a reason to call it something different here (taken from neutron?)\n\n[1] https://github.com/openstack/nova/blob/33f367ec2f/nova/test.py#L375-L379","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a0fc1442f82155a663e7a4264d38f567ae96698f","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            helper_command\u003d\u0027 \u0027.join([\u0027sudo\u0027, \u0027-E\u0027, privsep_helper]),"},{"line_number":119,"context_line":"            group\u003d\u0027vif_plug_ovs_privileged\u0027)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def config(self, **kw):"},{"line_number":122,"context_line":"        \"\"\"Override some configuration values."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        The keyword arguments are the names of configuration options to"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_c955de51","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":14},"in_reply_to":"9fdfeff1_8ee03c99","updated":"2019-02-26 11:35:57.000000000","message":"lets call it flags for parity with nova.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a50c728dd1d1d37da15cabf7122cd1f7a615685c","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            helper_command\u003d\u0027 \u0027.join([\u0027sudo\u0027, \u0027-E\u0027, privsep_helper]),"},{"line_number":119,"context_line":"            group\u003d\u0027vif_plug_ovs_privileged\u0027)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def config(self, **kw):"},{"line_number":122,"context_line":"        \"\"\"Override some configuration values."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        The keyword arguments are the names of configuration options to"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_043d0d8d","line":121,"range":{"start_line":121,"start_character":8,"end_line":121,"end_character":14},"in_reply_to":"9fdfeff1_c955de51","updated":"2019-02-26 12:23:42.000000000","message":"Done","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"67c6112f7fac4596e66fdd1c4070f6d7af34153d","unresolved":false,"context_lines":[{"line_number":103,"context_line":"class BaseFunctionalTestCase(base.BaseTestCase):"},{"line_number":104,"context_line":"    \"\"\"Base class for functional tests."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    Test worker cannot survive eventlet\u0027s Timeout exception, which effectively"},{"line_number":107,"context_line":"    kills the whole worker, with all test cases scheduled to it. This metaclass"},{"line_number":108,"context_line":"    makes all test cases convert Timeout exceptions into unittest friendly"},{"line_number":109,"context_line":"    failure mode (self.fail)."},{"line_number":110,"context_line":"    \"\"\""},{"line_number":111,"context_line":"    def setUp(self):"},{"line_number":112,"context_line":"        super(BaseFunctionalTestCase, self).setUp()"}],"source_content_type":"text/x-python","patch_set":56,"id":"9fdfeff1_fe6bb11b","line":109,"range":{"start_line":106,"start_character":0,"end_line":109,"end_character":29},"updated":"2019-02-26 14:37:40.000000000","message":"Ah, I meant a docstring of the metaclass class (\"This metaclass makes...\") but this is better even as-is","commit_id":"1f7b5e8a20986b951f28657be424bd57a27ec04e"}],"vif_plug_ovs/tests/functional/ovsdb/test_ovsdb_lib.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e297026c0f389773c1822367316044f2e1bfaa7d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            self.cfg_opts.append(cfg.IntOpt(\u0027ovs_vsctl_timeout\u0027, default\u003d120))"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        if self.interface \u003d\u003d \u0027native\u0027:"},{"line_number":47,"context_line":"            processutils.execute(\u0027sudo ovs-vsctl set-manager ptcp:6640\u0027)"},{"line_number":48,"context_line":"            self.cfg_opts.append("},{"line_number":49,"context_line":"                cfg.StrOpt(\u0027ovsdb_interface\u0027, default\u003dself.interface))"},{"line_number":50,"context_line":"            cfg.StrOpt(\u0027ovsdb_connection\u0027, default\u003d\u0027tcp:127.0.0.1:6640\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"df7087c5_fd0bd120","line":47,"range":{"start_line":47,"start_character":12,"end_line":47,"end_character":72},"updated":"2018-03-13 11:38:31.000000000","message":"this will not work. it will try to find an executeable called\n\u0027sudo ovs-vsctl set-manager ptcp:6640\u0027 and execute that.\nthis needs to be\n\u0027sudo\u0027, \u0027ovs-vsctl\u0027, \u0027set-manager\u0027, \u0027ptcp:6640\u0027\ninstead","commit_id":"7fb5e32eaf06772ebaf4b75b2c75836e8f26a02f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e297026c0f389773c1822367316044f2e1bfaa7d","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        if self.interface \u003d\u003d \u0027native\u0027:"},{"line_number":47,"context_line":"            processutils.execute(\u0027sudo ovs-vsctl set-manager ptcp:6640\u0027)"},{"line_number":48,"context_line":"            self.cfg_opts.append("},{"line_number":49,"context_line":"                cfg.StrOpt(\u0027ovsdb_interface\u0027, default\u003dself.interface))"},{"line_number":50,"context_line":"            cfg.StrOpt(\u0027ovsdb_connection\u0027, default\u003d\u0027tcp:127.0.0.1:6640\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        self.cfg_group \u003d cfg.OptGroup(\u0027vif_plug_ovs\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"df7087c5_ba5ebf41","line":49,"range":{"start_line":48,"start_character":11,"end_line":49,"end_character":70},"updated":"2018-03-13 11:38:31.000000000","message":"from the test logs\nhttp://logs.openstack.org/26/482226/19/check/openstack-tox-functional-with-sudo/26b425c/testr_results.html.gz\n\nit looks like ovsdb_interface needs to added to the config for the vsctl tests also.\n\nft1.8: vif_plug_ovs.tests.functional.ovsdb.test_ovsdb_lib.TestOVSDBLib.test_ensure_ovs_bridge(vsctl)_StringException: Traceback (most recent call last):\n  File \"vif_plug_ovs/tests/functional/ovsdb/test_ovsdb_lib.py\", line 56, in setUp\n    self.ovs \u003d ovsdb_lib.BaseOVS(CONF.vif_plug_ovs)\n  File \"vif_plug_ovs/ovsdb/ovsdb_lib.py\", line 29, in __init__\n    self.ovsdb \u003d ovsdb_api.get_instace(self, config)\n  File \"vif_plug_ovs/ovsdb/api.py\", line 25, in get_instace\n    interface_map[iface_name or config.ovsdb_interface])\n  File \"/home/zuul/src/git.openstack.org/openstack/os-vif/.tox/functional/local/lib/python2.7/site-packages/oslo_config/cfg.py\", line 3378, in __getattr__\n    return self._conf._get(name, self._group)\n  File \"/home/zuul/src/git.openstack.org/openstack/os-vif/.tox/functional/local/lib/python2.7/site-packages/oslo_config/cfg.py\", line 2940, in _get\n    value \u003d self._do_get(name, group, namespace)\n  File \"/home/zuul/src/git.openstack.org/openstack/os-vif/.tox/functional/local/lib/python2.7/site-packages/oslo_config/cfg.py\", line 2957, in _do_get\n    info \u003d self._get_opt_info(name, group)\n  File \"/home/zuul/src/git.openstack.org/openstack/os-vif/.tox/functional/local/lib/python2.7/site-packages/oslo_config/cfg.py\", line 3114, in _get_opt_info\n    raise NoSuchOptError(opt_name, group)\noslo_config.cfg.NoSuchOptError: no such option ovsdb_interface in group [vif_plug_ovs]","commit_id":"7fb5e32eaf06772ebaf4b75b2c75836e8f26a02f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"93fe0560f5c5f1ce7088a570cf08960873e8fb53","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"class TestOVSDBLib(testscenarios.WithScenarios, base.BaseFunctionalTestCase):"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    scenarios \u003d ["},{"line_number":41,"context_line":"        (\u0027native\u0027, {\u0027interface\u0027: \u0027native\u0027}),"},{"line_number":42,"context_line":"        (\u0027vsctl\u0027, {\u0027interface\u0027: \u0027vsctl\u0027})"},{"line_number":43,"context_line":"    ]"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def setUp(self):"},{"line_number":46,"context_line":"        super(TestOVSDBLib, self).setUp()"}],"source_content_type":"text/x-python","patch_set":30,"id":"3f79a3b5_5462333f","line":43,"range":{"start_line":40,"start_character":4,"end_line":43,"end_character":5},"updated":"2018-10-08 11:55:47.000000000","message":"its been a while since i have seen this used.\nthis is the perfect usecase for it :)","commit_id":"6fc18fe75bb556ef91141f87a319849eb940d357"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d7ba7a5633cff9c7145b1692f85ed754bc9ba9c9","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"@privsep.vif_plug.entrypoint"},{"line_number":34,"context_line":"def run_sudo_process(*full_args):"},{"line_number":35,"context_line":"    return processutils.execute(*full_args)[0].rstrip()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"9fdfeff1_6350fc0b","line":34,"range":{"start_line":34,"start_character":4,"end_line":34,"end_character":20},"updated":"2019-02-20 13:59:55.000000000","message":"what does this have to do with sudo? I don\u0027t see run_as_root\u003dTrue being passed to the processutils.execute() call.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"856c54cf55708c0c6ba3cb0df0fc3ca30d314caf","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"@privsep.vif_plug.entrypoint"},{"line_number":34,"context_line":"def run_sudo_process(*full_args):"},{"line_number":35,"context_line":"    return processutils.execute(*full_args)[0].rstrip()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"9fdfeff1_834de0c5","line":34,"range":{"start_line":34,"start_character":4,"end_line":34,"end_character":20},"in_reply_to":"9fdfeff1_6350fc0b","updated":"2019-02-20 14:32:00.000000000","message":"i think redolfo wanted to imply that it was run with elevated privileges since we launch the privesep deamon via sudo.\n\nrun_privileged()\n\nmight be clearer","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1df1f6a08d2f19dd26929f6af780d4fa2d5d19c6","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"@privsep.vif_plug.entrypoint"},{"line_number":34,"context_line":"def run_sudo_process(*full_args):"},{"line_number":35,"context_line":"    return processutils.execute(*full_args)[0].rstrip()"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"9fdfeff1_766e6601","line":34,"range":{"start_line":34,"start_character":4,"end_line":34,"end_character":20},"in_reply_to":"9fdfeff1_834de0c5","updated":"2019-02-21 11:12:42.000000000","message":"Agree, \"run_privileged\" is more clear.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d7ba7a5633cff9c7145b1692f85ed754bc9ba9c9","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            cfg.IntOpt(\u0027network_device_mtu\u0027, default\u003d1500),"},{"line_number":49,"context_line":"        ]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        self.cfg_opts.append(cfg.IntOpt(\u0027ovs_vsctl_timeout\u0027, default\u003d120))"},{"line_number":52,"context_line":"        self.cfg_opts.append("},{"line_number":53,"context_line":"                cfg.StrOpt(\u0027ovsdb_interface\u0027, default\u003dself.interface))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if self.interface \u003d\u003d \u0027native\u0027:"},{"line_number":56,"context_line":"            run_sudo_process(\u0027ovs-vsctl\u0027, \u0027set-manager\u0027, \u0027ptcp:6640\u0027)"},{"line_number":57,"context_line":"            self.cfg_opts.append("},{"line_number":58,"context_line":"                cfg.StrOpt(\u0027ovsdb_connection\u0027, default\u003d\u0027tcp:127.0.0.1:6640\u0027))"},{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            self.cfg_opts.append(cfg.StrOpt(\u0027ovsdb_connection\u0027, default\u003dNone))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        self.cfg_group \u003d cfg.OptGroup(\u0027vif_plug_ovs\u0027,"},{"line_number":63,"context_line":"                                      \u0027os-vif plugin OVS testing options\u0027)"},{"line_number":64,"context_line":"        CONF.register_opts(self.cfg_opts, group\u003dself.cfg_group)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self.addCleanup(self._clean_cfg)"}],"source_content_type":"text/x-python","patch_set":48,"id":"9fdfeff1_8348805c","line":63,"range":{"start_line":51,"start_character":0,"end_line":63,"end_character":74},"updated":"2019-02-20 13:59:55.000000000","message":"I\u0027m confused why this is needed. We should have a single set of CONF options, regardless of the OVS interface we\u0027re using.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"856c54cf55708c0c6ba3cb0df0fc3ca30d314caf","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            cfg.IntOpt(\u0027network_device_mtu\u0027, default\u003d1500),"},{"line_number":49,"context_line":"        ]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        self.cfg_opts.append(cfg.IntOpt(\u0027ovs_vsctl_timeout\u0027, default\u003d120))"},{"line_number":52,"context_line":"        self.cfg_opts.append("},{"line_number":53,"context_line":"                cfg.StrOpt(\u0027ovsdb_interface\u0027, default\u003dself.interface))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if self.interface \u003d\u003d \u0027native\u0027:"},{"line_number":56,"context_line":"            run_sudo_process(\u0027ovs-vsctl\u0027, \u0027set-manager\u0027, \u0027ptcp:6640\u0027)"},{"line_number":57,"context_line":"            self.cfg_opts.append("},{"line_number":58,"context_line":"                cfg.StrOpt(\u0027ovsdb_connection\u0027, default\u003d\u0027tcp:127.0.0.1:6640\u0027))"},{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            self.cfg_opts.append(cfg.StrOpt(\u0027ovsdb_connection\u0027, default\u003dNone))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        self.cfg_group \u003d cfg.OptGroup(\u0027vif_plug_ovs\u0027,"},{"line_number":63,"context_line":"                                      \u0027os-vif plugin OVS testing options\u0027)"},{"line_number":64,"context_line":"        CONF.register_opts(self.cfg_opts, group\u003dself.cfg_group)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self.addCleanup(self._clean_cfg)"}],"source_content_type":"text/x-python","patch_set":48,"id":"9fdfeff1_83e2c09f","line":63,"range":{"start_line":51,"start_character":0,"end_line":63,"end_character":74},"in_reply_to":"9fdfeff1_8348805c","updated":"2019-02-20 14:32:00.000000000","message":"yes idealy you should just have once foncig option to change the backed and all other config option should be the same.\n\nthe native client shoudl be able to use the unix socket too.\nit can connect over tcp but i did not think it was a requirement.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1df1f6a08d2f19dd26929f6af780d4fa2d5d19c6","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            cfg.IntOpt(\u0027network_device_mtu\u0027, default\u003d1500),"},{"line_number":49,"context_line":"        ]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        self.cfg_opts.append(cfg.IntOpt(\u0027ovs_vsctl_timeout\u0027, default\u003d120))"},{"line_number":52,"context_line":"        self.cfg_opts.append("},{"line_number":53,"context_line":"                cfg.StrOpt(\u0027ovsdb_interface\u0027, default\u003dself.interface))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if self.interface \u003d\u003d \u0027native\u0027:"},{"line_number":56,"context_line":"            run_sudo_process(\u0027ovs-vsctl\u0027, \u0027set-manager\u0027, \u0027ptcp:6640\u0027)"},{"line_number":57,"context_line":"            self.cfg_opts.append("},{"line_number":58,"context_line":"                cfg.StrOpt(\u0027ovsdb_connection\u0027, default\u003d\u0027tcp:127.0.0.1:6640\u0027))"},{"line_number":59,"context_line":"        else:"},{"line_number":60,"context_line":"            self.cfg_opts.append(cfg.StrOpt(\u0027ovsdb_connection\u0027, default\u003dNone))"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        self.cfg_group \u003d cfg.OptGroup(\u0027vif_plug_ovs\u0027,"},{"line_number":63,"context_line":"                                      \u0027os-vif plugin OVS testing options\u0027)"},{"line_number":64,"context_line":"        CONF.register_opts(self.cfg_opts, group\u003dself.cfg_group)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self.addCleanup(self._clean_cfg)"}],"source_content_type":"text/x-python","patch_set":48,"id":"9fdfeff1_0170f607","line":63,"range":{"start_line":51,"start_character":0,"end_line":63,"end_character":74},"in_reply_to":"9fdfeff1_83e2c09f","updated":"2019-02-21 11:12:42.000000000","message":"- Agree, both implementation should work with the same config.\n- Yes, the native implementation can work with UNIX sockets too. But we need a default connection and I\u0027ll define the one set in Neutron, both in the default config and the tests.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d7ba7a5633cff9c7145b1692f85ed754bc9ba9c9","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        CONF.unregister_opts(self.cfg_opts, group\u003dself.cfg_group)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _check_interface(self, port, parameter):"},{"line_number":83,"context_line":"        time.sleep(0.1)"},{"line_number":84,"context_line":"        return self._ovsdb.db_get(\u0027Interface\u0027, port, parameter).execute()"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _add_port(self, bridge, port, may_exist\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":48,"id":"9fdfeff1_037c9070","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":23},"updated":"2019-02-20 13:59:55.000000000","message":"this is a recipe for future headaches trying to track down issues. I would say at a minimum there should be some retry mechanism with an exponential backoff instead of hard-coding a single time.sleep(0.1) here.\n\nFurthermore, why does *this* particular _check_interface() function include a time.sleep() call but _check_bridge() does not?","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1df1f6a08d2f19dd26929f6af780d4fa2d5d19c6","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        CONF.unregister_opts(self.cfg_opts, group\u003dself.cfg_group)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _check_interface(self, port, parameter):"},{"line_number":83,"context_line":"        time.sleep(0.1)"},{"line_number":84,"context_line":"        return self._ovsdb.db_get(\u0027Interface\u0027, port, parameter).execute()"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _add_port(self, bridge, port, may_exist\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":48,"id":"9fdfeff1_41ab5e1d","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":23},"in_reply_to":"9fdfeff1_0339f0f0","updated":"2019-02-21 11:12:42.000000000","message":"I realized that, when retrieving the interface information (specifically for the MTU value), it takes some time to apply it, even when the transaction is committed.\n\nI\u0027ll implement a more elegant way to retrieve and check the value.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"856c54cf55708c0c6ba3cb0df0fc3ca30d314caf","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        CONF.unregister_opts(self.cfg_opts, group\u003dself.cfg_group)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _check_interface(self, port, parameter):"},{"line_number":83,"context_line":"        time.sleep(0.1)"},{"line_number":84,"context_line":"        return self._ovsdb.db_get(\u0027Interface\u0027, port, parameter).execute()"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _add_port(self, bridge, port, may_exist\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":48,"id":"9fdfeff1_0339f0f0","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":23},"in_reply_to":"9fdfeff1_037c9070","updated":"2019-02-20 14:32:00.000000000","message":"i had not got this far lastnight but that is a good question.\n\nwas this left over form debuging.\n\nwe really should not have sleeps like this without an explaintionin code comment as to why this is needed and why other options were not viable.","commit_id":"9ea5063418c2611e27060708c2c5d9cb8070a94d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5ddc198122a10e3b29c80d6bbe3fec77f9f1400d","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            return (self._ovsdb.db_get("},{"line_number":77,"context_line":"                \u0027Interface\u0027, port, parameter).execute() \u003d\u003d expected_value)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        if not expected_value:"},{"line_number":80,"context_line":"            return self._ovsdb.db_get(\u0027Interface\u0027, port, parameter).execute()"},{"line_number":81,"context_line":"        base.wait_until_true(check_value, timeout\u003d2, sleep\u003d0.5)"},{"line_number":82,"context_line":"        return self._ovsdb.db_get(\u0027Interface\u0027, port, parameter).execute()"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def _add_port(self, bridge, port, may_exist\u003dTrue):"},{"line_number":85,"context_line":"        with self._ovsdb.transaction() as txn:"}],"source_content_type":"text/x-python","patch_set":53,"id":"9fdfeff1_531454e9","line":82,"range":{"start_line":79,"start_character":0,"end_line":82,"end_character":73},"updated":"2019-02-25 13:18:28.000000000","message":"This is kind of messy :)\n\nI think something more like the following would be more readable (and maybe clean up the calls below that do self.assertEqual(\u003cvalue\u003e, self._check_interface(..., expected_value\u003d\u003cvalue\u003e)):\n\n def _check_interface(self, port, param, expected\u003dNone):\n     def check_value():\n          return self._ovsdb.db_get(\n              \u0027Interface\u0027, port, param).execute() \u003d\u003d expected\n\n     self.assertTrue(\n         base.wait_until_true(\n             check_value, timeout\u003d2, sleep\u003d0.5))","commit_id":"b236560e243b20a2a3315bc6ebf7225d165b6673"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6fab43daf046b8ea7a476fa02cb6dffdcac9159c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            return (self._ovsdb.db_get("},{"line_number":77,"context_line":"                \u0027Interface\u0027, port, parameter).execute() \u003d\u003d expected_value)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        if not expected_value:"},{"line_number":80,"context_line":"            return self._ovsdb.db_get(\u0027Interface\u0027, port, parameter).execute()"},{"line_number":81,"context_line":"        base.wait_until_true(check_value, timeout\u003d2, sleep\u003d0.5)"},{"line_number":82,"context_line":"        return self._ovsdb.db_get(\u0027Interface\u0027, port, parameter).execute()"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def _add_port(self, bridge, port, may_exist\u003dTrue):"},{"line_number":85,"context_line":"        with self._ovsdb.transaction() as txn:"}],"source_content_type":"text/x-python","patch_set":53,"id":"9fdfeff1_d35cc47e","line":82,"range":{"start_line":79,"start_character":0,"end_line":82,"end_character":73},"in_reply_to":"9fdfeff1_531454e9","updated":"2019-02-25 13:41:38.000000000","message":"Done","commit_id":"b236560e243b20a2a3315bc6ebf7225d165b6673"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5ddc198122a10e3b29c80d6bbe3fec77f9f1400d","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                                                         expected_value\u003d1000))"},{"line_number":114,"context_line":"            self.ovs._set_mtu_request(port_name, 1500)"},{"line_number":115,"context_line":"            self.assertEqual(1500, self._check_interface(port_name, \u0027mtu\u0027,"},{"line_number":116,"context_line":"                                                         expected_value\u003d1500))"},{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            self.skipTest(\u0027Current version of Open vSwitch does not support \u0027"},{"line_number":119,"context_line":"                          \u0027\"mtu_request\" parameter\u0027)"}],"source_content_type":"text/x-python","patch_set":53,"id":"9fdfeff1_93e39c05","line":116,"updated":"2019-02-25 13:18:28.000000000","message":"if you did what I describe above, this would just be:\n\n self._check_interface(port_name, \u0027mtu\u0027, expected\u003d1500)","commit_id":"b236560e243b20a2a3315bc6ebf7225d165b6673"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a0fc1442f82155a663e7a4264d38f567ae96698f","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def setUp(self):"},{"line_number":45,"context_line":"        super(TestOVSDBLib, self).setUp()"},{"line_number":46,"context_line":"        run_privileged(\u0027ovs-vsctl\u0027, \u0027set-manager\u0027, \u0027ptcp:6640\u0027)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.cfg_opts \u003d ["},{"line_number":49,"context_line":"            cfg.IntOpt(\u0027network_device_mtu\u0027, default\u003d1500),"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_c9039e41","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":63},"updated":"2019-02-26 11:35:57.000000000","message":"we should default to the unix socket not tcp so this should only be done in functions that are testign tcp.\n\nthat said you could pull this out into 2 more scenarios.\n\nnative_tcp and vsctl_tcp and just run these these again.\nthey are fast and it would be could to test both versions.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a50c728dd1d1d37da15cabf7122cd1f7a615685c","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    def setUp(self):"},{"line_number":45,"context_line":"        super(TestOVSDBLib, self).setUp()"},{"line_number":46,"context_line":"        run_privileged(\u0027ovs-vsctl\u0027, \u0027set-manager\u0027, \u0027ptcp:6640\u0027)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.cfg_opts \u003d ["},{"line_number":49,"context_line":"            cfg.IntOpt(\u0027network_device_mtu\u0027, default\u003d1500),"}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_040bcdd4","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":63},"in_reply_to":"9fdfeff1_c9039e41","updated":"2019-02-26 12:23:42.000000000","message":"But we need to provide the UNIX socket in the config option, not \"None\".\n\nAlso this is the default value in Neutron config.\n\nLet me create a follow-up patch for this if we need to deliver this right now.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f079835e4f87655408b20e4643498f01d621e446","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        super(TestOVSDBLib, self).setUp()"},{"line_number":46,"context_line":"        run_privileged(\u0027ovs-vsctl\u0027, \u0027set-manager\u0027, \u0027ptcp:6640\u0027)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.cfg_opts \u003d ["},{"line_number":49,"context_line":"            cfg.IntOpt(\u0027network_device_mtu\u0027, default\u003d1500),"},{"line_number":50,"context_line":"            cfg.IntOpt(\u0027ovs_vsctl_timeout\u0027, default\u003d120),"},{"line_number":51,"context_line":"            cfg.StrOpt(\u0027ovsdb_interface\u0027, default\u003dself.interface),"},{"line_number":52,"context_line":"            cfg.StrOpt(\u0027ovsdb_connection\u0027, default\u003d\u0027tcp:127.0.0.1:6640\u0027),"},{"line_number":53,"context_line":"        ]"},{"line_number":54,"context_line":"        self.cfg_group \u003d cfg.OptGroup(\u0027vif_plug_ovs\u0027,"},{"line_number":55,"context_line":"                                      \u0027os-vif plugin OVS testing options\u0027)"},{"line_number":56,"context_line":"        CONF.register_opts(self.cfg_opts, group\u003dself.cfg_group)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.addCleanup(self._clean_cfg)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_ce272412","line":56,"range":{"start_line":48,"start_character":0,"end_line":56,"end_character":63},"updated":"2019-02-26 10:49:29.000000000","message":"I\u0027m not entirely sure what this is doing here, tbh. Are you overriding these? If so, could we use \u0027self.flags\u0027 like we do in nova (though I can\u0027t for the life of me figure out what\u0027s using that)\n\nLater: Oh, it\u0027s here [1]\n\n[1] https://github.com/openstack/nova/blob/33f367ec2/nova/test.py#L375-L379","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4da03fc8aadd5f2c329ce006beaca9467dc21ab7","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        super(TestOVSDBLib, self).setUp()"},{"line_number":46,"context_line":"        run_privileged(\u0027ovs-vsctl\u0027, \u0027set-manager\u0027, \u0027ptcp:6640\u0027)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.cfg_opts \u003d ["},{"line_number":49,"context_line":"            cfg.IntOpt(\u0027network_device_mtu\u0027, default\u003d1500),"},{"line_number":50,"context_line":"            cfg.IntOpt(\u0027ovs_vsctl_timeout\u0027, default\u003d120),"},{"line_number":51,"context_line":"            cfg.StrOpt(\u0027ovsdb_interface\u0027, default\u003dself.interface),"},{"line_number":52,"context_line":"            cfg.StrOpt(\u0027ovsdb_connection\u0027, default\u003d\u0027tcp:127.0.0.1:6640\u0027),"},{"line_number":53,"context_line":"        ]"},{"line_number":54,"context_line":"        self.cfg_group \u003d cfg.OptGroup(\u0027vif_plug_ovs\u0027,"},{"line_number":55,"context_line":"                                      \u0027os-vif plugin OVS testing options\u0027)"},{"line_number":56,"context_line":"        CONF.register_opts(self.cfg_opts, group\u003dself.cfg_group)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.addCleanup(self._clean_cfg)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_ffe2d0d3","line":56,"range":{"start_line":48,"start_character":0,"end_line":56,"end_character":63},"in_reply_to":"9fdfeff1_a4fbe1bb","updated":"2019-02-26 13:06:56.000000000","message":"we could just load the plugin...\nthese are functional test for the part of the plugin after all.\n\ni wont block on this but again i think this is somethign we will want to clean up later\nwe should make our testign be as close as posible to how thos code will normally run.\n\nthis ovs_lib code will never be run without loadign the plugin and initializing os-vif so that is how we shoudl test it.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a50c728dd1d1d37da15cabf7122cd1f7a615685c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        super(TestOVSDBLib, self).setUp()"},{"line_number":46,"context_line":"        run_privileged(\u0027ovs-vsctl\u0027, \u0027set-manager\u0027, \u0027ptcp:6640\u0027)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.cfg_opts \u003d ["},{"line_number":49,"context_line":"            cfg.IntOpt(\u0027network_device_mtu\u0027, default\u003d1500),"},{"line_number":50,"context_line":"            cfg.IntOpt(\u0027ovs_vsctl_timeout\u0027, default\u003d120),"},{"line_number":51,"context_line":"            cfg.StrOpt(\u0027ovsdb_interface\u0027, default\u003dself.interface),"},{"line_number":52,"context_line":"            cfg.StrOpt(\u0027ovsdb_connection\u0027, default\u003d\u0027tcp:127.0.0.1:6640\u0027),"},{"line_number":53,"context_line":"        ]"},{"line_number":54,"context_line":"        self.cfg_group \u003d cfg.OptGroup(\u0027vif_plug_ovs\u0027,"},{"line_number":55,"context_line":"                                      \u0027os-vif plugin OVS testing options\u0027)"},{"line_number":56,"context_line":"        CONF.register_opts(self.cfg_opts, group\u003dself.cfg_group)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.addCleanup(self._clean_cfg)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_a4fbe1bb","line":56,"range":{"start_line":48,"start_character":0,"end_line":56,"end_character":63},"in_reply_to":"9fdfeff1_a91adac2","updated":"2019-02-26 12:23:42.000000000","message":"OvsPlugin.CONFIG_OPTIONS are registered when the plugin is loaded in os-vif.PluginBase. In this case, OvsPlugin is never loaded and those options and group doesn\u0027t exist; that means I can\u0027t overwrite those values.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a0fc1442f82155a663e7a4264d38f567ae96698f","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        super(TestOVSDBLib, self).setUp()"},{"line_number":46,"context_line":"        run_privileged(\u0027ovs-vsctl\u0027, \u0027set-manager\u0027, \u0027ptcp:6640\u0027)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.cfg_opts \u003d ["},{"line_number":49,"context_line":"            cfg.IntOpt(\u0027network_device_mtu\u0027, default\u003d1500),"},{"line_number":50,"context_line":"            cfg.IntOpt(\u0027ovs_vsctl_timeout\u0027, default\u003d120),"},{"line_number":51,"context_line":"            cfg.StrOpt(\u0027ovsdb_interface\u0027, default\u003dself.interface),"},{"line_number":52,"context_line":"            cfg.StrOpt(\u0027ovsdb_connection\u0027, default\u003d\u0027tcp:127.0.0.1:6640\u0027),"},{"line_number":53,"context_line":"        ]"},{"line_number":54,"context_line":"        self.cfg_group \u003d cfg.OptGroup(\u0027vif_plug_ovs\u0027,"},{"line_number":55,"context_line":"                                      \u0027os-vif plugin OVS testing options\u0027)"},{"line_number":56,"context_line":"        CONF.register_opts(self.cfg_opts, group\u003dself.cfg_group)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.addCleanup(self._clean_cfg)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":54,"id":"9fdfeff1_a91adac2","line":56,"range":{"start_line":48,"start_character":0,"end_line":56,"end_character":63},"in_reply_to":"9fdfeff1_ce272412","updated":"2019-02-26 11:35:57.000000000","message":"using CONF.set_override is cleaner then reregistering the config options so +1 from me on either porting the flags funcion or using set_override directly\n\nlater:\noh looks like you have already ported it\nhttps://review.openstack.org/#/c/482226/54/vif_plug_ovs/tests/functional/base.py@121\nyou should use that function here instead.","commit_id":"7dced9d458bdca83a7ed3eafe8bc25b18f3502f3"}]}
