)]}'
{"doc/source/contributor/guides/providers.rst":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"699c816903225aae8e47002450ee4b6b3eac94a7","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Removes an existing load balancer."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Octavia will pass in the load balancer ID and cascade bollean as parameters."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"The load balancer will be in the ``PENDING_DELETE`` provisioning_status when"},{"line_number":194,"context_line":"it is passed to the driver. The driver will notify Octavia that the delete"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_985d83ee","line":191,"updated":"2018-06-04 20:52:57.000000000","message":"*boolean\n\nBut, I think Kobi fixed this already in the spec update patch right after this one.","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"47543215f74ad7e5f2f106c5032c2548790b66dd","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"Removes an existing load balancer."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Octavia will pass in the load balancer ID and cascade bollean as parameters."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"The load balancer will be in the ``PENDING_DELETE`` provisioning_status when"},{"line_number":194,"context_line":"it is passed to the driver. The driver will notify Octavia that the delete"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_c52eafaa","line":191,"in_reply_to":"5f7c97a3_985d83ee","updated":"2018-06-05 02:32:01.000000000","message":"Yeah, Kobi got it.","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"699c816903225aae8e47002450ee4b6b3eac94a7","unresolved":false,"context_lines":[{"line_number":346,"context_line":"2. The default_tls_container_ref will be expanded and provided to the driver"},{"line_number":347,"context_line":"in pkcs12 format."},{"line_number":348,"context_line":"3. The sni_container_refs will be expanded and provided to the driver in"},{"line_number":349,"context_line":"pkcs12 format."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":".. _Listener objects:"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_d818db1f","line":349,"updated":"2018-06-04 20:52:57.000000000","message":"Did we actually do the work to force everything into PKCS12? I don\u0027t know if that\u0027s actually how we represent anything... I believe we actually represent certs as objects that have been parsed out of PKCS12 and the original format discarded.","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"47543215f74ad7e5f2f106c5032c2548790b66dd","unresolved":false,"context_lines":[{"line_number":346,"context_line":"2. The default_tls_container_ref will be expanded and provided to the driver"},{"line_number":347,"context_line":"in pkcs12 format."},{"line_number":348,"context_line":"3. The sni_container_refs will be expanded and provided to the driver in"},{"line_number":349,"context_line":"pkcs12 format."},{"line_number":350,"context_line":""},{"line_number":351,"context_line":".. _Listener objects:"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_45229fbc","line":349,"in_reply_to":"5f7c97a3_d818db1f","updated":"2018-06-05 02:32:01.000000000","message":"You are correct, I changed this to pass expanded certs.  Fixed.","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"699c816903225aae8e47002450ee4b6b3eac94a7","unresolved":false,"context_lines":[{"line_number":371,"context_line":"| default_pool_id            | string | The ID of the pool used by the      |"},{"line_number":372,"context_line":"|                            |        | listener if no L7 policies match.   |"},{"line_number":373,"context_line":"+----------------------------+--------+-------------------------------------+"},{"line_number":374,"context_line":"| default_tls_container_data | dict   | A `TLS container`_ dict.            |"},{"line_number":375,"context_line":"+----------------------------+--------+-------------------------------------+"},{"line_number":376,"context_line":"| default_tls_container_refs | string | The reference to the secrets        |"},{"line_number":377,"context_line":"|                            |        | container.                          |"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_38e1cffd","line":374,"updated":"2018-06-04 20:52:57.000000000","message":"Ah, so this is what I was remembering, and this is not actually PKCS12 format. We should not say above that we pass PKCS12, because then the driver author would expect to get a single binary blob. This is not that.","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"699c816903225aae8e47002450ee4b6b3eac94a7","unresolved":false,"context_lines":[{"line_number":1676,"context_line":"      :raises: UpdateStatusError"},{"line_number":1677,"context_line":"      :returns: None"},{"line_number":1678,"context_line":"      \"\"\""},{"line_number":1679,"context_line":"      raise NotImplementedError()"},{"line_number":1680,"context_line":""},{"line_number":1681,"context_line":"Update Statistics API"},{"line_number":1682,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_78866716","line":1679,"updated":"2018-06-04 20:52:57.000000000","message":"Why is this shown in the example to be NotImplemeted? This isn\u0027t something each driver implements, it\u0027s something we implement once. Are you just leaving it like this until you actually do have it implemented?","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"47543215f74ad7e5f2f106c5032c2548790b66dd","unresolved":false,"context_lines":[{"line_number":1676,"context_line":"      :raises: UpdateStatusError"},{"line_number":1677,"context_line":"      :returns: None"},{"line_number":1678,"context_line":"      \"\"\""},{"line_number":1679,"context_line":"      raise NotImplementedError()"},{"line_number":1680,"context_line":""},{"line_number":1681,"context_line":"Update Statistics API"},{"line_number":1682,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_a5161355","line":1679,"in_reply_to":"5f7c97a3_78866716","updated":"2018-06-05 02:32:01.000000000","message":"Yeah, this was just \"example code\", so maybe I should just remove that line.","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"699c816903225aae8e47002450ee4b6b3eac94a7","unresolved":false,"context_lines":[{"line_number":1716,"context_line":"      :raises: UpdateStatisticsError"},{"line_number":1717,"context_line":"      :returns: None"},{"line_number":1718,"context_line":"      \"\"\""},{"line_number":1719,"context_line":"      raise NotImplementedError()"},{"line_number":1720,"context_line":""},{"line_number":1721,"context_line":"Get Resource Support"},{"line_number":1722,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_18a09391","line":1719,"updated":"2018-06-04 20:52:57.000000000","message":"same","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"47543215f74ad7e5f2f106c5032c2548790b66dd","unresolved":false,"context_lines":[{"line_number":1716,"context_line":"      :raises: UpdateStatisticsError"},{"line_number":1717,"context_line":"      :returns: None"},{"line_number":1718,"context_line":"      \"\"\""},{"line_number":1719,"context_line":"      raise NotImplementedError()"},{"line_number":1720,"context_line":""},{"line_number":1721,"context_line":"Get Resource Support"},{"line_number":1722,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_450b7f2a","line":1719,"in_reply_to":"5f7c97a3_18a09391","updated":"2018-06-05 02:32:01.000000000","message":"Done","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"699c816903225aae8e47002450ee4b6b3eac94a7","unresolved":false,"context_lines":[{"line_number":1725,"context_line":"As an example of its use, a provider driver may need to sync with Octavia,"},{"line_number":1726,"context_line":"and therefore need to fetch all of the Octavia resources it is responsible"},{"line_number":1727,"context_line":"for managing. Provider drivers can use the existing Octavia API to get these"},{"line_number":1728,"context_line":"resources. See the `Octavia API Reference \u003chttps://developer.openstack.org/api-ref/load-balancer/v2/index.html\u003e`_."},{"line_number":1729,"context_line":""},{"line_number":1730,"context_line":"API Exception Model"},{"line_number":1731,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_981103b3","line":1728,"updated":"2018-06-04 20:52:57.000000000","message":"So conceptually, I\u0027m having a hard time visualizing exactly how these drivers are running. Are they running inside our api-worker process as a driver, and therefore can call \"API\" methods directly in code like the `update_loadbalancer_status` method above, or are they running somewhere else and need to communicate with us via REST?\nOur messaging seems somewhat mixed, as this says \"use a REST API\" (which will involve accounts/auth and other such stuff, and wouldn\u0027t make sense if we\u0027re running inside the api-worker process) for getting resource data, but we don\u0027t mention anything about REST (so I assume that must be done via a function, while running in the api process) for the status updates?","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"47543215f74ad7e5f2f106c5032c2548790b66dd","unresolved":false,"context_lines":[{"line_number":1725,"context_line":"As an example of its use, a provider driver may need to sync with Octavia,"},{"line_number":1726,"context_line":"and therefore need to fetch all of the Octavia resources it is responsible"},{"line_number":1727,"context_line":"for managing. Provider drivers can use the existing Octavia API to get these"},{"line_number":1728,"context_line":"resources. See the `Octavia API Reference \u003chttps://developer.openstack.org/api-ref/load-balancer/v2/index.html\u003e`_."},{"line_number":1729,"context_line":""},{"line_number":1730,"context_line":"API Exception Model"},{"line_number":1731,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f7c97a3_0061f5d3","line":1728,"in_reply_to":"5f7c97a3_981103b3","updated":"2018-06-05 02:32:01.000000000","message":"Yeah, well, we merged the spec this way.... (I pulled it over)\n\nSo, yes, the above methods are in-process in the API process. That said, the intent here is that drivers should not call into Octavia code or access the database directly. If, for some reason, a driver needs access to more information about the load balancer, they need to query via the API to collect that additional information.\n\nIdeally, this callback library will go away and all updates will occur over an endpoint.","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"}],"etc/octavia.conf":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"699c816903225aae8e47002450ee4b6b3eac94a7","unresolved":false,"context_lines":[{"line_number":46,"context_line":"# Dictionary of enabled provider driver names and descriptions"},{"line_number":47,"context_line":"# enabled_provider_drivers \u003d {\u0027amphora\u0027: \u0027The Octavia Amphora driver.\u0027,"},{"line_number":48,"context_line":"#                             \u0027octavia\u0027: \u0027Deprecated alias of the Octavia \u0027"},{"line_number":49,"context_line":"#                                        \u0027Amphora driver.\u0027}"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"# Default provider driver"},{"line_number":52,"context_line":"# default_provider_driver \u003d amphora"}],"source_content_type":"text/plain","patch_set":16,"id":"5f7c97a3_d81e9bba","line":49,"updated":"2018-06-04 20:52:57.000000000","message":"This \"python in config\" thing looks a little odd / out of place to me... But, not sure what alternative there would be.","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"47543215f74ad7e5f2f106c5032c2548790b66dd","unresolved":false,"context_lines":[{"line_number":46,"context_line":"# Dictionary of enabled provider driver names and descriptions"},{"line_number":47,"context_line":"# enabled_provider_drivers \u003d {\u0027amphora\u0027: \u0027The Octavia Amphora driver.\u0027,"},{"line_number":48,"context_line":"#                             \u0027octavia\u0027: \u0027Deprecated alias of the Octavia \u0027"},{"line_number":49,"context_line":"#                                        \u0027Amphora driver.\u0027}"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"# Default provider driver"},{"line_number":52,"context_line":"# default_provider_driver \u003d amphora"}],"source_content_type":"text/plain","patch_set":16,"id":"5f7c97a3_45afff2a","line":49,"in_reply_to":"5f7c97a3_d81e9bba","updated":"2018-06-05 02:32:01.000000000","message":"Well, this is the format for \"dict\" type config entries.\nI think the descriptions are valuable, so, dict type it is.","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"}],"octavia/api/drivers/utils.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"699c816903225aae8e47002450ee4b6b3eac94a7","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        provider_pool \u003d db_pool_to_provider_pool(db_listener.default_pool)"},{"line_number":127,"context_line":"        new_listener_dict[\u0027default_pool_id\u0027] \u003d provider_pool.pool_id"},{"line_number":128,"context_line":"        new_listener_dict[\u0027default_pool\u0027] \u003d provider_pool"},{"line_number":129,"context_line":"    if \u0027l7policies\u0027 in new_listener_dict and new_listener_dict[\u0027l7policies\u0027]:"},{"line_number":130,"context_line":"        new_listener_dict[\u0027l7policies\u0027] \u003d ("},{"line_number":131,"context_line":"            db_l7policies_to_provider_l7policies(db_listener.l7policies))"},{"line_number":132,"context_line":"    provider_listener \u003d driver_dm.Listener.from_dict(new_listener_dict)"}],"source_content_type":"text/x-python","patch_set":16,"id":"5f7c97a3_58ce0b2e","line":129,"updated":"2018-06-04 20:52:57.000000000","message":"if new_listener_dict.get(\u0027l7policies\u0027, None):","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"47543215f74ad7e5f2f106c5032c2548790b66dd","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        provider_pool \u003d db_pool_to_provider_pool(db_listener.default_pool)"},{"line_number":127,"context_line":"        new_listener_dict[\u0027default_pool_id\u0027] \u003d provider_pool.pool_id"},{"line_number":128,"context_line":"        new_listener_dict[\u0027default_pool\u0027] \u003d provider_pool"},{"line_number":129,"context_line":"    if \u0027l7policies\u0027 in new_listener_dict and new_listener_dict[\u0027l7policies\u0027]:"},{"line_number":130,"context_line":"        new_listener_dict[\u0027l7policies\u0027] \u003d ("},{"line_number":131,"context_line":"            db_l7policies_to_provider_l7policies(db_listener.l7policies))"},{"line_number":132,"context_line":"    provider_listener \u003d driver_dm.Listener.from_dict(new_listener_dict)"}],"source_content_type":"text/x-python","patch_set":16,"id":"5f7c97a3_c549cf8e","line":129,"in_reply_to":"5f7c97a3_58ce0b2e","updated":"2018-06-05 02:32:01.000000000","message":"Done","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"699c816903225aae8e47002450ee4b6b3eac94a7","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        provider_healthmonitor \u003d db_HM_to_provider_HM(db_pool.health_monitor)"},{"line_number":221,"context_line":"        new_pool_dict[\u0027healthmonitor\u0027] \u003d provider_healthmonitor"},{"line_number":222,"context_line":"    # Don\u0027t leave a \u0027members\u0027 None here, we want it to pass through to Unset"},{"line_number":223,"context_line":"    if \u0027members\u0027 in new_pool_dict and new_pool_dict[\u0027members\u0027]:"},{"line_number":224,"context_line":"        del new_pool_dict[\u0027members\u0027]"},{"line_number":225,"context_line":"    if db_pool.members:"},{"line_number":226,"context_line":"        provider_members \u003d db_members_to_provider_members(db_pool.members)"}],"source_content_type":"text/x-python","patch_set":16,"id":"5f7c97a3_d8e1bb9d","line":223,"updated":"2018-06-04 20:52:57.000000000","message":"if new_pool_dict.get(\u0027members\u0027, None):","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"47543215f74ad7e5f2f106c5032c2548790b66dd","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        provider_healthmonitor \u003d db_HM_to_provider_HM(db_pool.health_monitor)"},{"line_number":221,"context_line":"        new_pool_dict[\u0027healthmonitor\u0027] \u003d provider_healthmonitor"},{"line_number":222,"context_line":"    # Don\u0027t leave a \u0027members\u0027 None here, we want it to pass through to Unset"},{"line_number":223,"context_line":"    if \u0027members\u0027 in new_pool_dict and new_pool_dict[\u0027members\u0027]:"},{"line_number":224,"context_line":"        del new_pool_dict[\u0027members\u0027]"},{"line_number":225,"context_line":"    if db_pool.members:"},{"line_number":226,"context_line":"        provider_members \u003d db_members_to_provider_members(db_pool.members)"}],"source_content_type":"text/x-python","patch_set":16,"id":"5f7c97a3_257be3be","line":223,"in_reply_to":"5f7c97a3_d8e1bb9d","updated":"2018-06-05 02:32:01.000000000","message":"Done","commit_id":"e2361f0c8745ebb2967fc265138adf118bfb0957"}]}
