)]}'
{"doc/requirements.txt":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"9c2bb96266edabfa9d9f1a28d262864430d70627","unresolved":false,"context_lines":[{"line_number":1,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2,\u003c2.0.0;python_version\u003d\u003d\u00272.7\u0027  # BSD"},{"line_number":2,"context_line":"sphinx!\u003d1.6.6,!\u003d1.6.7,\u003e\u003d1.6.2;python_version\u003e\u003d\u00273.4\u0027 # BSD"},{"line_number":3,"context_line":"openstackdocstheme\u003e\u003d1.18.1  # Apache-2.0"},{"line_number":4,"context_line":"# releasenotes"},{"line_number":5,"context_line":"reno\u003e\u003d2.5.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":7,"id":"9fb8cfa7_ca90ac98","line":2,"range":{"start_line":2,"start_character":51,"end_line":2,"end_character":52},"updated":"2019-06-20 21:18:44.000000000","message":"Actually it IS supposed to be 2 spaces, isn\u0027t it?","commit_id":"24f0c78fd3787275cb5b953256133232b1abaf30"}],"lower-constraints.txt":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a16c97c31a2b3a023d7b818dc71e7fb38e192cba","unresolved":false,"context_lines":[{"line_number":13,"context_line":"python-subunit\u003d\u003d1.0.0"},{"line_number":14,"context_line":"six\u003d\u003d1.10.0"},{"line_number":15,"context_line":"stestr\u003d\u003d2.0.0"},{"line_number":16,"context_line":"tenacity\u003d\u003d3.2.1"},{"line_number":17,"context_line":"testtools\u003d\u003d2.2.0"}],"source_content_type":"text/plain","patch_set":7,"id":"9fb8cfa7_0acfa47f","line":16,"updated":"2019-06-20 21:20:22.000000000","message":"Has to be at least 5.0.2 for use of `min` in tenacity.wait_exponential","commit_id":"24f0c78fd3787275cb5b953256133232b1abaf30"}],"octavia_lib/api/drivers/driver_lib.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a16c97c31a2b3a023d7b818dc71e7fb38e192cba","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @tenacity.retry("},{"line_number":36,"context_line":"        stop\u003dtenacity.stop_after_attempt(30), reraise\u003dTrue,"},{"line_number":37,"context_line":"        wait\u003dtenacity.wait_exponential(multiplier\u003d1, min\u003d1, max\u003d5),"},{"line_number":38,"context_line":"        retry\u003dtenacity.retry_if_exception_type("},{"line_number":39,"context_line":"            driver_exceptions.DriverAgentNotFound))"},{"line_number":40,"context_line":"    def _check_for_socket_ready(self, socket):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fb8cfa7_eaea50d6","line":37,"updated":"2019-06-20 21:20:22.000000000","message":"Can\u0027t use `min` in tenacity.wait_exponential until 5.0.2 (we\u0027re on 3.2.1 in lower-constraints):\nhttps://github.com/jd/tenacity/commit/8ed5195241cd9b01fdde1e00b41bff53919e9ab3\nEither that needs to be removed, or we need to upgrade.","commit_id":"24f0c78fd3787275cb5b953256133232b1abaf30"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3d66dc0042c38966e88940d6dd61e5362b40692c","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                    fault_string\u003d(\u0027The driver agent did not respond in {} \u0027"},{"line_number":69,"context_line":"                                  \u0027seconds.\u0027.format(DRIVER_AGENT_TIMEOUT)))"},{"line_number":70,"context_line":"            # Give the CPU a break from polling"},{"line_number":71,"context_line":"            time.sleep(0.01)"},{"line_number":72,"context_line":"        payload_size \u003d int(size_str)"},{"line_number":73,"context_line":"        mv_buffer \u003d memoryview(bytearray(payload_size))"},{"line_number":74,"context_line":"        next_offset \u003d 0"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_72c5ec3b","line":71,"updated":"2019-07-26 22:03:21.000000000","message":"Sometimes I wonder if we should be using a higher level socket handling library rather than coding our own recv() loops in 2019 \u003e_\u003e","commit_id":"61c9a832134dcf0e9bac7fa60891a73e5d3e4e72"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"910f4f378bf991da7b02f6a32022b8cb9dbeabce","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                    fault_string\u003d(\u0027The driver agent did not respond in {} \u0027"},{"line_number":69,"context_line":"                                  \u0027seconds.\u0027.format(DRIVER_AGENT_TIMEOUT)))"},{"line_number":70,"context_line":"            # Give the CPU a break from polling"},{"line_number":71,"context_line":"            time.sleep(0.01)"},{"line_number":72,"context_line":"        payload_size \u003d int(size_str)"},{"line_number":73,"context_line":"        mv_buffer \u003d memoryview(bytearray(payload_size))"},{"line_number":74,"context_line":"        next_offset \u003d 0"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_12ed988a","line":71,"in_reply_to":"7faddb67_72c5ec3b","updated":"2019-07-26 22:16:55.000000000","message":"I am open to suggestions...","commit_id":"61c9a832134dcf0e9bac7fa60891a73e5d3e4e72"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"4d4217fbd393ee489cf5d5f28632a55511610890","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        :param loadbalancer_id: The load balancer ID to lookup."},{"line_number":168,"context_line":"        :type loadbalancer_id: UUID string"},{"line_number":169,"context_line":"        :raises: NotFound"},{"line_number":170,"context_line":"        :returns: A LoadBalancer object or None if not found."},{"line_number":171,"context_line":"        \"\"\""},{"line_number":172,"context_line":"        data \u003d self._get_resource(constants.LOADBALANCERS, loadbalancer_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_46602ea6","line":169,"updated":"2019-07-27 09:18:19.000000000","message":"An object not found does not raise NotFound but returns None. This method can raise DriverAgentTimeout and DriverError.","commit_id":"61c9a832134dcf0e9bac7fa60891a73e5d3e4e72"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"9f54068b4f49686766053c3d38c08340ff19b348","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        :param loadbalancer_id: The load balancer ID to lookup."},{"line_number":168,"context_line":"        :type loadbalancer_id: UUID string"},{"line_number":169,"context_line":"        :raises: NotFound"},{"line_number":170,"context_line":"        :returns: A LoadBalancer object or None if not found."},{"line_number":171,"context_line":"        \"\"\""},{"line_number":172,"context_line":"        data \u003d self._get_resource(constants.LOADBALANCERS, loadbalancer_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_d52a742a","line":169,"in_reply_to":"7faddb67_46602ea6","updated":"2019-07-29 18:31:20.000000000","message":"Sigh, good catch.","commit_id":"61c9a832134dcf0e9bac7fa60891a73e5d3e4e72"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"4d4217fbd393ee489cf5d5f28632a55511610890","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        :param listener_id: The listener ID to lookup."},{"line_number":181,"context_line":"        :type listener_id: UUID string"},{"line_number":182,"context_line":"        :raises: NotFound"},{"line_number":183,"context_line":"        :returns: A Listener object or None if not found."},{"line_number":184,"context_line":"        \"\"\""},{"line_number":185,"context_line":"        data \u003d self._get_resource(constants.LISTENERS, listener_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_6663eab2","line":182,"updated":"2019-07-27 09:18:19.000000000","message":"ditto","commit_id":"61c9a832134dcf0e9bac7fa60891a73e5d3e4e72"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"4d4217fbd393ee489cf5d5f28632a55511610890","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        :param pool_id: The pool ID to lookup."},{"line_number":194,"context_line":"        :type pool_id: UUID string"},{"line_number":195,"context_line":"        :raises: NotFound"},{"line_number":196,"context_line":"        :returns: A Pool object or None if not found."},{"line_number":197,"context_line":"        \"\"\""},{"line_number":198,"context_line":"        data \u003d self._get_resource(constants.POOLS, pool_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_065a36f2","line":195,"updated":"2019-07-27 09:18:19.000000000","message":"ditto","commit_id":"61c9a832134dcf0e9bac7fa60891a73e5d3e4e72"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"4d4217fbd393ee489cf5d5f28632a55511610890","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        :param healthmonitor_id: The health monitor ID to lookup."},{"line_number":207,"context_line":"        :type healthmonitor_id: UUID string"},{"line_number":208,"context_line":"        :raises: NotFound"},{"line_number":209,"context_line":"        :returns: A HealthMonitor object or None if not found."},{"line_number":210,"context_line":"        \"\"\""},{"line_number":211,"context_line":"        data \u003d self._get_resource(constants.HEALTHMONITORS, healthmonitor_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_265df2e8","line":208,"updated":"2019-07-27 09:18:19.000000000","message":"ditto","commit_id":"61c9a832134dcf0e9bac7fa60891a73e5d3e4e72"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"4d4217fbd393ee489cf5d5f28632a55511610890","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        :param member_id: The member ID to lookup."},{"line_number":220,"context_line":"        :type member_id: UUID string"},{"line_number":221,"context_line":"        :raises: NotFound"},{"line_number":222,"context_line":"        :returns: A Member object or None if not found."},{"line_number":223,"context_line":"        \"\"\""},{"line_number":224,"context_line":"        data \u003d self._get_resource(constants.MEMBERS, member_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_c673be7f","line":221,"updated":"2019-07-27 09:18:19.000000000","message":"ditto","commit_id":"61c9a832134dcf0e9bac7fa60891a73e5d3e4e72"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"4d4217fbd393ee489cf5d5f28632a55511610890","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"        :param l7policy_id: The L7 policy ID to lookup."},{"line_number":233,"context_line":"        :type l7policy_id: UUID string"},{"line_number":234,"context_line":"        :raises: NotFound"},{"line_number":235,"context_line":"        :returns: A L7Policy object or None if not found."},{"line_number":236,"context_line":"        \"\"\""},{"line_number":237,"context_line":"        data \u003d self._get_resource(constants.L7POLICIES, l7policy_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_866dc699","line":234,"updated":"2019-07-27 09:18:19.000000000","message":"ditto","commit_id":"61c9a832134dcf0e9bac7fa60891a73e5d3e4e72"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"4d4217fbd393ee489cf5d5f28632a55511610890","unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        :param l7rule_id: The L7 rule ID to lookup."},{"line_number":246,"context_line":"        :type l7rule_id: UUID string"},{"line_number":247,"context_line":"        :raises: NotFound"},{"line_number":248,"context_line":"        :returns: A L7Rule object or None if not found."},{"line_number":249,"context_line":"        \"\"\""},{"line_number":250,"context_line":"        data \u003d self._get_resource(constants.L7RULES, l7rule_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7faddb67_a6680287","line":247,"updated":"2019-07-27 09:18:19.000000000","message":"ditto","commit_id":"61c9a832134dcf0e9bac7fa60891a73e5d3e4e72"}],"releasenotes/notes/Add-get-methods-to-driver-lib-dae3c217e7ac9e82.yaml":[{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"4d4217fbd393ee489cf5d5f28632a55511610890","unresolved":false,"context_lines":[{"line_number":6,"context_line":"fixes:"},{"line_number":7,"context_line":"  - Improved the driver_lib connecting to the driver-agent sockets."},{"line_number":8,"context_line":"  - |"},{"line_number":9,"context_line":"    Message receiving for the driver_lib will timeout afer no response"},{"line_number":10,"context_line":"    from the driver-agent."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7faddb67_e6c03a7f","line":9,"range":{"start_line":9,"start_character":54,"end_line":9,"end_character":58},"updated":"2019-07-27 09:18:19.000000000","message":"nit: after","commit_id":"61c9a832134dcf0e9bac7fa60891a73e5d3e4e72"}],"requirements.txt":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"9c2bb96266edabfa9d9f1a28d262864430d70627","unresolved":false,"context_lines":[{"line_number":7,"context_line":"oslo.serialization\u003e\u003d2.28.1 # Apache-2.0"},{"line_number":8,"context_line":"pbr!\u003d2.1.0,\u003e\u003d2.0.0 # Apache-2.0"},{"line_number":9,"context_line":"six\u003e\u003d1.10.0 # MIT"},{"line_number":10,"context_line":"tenacity\u003e\u003d3.2.1 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":7,"id":"9fb8cfa7_8ad2b433","line":10,"updated":"2019-06-20 21:18:44.000000000","message":"Can\u0027t use `min` in tenacity.wait_exponential until 5.0.2:\nhttps://github.com/jd/tenacity/commit/8ed5195241cd9b01fdde1e00b41bff53919e9ab3\nEither that needs to be removed, or we need to upgrade.","commit_id":"24f0c78fd3787275cb5b953256133232b1abaf30"}]}
