)]}'
{"specs/pike/converge-api-extensions-across-cluster.rst":[{"author":{"_account_id":17120,"name":"Manjeet Singh Bhatia","email":"manjeet.s.bhatia@intel.com","username":"manjeets"},"change_message_id":"aafcaf6b5250643ddc8d96af5fb3ba659896d6c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"bff0334d_7b5bf886","updated":"2017-04-05 20:39:16.000000000","message":"I would suggest replacing `supported extensions` with `enabled extensions` or it may be just me perceiving supported differently from enabled, at any time all we care about are the enabled extensions for neutron on a particular controller.","commit_id":"43af5b3fc502085fa7d011c630dabc920af1cb0e"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"d8955592d362de99449e842779f1a9cfa757ff23","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Since Ocata, we can upgrade controllers in rolling mode, where cluster is"},{"line_number":18,"context_line":"comprised of different major versions of neutron-server (N and N+1). In this"},{"line_number":19,"context_line":"situation, API requests issued by users may land any of controllers, and if"},{"line_number":20,"context_line":"controllers expose different extensions, cloud aware app behaviour may depend"},{"line_number":21,"context_line":"on the order of controllers picked by round robin load balancer."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Even if an affinity aware load balancer is used, same cloud aware app run may"},{"line_number":24,"context_line":"depend on which controller the initial request fetching the list of supported"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfeb2761_c1a3d99d","line":21,"range":{"start_line":18,"start_character":69,"end_line":21,"end_character":64},"updated":"2017-04-03 21:21:03.000000000","message":"IMHO, this can be simplified like:\n\nIn that situation, API requests issued by users may land any of controllers depending on the algorithm of the load balancer.","commit_id":"43af5b3fc502085fa7d011c630dabc920af1cb0e"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"d8955592d362de99449e842779f1a9cfa757ff23","unresolved":false,"context_lines":[{"line_number":24,"context_line":"depend on which controller the initial request fetching the list of supported"},{"line_number":25,"context_line":"extensions via /extensions/ API will land."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Another issue with the current behaviour is when clients hitting a controller"},{"line_number":28,"context_line":"of newer version create / modify resources using new features, introducing data"},{"line_number":29,"context_line":"in database that may not be easily or safely interpreted by older controllers."},{"line_number":30,"context_line":"It is exaggerated by the fact that Neutron API is consumed programmatically,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfeb2761_412c6901","line":27,"range":{"start_line":27,"start_character":44,"end_line":27,"end_character":66},"updated":"2017-04-03 21:21:03.000000000","message":"when clients are hitting ...","commit_id":"43af5b3fc502085fa7d011c630dabc920af1cb0e"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"d8955592d362de99449e842779f1a9cfa757ff23","unresolved":false,"context_lines":[{"line_number":20,"context_line":"controllers expose different extensions, cloud aware app behaviour may depend"},{"line_number":21,"context_line":"on the order of controllers picked by round robin load balancer."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Even if an affinity aware load balancer is used, same cloud aware app run may"},{"line_number":24,"context_line":"depend on which controller the initial request fetching the list of supported"},{"line_number":25,"context_line":"extensions via /extensions/ API will land."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Another issue with the current behaviour is when clients hitting a controller"},{"line_number":28,"context_line":"of newer version create / modify resources using new features, introducing data"},{"line_number":29,"context_line":"in database that may not be easily or safely interpreted by older controllers."},{"line_number":30,"context_line":"It is exaggerated by the fact that Neutron API is consumed programmatically,"},{"line_number":31,"context_line":"including by other components like Nova, which makes it impossible to hold on"},{"line_number":32,"context_line":"requests using new API for the time while upgrade is happening."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"The proposal here is to introduce a concept of cluster awareness into"},{"line_number":35,"context_line":"controller service, where neutron-servers will know about all other controllers"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfeb2761_97f4f3d0","line":32,"range":{"start_line":23,"start_character":0,"end_line":32,"end_character":63},"updated":"2017-04-03 21:21:03.000000000","message":"these can be listed as issues \n\n* Load balancer non-deterministic controller version issue: ... \n* Database creation resources issue: ...","commit_id":"43af5b3fc502085fa7d011c630dabc920af1cb0e"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"d8955592d362de99449e842779f1a9cfa757ff23","unresolved":false,"context_lines":[{"line_number":36,"context_line":"and their lists of supported extensions, and will avoid exposing anything that"},{"line_number":37,"context_line":"is not supported by all other controllers. In effect, during upgrade, newer"},{"line_number":38,"context_line":"controllers will not advertise support for newly added extensions until all"},{"line_number":39,"context_line":"controllers are at the newer version. This will make sure that no requests"},{"line_number":40,"context_line":"utilizing new features and producing hard to interpret data in database will be"},{"line_number":41,"context_line":"served until cluster of neutron-servers is fully upgraded."},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfeb2761_57ec2bf2","line":39,"range":{"start_line":39,"start_character":19,"end_line":39,"end_character":36},"updated":"2017-04-03 21:21:03.000000000","message":"the same newer version?","commit_id":"43af5b3fc502085fa7d011c630dabc920af1cb0e"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"d8955592d362de99449e842779f1a9cfa757ff23","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* Supported extension. This is an extension that a Neutron implementation is"},{"line_number":51,"context_line":"  technically capable of serving."},{"line_number":52,"context_line":"* Advertised extension. This is an extension that a Neutron implementation will"},{"line_number":53,"context_line":"  advertise via /extensions/ API. In non-upgrade scenario, all supported"},{"line_number":54,"context_line":"  extensions will be advertised. In upgrade scenario, some of supported"},{"line_number":55,"context_line":"  extensions may be not advertised (but not vice versa)."}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfeb2761_72505dd5","line":52,"range":{"start_line":52,"start_character":2,"end_line":52,"end_character":12},"updated":"2017-04-03 21:21:03.000000000","message":"Personally, I have some preference for enabling/disabling concept instead of advertising capabilities, even when this is not referring to any manipulation of config options","commit_id":"43af5b3fc502085fa7d011c630dabc920af1cb0e"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"d8955592d362de99449e842779f1a9cfa757ff23","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Implementation"},{"line_number":59,"context_line":"--------------"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"To implement the proposal, we will introduce a new servers table similar to"},{"line_number":62,"context_line":"agents table that will contain information about all controllers, and will be"},{"line_number":63,"context_line":"populated by them on startup. The information in the table will include list of"},{"line_number":64,"context_line":"supported extensions for each controller."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"On startup, neutron-server will:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfeb2761_97ad1333","line":63,"range":{"start_line":61,"start_character":27,"end_line":63,"end_character":28},"updated":"2017-04-03 21:21:03.000000000","message":"I\u0027m ok with this as long as the controller registers itself and its status are updated with certain frequency without any external intervention.","commit_id":"43af5b3fc502085fa7d011c630dabc920af1cb0e"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"0cdb66c0d7afd11c5ce3e87710a384c2744f271b","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"* populate the table with information about itself (including the list of"},{"line_number":69,"context_line":"  supported extensions as currently calculated for /extensions/ API)."},{"line_number":70,"context_line":"* inspect all the records in the table, calculating the list of extensions to"},{"line_number":71,"context_line":"  advertise."},{"line_number":72,"context_line":"* load and expose via /extensions API those extensions that should be"},{"line_number":73,"context_line":"  advertised."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9ff52f3f_0f525114","line":70,"updated":"2017-04-13 19:29:31.000000000","message":"I\u0027m assuming removing a controller node will either be documented, or \"just work\" correct?","commit_id":"43af5b3fc502085fa7d011c630dabc920af1cb0e"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"0cdb66c0d7afd11c5ce3e87710a384c2744f271b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"Example of calculation: let\u0027s say there is a server1 with the following list of"},{"line_number":84,"context_line":"supported extensions: [A, B, C, D], and server2 with [A, B, C, D, E]. In that"},{"line_number":85,"context_line":"case, when server2 is started, it will calculate the common subset which is [A,"},{"line_number":86,"context_line":"B, C, D], that will be loaded / exposed in API. The E extension will need to"},{"line_number":87,"context_line":"wait until server1 is upgraded and gets [A, B, C, D, E] too, at which point it"},{"line_number":88,"context_line":"can start advertising the whole [A, B, C, D, E] list."},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9ff52f3f_6407c41e","line":86,"range":{"start_line":86,"start_character":10,"end_line":86,"end_character":46},"updated":"2017-04-13 19:29:31.000000000","message":"IIUC, existing API extensions can modify functionality + data-model during upgrade, for example [1]. With that in mind:\n- How are the data model vs backing code inconsistencies handled in this case... Is this where OVO comes into play?\n- Doesn\u0027t this mean users may have an inconsistent experience during upgrade. For example extension A adds new attributes to its API/data-model during upgrade. Extension A is still advertised (since it\u0027s an existing ext), but the new attrs will only be \"available\" when hitting a service thats already upgraded.\n\n\n[1] Ie8b8bd650be30dbd075b4b09a1cb5bb8b47bc165","commit_id":"43af5b3fc502085fa7d011c630dabc920af1cb0e"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"d8955592d362de99449e842779f1a9cfa757ff23","unresolved":false,"context_lines":[{"line_number":118,"context_line":"new extensions for controllers using newer versions until operators opt in them"},{"line_number":119,"context_line":"modifying configuration files, or till the next upgrade that flips the default"},{"line_number":120,"context_line":"value for the new guarding option to True happens, at which point we should not"},{"line_number":121,"context_line":"have any controllers running older releases anyway. The issue with this"},{"line_number":122,"context_line":"alternative is that this complicates configuration for operators that want to"},{"line_number":123,"context_line":"opt in new features, and will complicate deployment logic. The benefit here"},{"line_number":124,"context_line":"would be avoiding self-awareness complexity proposed here."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"As a variant of the latest alternative, we could introduce a global switch that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfeb2761_f2b90de9","line":123,"range":{"start_line":121,"start_character":52,"end_line":123,"end_character":57},"updated":"2017-04-03 21:21:03.000000000","message":"But maybe can be addressed using Centralized configuration tool[1].\n\n[1] http://lists.openstack.org/pipermail/openstack-dev/2014-January/023791.html","commit_id":"43af5b3fc502085fa7d011c630dabc920af1cb0e"}]}
