)]}'
{"specs/liberty/approved/servicegroup-api-control-plane.rst":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"974eb02f831354893ec328e843c74e75f4e9e959","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"* There is a tight coupling between nova and the nova.services table."},{"line_number":30,"context_line":"Before making a decision about liveliness of a service running on a"},{"line_number":31,"context_line":"paritular host nova refers the services table which is considered"},{"line_number":32,"context_line":"as a source fo truth."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"* At present there are 3 interfaces, namely admin interface(nova-manage),"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_e4481dce","line":31,"updated":"2015-06-10 19:52:57.000000000","message":"sp: paritular -\u003e particular","commit_id":"ab6b0ac0d8c17a28c205dbe01761787473a77606"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"bab971a8c7117d40fbefd3f31dda3eefb9ad32e0","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"* There is a tight coupling between nova and the nova.services table."},{"line_number":30,"context_line":"Before making a decision about liveliness of a service running on a"},{"line_number":31,"context_line":"paritular host nova refers the services table which is considered"},{"line_number":32,"context_line":"as a source fo truth."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"* At present there are 3 interfaces, namely admin interface(nova-manage),"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_dff04acb","line":31,"in_reply_to":"3afb71cf_e4481dce","updated":"2015-06-10 20:13:15.000000000","message":"Done","commit_id":"ab6b0ac0d8c17a28c205dbe01761787473a77606"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"0b902430cd23df0c4e235c6d653f417a073b59e0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"liveliness but the admin interface(nova-mange) and the extension"},{"line_number":61,"context_line":"interface which act on nova.services table, which they consider"},{"line_number":62,"context_line":"as the source of truth for services information, can lead to"},{"line_number":63,"context_line":"severe data inconsitencies."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* An operator uses admin interface, nova-manage service disable, to"},{"line_number":66,"context_line":"mark a service down. Zookeeper won\u0027t be aware of this change and"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_44e931b6","line":63,"updated":"2015-06-10 19:51:03.000000000","message":"sp: inconsitencies -\u003e inconsistencies","commit_id":"ab6b0ac0d8c17a28c205dbe01761787473a77606"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"bab971a8c7117d40fbefd3f31dda3eefb9ad32e0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"liveliness but the admin interface(nova-mange) and the extension"},{"line_number":61,"context_line":"interface which act on nova.services table, which they consider"},{"line_number":62,"context_line":"as the source of truth for services information, can lead to"},{"line_number":63,"context_line":"severe data inconsitencies."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* An operator uses admin interface, nova-manage service disable, to"},{"line_number":66,"context_line":"mark a service down. Zookeeper won\u0027t be aware of this change and"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_9fa412ba","line":63,"in_reply_to":"3afb71cf_44e931b6","updated":"2015-06-10 20:13:15.000000000","message":"Done","commit_id":"ab6b0ac0d8c17a28c205dbe01761787473a77606"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"0b902430cd23df0c4e235c6d653f417a073b59e0","unresolved":false,"context_lines":[{"line_number":70,"context_line":"db query to get the list of services. This is inconsistent with the"},{"line_number":71,"context_line":"servicegroup driver API \u0027get_all\u0027 view on what is enabled/diabled."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* An operator using Nova service delte(REST api) seems to follow"},{"line_number":74,"context_line":"the similar broken pattern mentioned above and only works with"},{"line_number":75,"context_line":"database as the underlying backend. This implementation is also"},{"line_number":76,"context_line":"inconsistent with servigroup driver API \u0027get_all\u0027 view of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_04f7b98b","line":73,"updated":"2015-06-10 19:51:03.000000000","message":"sp: delte -\u003e delete","commit_id":"ab6b0ac0d8c17a28c205dbe01761787473a77606"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"bab971a8c7117d40fbefd3f31dda3eefb9ad32e0","unresolved":false,"context_lines":[{"line_number":70,"context_line":"db query to get the list of services. This is inconsistent with the"},{"line_number":71,"context_line":"servicegroup driver API \u0027get_all\u0027 view on what is enabled/diabled."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* An operator using Nova service delte(REST api) seems to follow"},{"line_number":74,"context_line":"the similar broken pattern mentioned above and only works with"},{"line_number":75,"context_line":"database as the underlying backend. This implementation is also"},{"line_number":76,"context_line":"inconsistent with servigroup driver API \u0027get_all\u0027 view of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_7fa716bd","line":73,"in_reply_to":"3afb71cf_04f7b98b","updated":"2015-06-10 20:13:15.000000000","message":"Done","commit_id":"ab6b0ac0d8c17a28c205dbe01761787473a77606"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"974eb02f831354893ec328e843c74e75f4e9e959","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Data model impact"},{"line_number":103,"context_line":"-----------------"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"None"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_e41ffdb4","line":104,"updated":"2015-06-10 19:52:57.000000000","message":"Soooo, anything for this section, I would expect maybe something?","commit_id":"ab6b0ac0d8c17a28c205dbe01761787473a77606"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"bab971a8c7117d40fbefd3f31dda3eefb9ad32e0","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Data model impact"},{"line_number":103,"context_line":"-----------------"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"None"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_5f81faf9","line":104,"in_reply_to":"3afb71cf_e41ffdb4","updated":"2015-06-10 20:13:15.000000000","message":"The Data model will remain same. I don\u0027t expect any change here.","commit_id":"ab6b0ac0d8c17a28c205dbe01761787473a77606"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"974eb02f831354893ec328e843c74e75f4e9e959","unresolved":false,"context_lines":[{"line_number":160,"context_line":"  vilobhmm"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Other contributors:"},{"line_number":163,"context_line":"  None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Work Items"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_c471a10d","line":163,"updated":"2015-06-10 19:52:57.000000000","message":"Maybe jaypipes?","commit_id":"ab6b0ac0d8c17a28c205dbe01761787473a77606"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"bab971a8c7117d40fbefd3f31dda3eefb9ad32e0","unresolved":false,"context_lines":[{"line_number":160,"context_line":"  vilobhmm"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Other contributors:"},{"line_number":163,"context_line":"  None"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"Work Items"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_1fa702ab","line":163,"in_reply_to":"3afb71cf_c471a10d","updated":"2015-06-10 20:13:15.000000000","message":"jaypipes, harlowja","commit_id":"ab6b0ac0d8c17a28c205dbe01761787473a77606"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"20857195fcf2a4bd12dff51f06dcf031c476cba7","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* Unit test will be added if needed."},{"line_number":189,"context_line":"* Exsisting unit tests will be updated to make sure the services"},{"line_number":190,"context_line":"  data is accessed/updated using the servicegroup API."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_6459cd8d","line":190,"updated":"2015-06-10 19:53:31.000000000","message":"Sp: Exsisting -\u003e Existing","commit_id":"ab6b0ac0d8c17a28c205dbe01761787473a77606"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"bab971a8c7117d40fbefd3f31dda3eefb9ad32e0","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* Unit test will be added if needed."},{"line_number":189,"context_line":"* Exsisting unit tests will be updated to make sure the services"},{"line_number":190,"context_line":"  data is accessed/updated using the servicegroup API."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3afb71cf_1fcee262","line":190,"in_reply_to":"3afb71cf_6459cd8d","updated":"2015-06-10 20:13:15.000000000","message":"Done","commit_id":"ab6b0ac0d8c17a28c205dbe01761787473a77606"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"036e35ca3f580168e3435b7201719bd09a2d9975","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"1. There is a tight coupling between nova and the nova.services"},{"line_number":30,"context_line":"table. Before making a decision about liveliness of a service running"},{"line_number":31,"context_line":"on a particular host nova refers the services table which is considered"},{"line_number":32,"context_line":"as a source fo truth."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"2. At present there are 3 interfaces, namely admin interface(nova-manage),"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_da0a9125","line":31,"updated":"2015-06-11 00:24:35.000000000","message":"\u0027nova refers the\u0027 -\u003e \u0027nova refers to the\u0027","commit_id":"4283a5edff687c90a684f0f263e5c5ec55ded9dc"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"4c4746b7ef43702dbb5a6601b22c70711bc64939","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"1. There is a tight coupling between nova and the nova.services"},{"line_number":30,"context_line":"table. Before making a decision about liveliness of a service running"},{"line_number":31,"context_line":"on a particular host nova refers the services table which is considered"},{"line_number":32,"context_line":"as a source fo truth."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"2. At present there are 3 interfaces, namely admin interface(nova-manage),"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_81d00df9","line":31,"in_reply_to":"3afb71cf_da0a9125","updated":"2015-06-11 17:10:41.000000000","message":"Done","commit_id":"4283a5edff687c90a684f0f263e5c5ec55ded9dc"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"036e35ca3f580168e3435b7201719bd09a2d9975","unresolved":false,"context_lines":[{"line_number":73,"context_line":"3. An operator using Nova service delete(REST api) seems to follow"},{"line_number":74,"context_line":"the similar broken pattern mentioned above and only works with"},{"line_number":75,"context_line":"database as the underlying backend. This implementation is also"},{"line_number":76,"context_line":"inconsistent with servigroup driver API \u0027get_all\u0027 view of"},{"line_number":77,"context_line":"services data."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_f53d5ec4","line":76,"updated":"2015-06-11 00:24:35.000000000","message":"sp: \u0027servigroup\u0027 -\u003e \u0027servicegroup\u0027","commit_id":"4283a5edff687c90a684f0f263e5c5ec55ded9dc"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"4c4746b7ef43702dbb5a6601b22c70711bc64939","unresolved":false,"context_lines":[{"line_number":73,"context_line":"3. An operator using Nova service delete(REST api) seems to follow"},{"line_number":74,"context_line":"the similar broken pattern mentioned above and only works with"},{"line_number":75,"context_line":"database as the underlying backend. This implementation is also"},{"line_number":76,"context_line":"inconsistent with servigroup driver API \u0027get_all\u0027 view of"},{"line_number":77,"context_line":"services data."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_61cd115d","line":76,"in_reply_to":"3afb71cf_f53d5ec4","updated":"2015-06-11 17:10:41.000000000","message":"Done","commit_id":"4283a5edff687c90a684f0f263e5c5ec55ded9dc"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"036e35ca3f580168e3435b7201719bd09a2d9975","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"- http://lists.openstack.org/pipermail/openstack-dev/2015-May/063602.html"},{"line_number":203,"context_line":"- https://review.openstack.org/#/c/138607"},{"line_number":204,"context_line":"- https://github.com/openstack/nova/blob/master/nova/api/openst\\"},{"line_number":205,"context_line":"  ack/compute/contrib/services.py#L44"},{"line_number":206,"context_line":"- https://github.com/openstack/nova/blob/master/nova/api/openst\\"},{"line_number":207,"context_line":"  ack/compute/contrib/hypervisors.py#L98"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_15591a35","line":204,"updated":"2015-06-11 00:24:35.000000000","message":"Perhaps use a stable tag instead of \u0027master\u0027 for these links, so that if master changes, these lines numbers will still point to the right place?","commit_id":"4283a5edff687c90a684f0f263e5c5ec55ded9dc"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"4c4746b7ef43702dbb5a6601b22c70711bc64939","unresolved":false,"context_lines":[{"line_number":201,"context_line":""},{"line_number":202,"context_line":"- http://lists.openstack.org/pipermail/openstack-dev/2015-May/063602.html"},{"line_number":203,"context_line":"- https://review.openstack.org/#/c/138607"},{"line_number":204,"context_line":"- https://github.com/openstack/nova/blob/master/nova/api/openst\\"},{"line_number":205,"context_line":"  ack/compute/contrib/services.py#L44"},{"line_number":206,"context_line":"- https://github.com/openstack/nova/blob/master/nova/api/openst\\"},{"line_number":207,"context_line":"  ack/compute/contrib/hypervisors.py#L98"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3afb71cf_411fb5b7","line":204,"in_reply_to":"3afb71cf_15591a35","updated":"2015-06-11 17:10:41.000000000","message":"Added all the links below as part of the ML thread [1] so it can be a common place for all the references. And also helps to keep the spec small :)\n\n[1] http://lists.openstack.org/pipermail/openstack-dev/2015-May/063602.html","commit_id":"4283a5edff687c90a684f0f263e5c5ec55ded9dc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"aecfe05b60d520cea1dacb10d7eb54bc10dfbe72","unresolved":false,"context_lines":[{"line_number":32,"context_line":"considered as a source of truth."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"2. At present there are 3 interfaces, namely admin interface(nova-manage),"},{"line_number":35,"context_line":"extensions, servicegroup API layer, from which the service information"},{"line_number":36,"context_line":"is either accessed or modified."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"3. Database servicegroup driver is the primary driver used by most of"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_3662b617","line":35,"updated":"2015-06-11 19:41:19.000000000","message":"There are no longer extensions in the Nova API, we only have resources.","commit_id":"2ef5d95499d5a532bd5ada368a95c7385555cc74"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"724ef0c55fa20f27690440028c0c0be8f5ec8517","unresolved":false,"context_lines":[{"line_number":32,"context_line":"considered as a source of truth."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"2. At present there are 3 interfaces, namely admin interface(nova-manage),"},{"line_number":35,"context_line":"extensions, servicegroup API layer, from which the service information"},{"line_number":36,"context_line":"is either accessed or modified."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"3. Database servicegroup driver is the primary driver used by most of"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af86dd1_72dba6ee","line":35,"in_reply_to":"3afb71cf_3662b617","updated":"2015-06-12 05:30:15.000000000","message":"Ok","commit_id":"2ef5d95499d5a532bd5ada368a95c7385555cc74"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"aecfe05b60d520cea1dacb10d7eb54bc10dfbe72","unresolved":false,"context_lines":[{"line_number":48,"context_line":"database queries through the sqlalchemy layer. After the implementation"},{"line_number":49,"context_line":"of the objects layer also the data is fetched from database. Just"},{"line_number":50,"context_line":"the means to access data has changed not the location where the"},{"line_number":51,"context_line":"services data is placed."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_19036d0f","line":51,"updated":"2015-06-11 19:41:19.000000000","message":"I think the problem is that we don\u0027t consider what a service is. From my perspective, that\u0027s just only corresponding to a SPOF for any message sent to a compute node, whether it\u0027s distributed or not.\n\nDecoupling the service information (eg. the list of references to the oslo.messaging Servers) and their status in a separate datastore is fine by me.","commit_id":"2ef5d95499d5a532bd5ada368a95c7385555cc74"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"724ef0c55fa20f27690440028c0c0be8f5ec8517","unresolved":false,"context_lines":[{"line_number":48,"context_line":"database queries through the sqlalchemy layer. After the implementation"},{"line_number":49,"context_line":"of the objects layer also the data is fetched from database. Just"},{"line_number":50,"context_line":"the means to access data has changed not the location where the"},{"line_number":51,"context_line":"services data is placed."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af86dd1_72028640","line":51,"in_reply_to":"3afb71cf_19036d0f","updated":"2015-06-12 05:30:15.000000000","message":"Ok. So looks like we are on same page here.","commit_id":"2ef5d95499d5a532bd5ada368a95c7385555cc74"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"aecfe05b60d520cea1dacb10d7eb54bc10dfbe72","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Project Priority"},{"line_number":81,"context_line":"----------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This fits under the \u0027Scheduler\u0027 liberty priorities."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_b0d46dbd","line":83,"updated":"2015-06-11 19:41:19.000000000","message":"Uh, I think it\u0027s probably something good as a priority, but I think you should discuss with the scheduler subteam to explain it before calling it.","commit_id":"2ef5d95499d5a532bd5ada368a95c7385555cc74"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"724ef0c55fa20f27690440028c0c0be8f5ec8517","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Project Priority"},{"line_number":81,"context_line":"----------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This fits under the \u0027Scheduler\u0027 liberty priorities."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af86dd1_32aace1a","line":83,"in_reply_to":"3afb71cf_b0d46dbd","updated":"2015-06-12 05:30:15.000000000","message":"Sure. Can join the next nova meeting and convey it. Although I would like to move quick on this one and just for justifying this statement won\u0027t like to wait that long. If you have a better way that will help me to proceed ahead quickly; then I am open to ideas.","commit_id":"2ef5d95499d5a532bd5ada368a95c7385555cc74"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"aecfe05b60d520cea1dacb10d7eb54bc10dfbe72","unresolved":false,"context_lines":[{"line_number":87,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"1. Proposed change is to enforce all the changes to services"},{"line_number":90,"context_line":"data go through the servicegroup APIs."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"2. Fix all places in the code which access/modify the services"},{"line_number":93,"context_line":"data by querying/modifying nova.services and there are many"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_595e8513","line":90,"updated":"2015-06-11 19:41:19.000000000","message":"IMHO the servicegroup API should just be a proxy to any datastore fetching the data from the reference stored in the services table. \n\nWhether the \"status\" field should be in the services table or stored in the datastore is not really a problem, since the API would make sure that the view is consistent.\n\nThat\u0027s from my perspective the first thing to do : make sure the SG API provide that level of abstraction, and then, I fully agree with you, use that SG API for accessing the service status.","commit_id":"2ef5d95499d5a532bd5ada368a95c7385555cc74"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"724ef0c55fa20f27690440028c0c0be8f5ec8517","unresolved":false,"context_lines":[{"line_number":87,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"1. Proposed change is to enforce all the changes to services"},{"line_number":90,"context_line":"data go through the servicegroup APIs."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"2. Fix all places in the code which access/modify the services"},{"line_number":93,"context_line":"data by querying/modifying nova.services and there are many"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1af86dd1_32588e56","line":90,"in_reply_to":"3afb71cf_595e8513","updated":"2015-06-12 05:30:15.000000000","message":"Sure. Again looks like we are on same page. Will add more details about the way abstraction will be implemented.","commit_id":"2ef5d95499d5a532bd5ada368a95c7385555cc74"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"fa032d30152d08375549e163bf2b8b75a864abad","unresolved":false,"context_lines":[{"line_number":100,"context_line":"can change the state of the service using nova-manage, which will"},{"line_number":101,"context_line":"eventually go through servicegroup API update()."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"4. If the services information is stored in Zookeeper, all the"},{"line_number":104,"context_line":"interfaces will go through servicegroup API. Znode will"},{"line_number":105,"context_line":"maintain the representational state about the service. In this"},{"line_number":106,"context_line":"scenario the nova.services table will just be a standalone entity."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_fbb3e508","line":103,"updated":"2015-06-12 09:34:13.000000000","message":"I wouldn\u0027t spend time too much time on this one, honestly.\n\nRight now its totally broken, the tooz effort will come along and be able to do a better job. Lets just concentrate on fixing the interface to the DB driver, that the tooz folks can build to that interface.","commit_id":"832272541727edab8087e1426167b4bc774f18b8"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"953dbc2d9a58b5765ffacb27781b04b0e8edec75","unresolved":false,"context_lines":[{"line_number":100,"context_line":"can change the state of the service using nova-manage, which will"},{"line_number":101,"context_line":"eventually go through servicegroup API update()."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"4. If the services information is stored in Zookeeper, all the"},{"line_number":104,"context_line":"interfaces will go through servicegroup API. Znode will"},{"line_number":105,"context_line":"maintain the representational state about the service. In this"},{"line_number":106,"context_line":"scenario the nova.services table will just be a standalone entity."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_139e9356","line":103,"in_reply_to":"1af86dd1_fbb3e508","updated":"2015-06-12 18:55:23.000000000","message":"Sure. Will cover details regarding how it will be implemented for non-db drivers in https://review.openstack.org/#/c/138607/","commit_id":"832272541727edab8087e1426167b4bc774f18b8"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"bce937f290e6318a573c478f3d0f4fa9f210700b","unresolved":false,"context_lines":[{"line_number":105,"context_line":"maintain the representational state about the service. In this"},{"line_number":106,"context_line":"scenario the nova.services table will just be a standalone entity."},{"line_number":107,"context_line":"Same applies for the Memcache driver."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Alternatives"},{"line_number":111,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_95928256","line":108,"updated":"2015-06-12 08:16:48.000000000","message":"Instead of using bullet lists, I would love to see a paragraph explaining which kind of Facade you\u0027ll be creating for merging both the SG API methods and the Service object.\n\nWould it be a new Service object, or will it be just a loose API ? I know that the devil is in the details so I would appreciate more details than just \"okay, we\u0027ll be using the SG API\". \n\nAlso, how will you make sure that both datastores (ie. the services table and the \u0027SG driver\u0027) will be in sync ?\n\nHow do you manage the transition with old Kilo computes nodes calling either the Service object or the SG API ?","commit_id":"832272541727edab8087e1426167b4bc774f18b8"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"b656d07b18134dd8a2aecc6ddb9f878cd6c7687e","unresolved":false,"context_lines":[{"line_number":105,"context_line":"maintain the representational state about the service. In this"},{"line_number":106,"context_line":"scenario the nova.services table will just be a standalone entity."},{"line_number":107,"context_line":"Same applies for the Memcache driver."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Alternatives"},{"line_number":111,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_663747b1","line":108,"in_reply_to":"1af86dd1_13b0d3f3","updated":"2015-06-12 19:11:10.000000000","message":"Well, I was thinking that we wouldn\u0027t have to ensure any consistency of the liveness info, if services are always stored in the Nova database and liveness heartbeats are stored in the SG driver\u0027s datastore. As services check in via a call to the SG API, they will get registered. There would be some delay depending on heartbeat frequency, but I just meant there\u0027s no need to sync old heartbeats into a new datastore if it changes.\n\nBut it sounds like you\u0027re saying the same thing, that *all* of the service info will get automatically generated when a service checks in via a call to the SG API. Is that right? With only Nova API needing the restart, not compute nodes?","commit_id":"832272541727edab8087e1426167b4bc774f18b8"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"953dbc2d9a58b5765ffacb27781b04b0e8edec75","unresolved":false,"context_lines":[{"line_number":105,"context_line":"maintain the representational state about the service. In this"},{"line_number":106,"context_line":"scenario the nova.services table will just be a standalone entity."},{"line_number":107,"context_line":"Same applies for the Memcache driver."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Alternatives"},{"line_number":111,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_13b0d3f3","line":108,"in_reply_to":"1af86dd1_5c353d44","updated":"2015-06-12 18:55:23.000000000","message":"So as explained here my plan is to keep services and well as liveliness information both in the same datastore. Having said that will answer your queries.\n\n@melwitt : \n1. It helps to just act on one source of truth. \n2. Helps to simplify API as all the interfaces will be using the same API. \n3. If we do it the way you are describing how do we ensure that the 2 datastores will be consistent ? For example lets say zookeeper sg driver is used to check liveliness and we still keep the services information in database how do we ensure that 2 datastores are consistent ? Won\u0027t we end up running into the same mess we are now in ? And regarding the comment that \"drivers could be swapped in/out at will\" even we you go with the way I am proposing in this spec whenever you change the service group driver services need to be restarted and as a result of which the services will register there reference in the respective datastore may it be database, zookeeper, memcache, or anything new tommorow. HTH.\n\n@bauzas : I think you didn\u0027t get the point here. What I am saying is to keep services and well as liveliness information both in the same datastore. I hope that answers you first 3 questions.\n\nRegarding the last one, when the SG driver is changed the services will need to be restarted which will make sure that the old kilo compute also registers itself.\n\nAlso the scope of this spec is limited to using a common interface  for admin-interface, extension and sg api.","commit_id":"832272541727edab8087e1426167b4bc774f18b8"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"141abf36f2209117d4ddb490b0cb93ba5a3cfb60","unresolved":false,"context_lines":[{"line_number":105,"context_line":"maintain the representational state about the service. In this"},{"line_number":106,"context_line":"scenario the nova.services table will just be a standalone entity."},{"line_number":107,"context_line":"Same applies for the Memcache driver."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Alternatives"},{"line_number":111,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_e9d1c8fc","line":108,"in_reply_to":"1af86dd1_663747b1","updated":"2015-06-12 19:50:55.000000000","message":"So nova-compute needs to be restarted before nova-api. If you see in [1] compute nodes will join() and have a reference created in the new datastore say zookeeper for example. Once that is done nova-api needs to be restarted. As part of service object creation rpc server is also created so the service running on compute listening on a particular topic needs to aware of the new datastore.\n\n[1] https://github.com/openstack/nova/blob/stable/kilo/nova/service.py#L208\n\nSo liveliness information is about getting heartbeat which depends on service[\u0027updated\u0027] field [2]. Also checking whether a service is enabled or disabled is an useful metric in deciding service liveliness [3]. The reason I mentioned this is all this information is tied to nova.services so if we have 2 datastore one for service data and other for liveliness, it won\u0027t help IMHO. \n\n[2] https://github.com/openstack/nova/blob/master/nova/servicegroup/drivers/db.py#L62\n\n[3] https://github.com/openstack/nova/blob/master/nova/db/sqlalchemy/api.py#L460-L489","commit_id":"832272541727edab8087e1426167b4bc774f18b8"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"a0a70c4ba7732b976df102a6a339e5a0d14538de","unresolved":false,"context_lines":[{"line_number":105,"context_line":"maintain the representational state about the service. In this"},{"line_number":106,"context_line":"scenario the nova.services table will just be a standalone entity."},{"line_number":107,"context_line":"Same applies for the Memcache driver."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Alternatives"},{"line_number":111,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_5c353d44","line":108,"in_reply_to":"1af86dd1_95928256","updated":"2015-06-12 18:09:12.000000000","message":"I have similar questions. I had been thinking that the services table would be the source of truth and let the different drivers store *only* the liveness information. That way drivers could be swapped in/out at will and have things continue to work fine. No need to sync anything. I don\u0027t yet understand why it\u0027s beneficial to store all of the services information inside the drivers, other than avoiding having to work with two sources, one for services info and one for liveness info.","commit_id":"832272541727edab8087e1426167b4bc774f18b8"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"214b267377aa1521f4a8f85dc93f5fb93e5fa90c","unresolved":false,"context_lines":[{"line_number":105,"context_line":"maintain the representational state about the service. In this"},{"line_number":106,"context_line":"scenario the nova.services table will just be a standalone entity."},{"line_number":107,"context_line":"Same applies for the Memcache driver."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Alternatives"},{"line_number":111,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_85c7e444","line":108,"in_reply_to":"1af86dd1_bfc89e75","updated":"2015-06-12 23:42:44.000000000","message":"@harlowja : thats awesome. As you always say a diagramatic representation always helps, thanks much! :)\n\n@melwitt : Thats a good point. \n\nSince the order in which the services will be restarted :-\n1. Nova-compute\n2. Nove-api\n\nOnce 1 is done and nova compute restarted. Will need to modify [1] to make it conditional based on CONF.servicegroup_driver\u003ddb we create the reference in db or not. For non-db drivers for example for zk driver, znodes will be created. Now since the api service is running which can fetch the details about service state(enabled/disabled). That can be captured and the znodes can be updated with the state. HTH. \n\n[1] https://github.com/openstack/nova/blob/stable/kilo/nova/service.py#L167","commit_id":"832272541727edab8087e1426167b4bc774f18b8"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"c2b6e7798e9a7c1224c028e7a90b075412ea4f57","unresolved":false,"context_lines":[{"line_number":105,"context_line":"maintain the representational state about the service. In this"},{"line_number":106,"context_line":"scenario the nova.services table will just be a standalone entity."},{"line_number":107,"context_line":"Same applies for the Memcache driver."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Alternatives"},{"line_number":111,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa32b979_6bddd16f","line":108,"in_reply_to":"1af86dd1_bfc89e75","updated":"2015-06-13 00:42:49.000000000","message":"We can still retain the enabled/disabled status afaik.\n\nThis tree (of a potential structure stored somewhere) might show that better:\n\n   /\n   |__openstack\n      |__nova\n         |__sg\n            |__host_0 (emphemeral)\n            |  |__topic_0\n            |  |__host0.yahoo.com\n            |  |__192.168.0.0\n            |__host_0.disabled\n\nSo if this was stored all in zookeeper, now the determination of node information is all stored in one datastore (including disabled/enabled or other). A zk datastore also has no need to *manually* heartbeat to update anything (due to how http://zookeeper.apache.org/doc/current/zookeeperOver.html#Nodes+and+ephemeral+nodes works).\n\nSo yes there would be a sync, that might be painful, idk, but there would also be a API that would be used (the foundation rework part of this spec). That API can still be backed by 2 datastores (store the .disabled file above in the DB as a column, as exists right now, or some other subset of information there), but that\u0027s not IMHO my preference, splitting data just creates inconsistencies (and those inconsistencies already exist).","commit_id":"832272541727edab8087e1426167b4bc774f18b8"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"75768722acbbb26546d0c875c48eab39e245e75a","unresolved":false,"context_lines":[{"line_number":105,"context_line":"maintain the representational state about the service. In this"},{"line_number":106,"context_line":"scenario the nova.services table will just be a standalone entity."},{"line_number":107,"context_line":"Same applies for the Memcache driver."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Alternatives"},{"line_number":111,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_bfc89e75","line":108,"in_reply_to":"1af86dd1_e9d1c8fc","updated":"2015-06-12 20:44:36.000000000","message":"Okay. I must be missing something, then. I was thinking if we keep all of the services information (except heartbeat) in the Nova database, then only nova-api would have to be restarted if and when the SG driver is changed, no restart of nova-computes. And enabled/disabled status would be retained. I thought nova-compute would continue doing the same thing it has been doing, which is sending a heartbeat update to the SG API, regardless of the SG driver type. Then nova-api receives the heartbeat storing it in the correct datastore through the SG driver. Then when scheduling happens or when someone queries the SG API about service up/down, the SG API will check enabled/disabled in the Nova DB and heartbeat timestamp in the SG driver datastore.\n\nAs opposed to storing all of the service information in the SG driver datastore, that would require creating the service object upon a driver change, which requires that nova-compute join() again, which requires nova-compute to be restarted.\n\nThe other point about needing to sync data from one datastore to the next when changing drivers, I think has to do with things like enabled/disabled status. If we have a deployment running with the DB driver and we have X services disabled, if we switch to the ZK driver, what happens to X disabled services? The enabled/disabled status won\u0027t be carried over to the ZK datastore.","commit_id":"832272541727edab8087e1426167b4bc774f18b8"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d5829b3fef6b2bf3a03e2247dea3878d4df7ab4d","unresolved":false,"context_lines":[{"line_number":105,"context_line":"maintain the representational state about the service. In this"},{"line_number":106,"context_line":"scenario the nova.services table will just be a standalone entity."},{"line_number":107,"context_line":"Same applies for the Memcache driver."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Alternatives"},{"line_number":111,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_ffddf670","line":108,"in_reply_to":"1af86dd1_e9d1c8fc","updated":"2015-06-12 20:29:37.000000000","message":"So I think the idea is that there would be a single store for information (all hidden behind the newly fixed SG api). For example one set of information could be stored like the following:\n\n  /\n  |__openstack\n     |__nova\n        |__sg\n           |__host_0 (emphemeral)\n           |  |__topic_0\n           |  |__host0.yahoo.com\n           |  |__192.168.0.0\n           |__host_1 (emphemeral)\n           |  |__topic_1\n           |  |__host1.yahoo.com\n           |  |__192.168.0.1\n           |__host_2 (emphemeral)\n           |  |__topic_2\n           |  |__host2.yahoo.com\n           |  |__192.168.0.2\n           |__host_3 (emphemeral)\n           |  |__topic_3\n           |  |__host3.yahoo.com\n           |  |__192.168.0.3\n           |__host_4 (emphemeral)\n              |__topic_4\n              |__host4.yahoo.com\n              |__192.168.0.4\n\n-- emphemeral \u003d\u003d path + data will disappear when the host that populated that data dies (or is removed), automatically...\n\nNote how there is no liveness information maintained in the above because the liveness is built into the paths existence in the first place (due to its emphemeral nature).\n\nAnother backend could store that information in a database or in redis, or in ... the point being that one API is used throughout (with reliably and consistent backends for that information). Note that this does *not* stop someone from backing that API by 2 datastores, but they can do that at there own risk IMHO.","commit_id":"832272541727edab8087e1426167b4bc774f18b8"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"fa032d30152d08375549e163bf2b8b75a864abad","unresolved":false,"context_lines":[{"line_number":186,"context_line":"  direct calls to objects. ServiceList or host_api.service_get_all (which"},{"line_number":187,"context_line":"  is hard-coded to use objects.ServiceList.get_all, which queries the"},{"line_number":188,"context_line":"  database services table and does not actually hit the servicegroup API"},{"line_number":189,"context_line":"  at all)."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_9b519165","line":189,"updated":"2015-06-12 09:34:13.000000000","message":"This is a good scope, lets just concentrate on the DB driver, and see where that leaves us.","commit_id":"832272541727edab8087e1426167b4bc774f18b8"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"953dbc2d9a58b5765ffacb27781b04b0e8edec75","unresolved":false,"context_lines":[{"line_number":186,"context_line":"  direct calls to objects. ServiceList or host_api.service_get_all (which"},{"line_number":187,"context_line":"  is hard-coded to use objects.ServiceList.get_all, which queries the"},{"line_number":188,"context_line":"  database services table and does not actually hit the servicegroup API"},{"line_number":189,"context_line":"  at all)."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1af86dd1_b39fbf5e","line":189,"in_reply_to":"1af86dd1_9b519165","updated":"2015-06-12 18:55:23.000000000","message":"Sure John. Would like to limit the scope to using comman interface. Will cover details regarding non-db drivers https://review.openstack.org/#/c/138607/","commit_id":"832272541727edab8087e1426167b4bc774f18b8"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ab5a2c41a16707f28fc1d8668a85d8d92e209319","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Project Priority"},{"line_number":85,"context_line":"----------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"This fits under the \u0027Scheduler\u0027 liberty priorities."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_960ca03c","line":87,"updated":"2015-06-22 20:38:05.000000000","message":"Eh, kind of...","commit_id":"ff033f1bc491b67756c0bb7e7a4ef6abb1c2416e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"7c0dac614644620ff86e8aec7e73e1435f9e8b04","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Project Priority"},{"line_number":85,"context_line":"----------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"This fits under the \u0027Scheduler\u0027 liberty priorities."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_99f11d6d","line":87,"in_reply_to":"fa32b979_960ca03c","updated":"2015-06-23 09:58:53.000000000","message":"yeah, not sure about that.. but its useful","commit_id":"ff033f1bc491b67756c0bb7e7a4ef6abb1c2416e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"f7fafa620b7960c6a77e15ab95abe56e0a133838","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Project Priority"},{"line_number":85,"context_line":"----------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"This fits under the \u0027Scheduler\u0027 liberty priorities."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_9b569928","line":87,"in_reply_to":"fa32b979_99f11d6d","updated":"2015-06-24 21:44:33.000000000","message":"Honestly, I dislike having the spec as an official scheduler priority since it\u0027s not related to the scheduler but rather more for the Service API, and I don\u0027t want to see the scheduler priority track as a placeholder for any spec wanting to get an extra time.\n\nThat said, I\u0027m fine with merging that spec and amending it for removing the priority, that\u0027s fair.","commit_id":"ff033f1bc491b67756c0bb7e7a4ef6abb1c2416e"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"b4d5e36264d5f1b69972bd16956c6ce0bb0269d7","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Project Priority"},{"line_number":85,"context_line":"----------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"This fits under the \u0027Scheduler\u0027 liberty priorities."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ba3cc151_fe294f8a","line":87,"in_reply_to":"fa32b979_9b569928","updated":"2015-06-30 15:48:51.000000000","message":"So, the scheduler subteam made a vote for knowing if that spec is a good candidate for the scheduler priority and the result is *no*. See http://eavesdrop.openstack.org/meetings/nova_scheduler/2015/nova_scheduler.2015-06-30-14.59.html point #2.C","commit_id":"ff033f1bc491b67756c0bb7e7a4ef6abb1c2416e"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"54ca40dd6445c4eeda47f04f70809b556165ece3","unresolved":false,"context_lines":[{"line_number":90,"context_line":"Proposed change"},{"line_number":91,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"1. Proposed change is to enforce all the changes to services"},{"line_number":94,"context_line":"data go through the servicegroup APIs."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"2. Fix all places in the code which access/modify the services"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_bc8001f9","line":93,"updated":"2015-06-19 10:31:01.000000000","message":"Guessing there will be one Implementation of the updated servicegroup APIs backed by the existing nova.services table? And this implementation will be the default","commit_id":"ff033f1bc491b67756c0bb7e7a4ef6abb1c2416e"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"621d933d379d77740ff1ca3d13c0f91e7e824759","unresolved":false,"context_lines":[{"line_number":90,"context_line":"Proposed change"},{"line_number":91,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"1. Proposed change is to enforce all the changes to services"},{"line_number":94,"context_line":"data go through the servicegroup APIs."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"2. Fix all places in the code which access/modify the services"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_cd5dfc49","line":93,"in_reply_to":"fa32b979_bc8001f9","updated":"2015-06-19 17:58:48.000000000","message":"Yes DbDriver implementation will be the default.","commit_id":"ff033f1bc491b67756c0bb7e7a4ef6abb1c2416e"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"54ca40dd6445c4eeda47f04f70809b556165ece3","unresolved":false,"context_lines":[{"line_number":93,"context_line":"1. Proposed change is to enforce all the changes to services"},{"line_number":94,"context_line":"data go through the servicegroup APIs."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"2. Fix all places in the code which access/modify the services"},{"line_number":97,"context_line":"data by querying/modifying nova.services and there are many"},{"line_number":98,"context_line":"places in nova codebase which do that."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_3cbdd102","line":96,"updated":"2015-06-19 10:31:01.000000000","message":"Can you please list the modules that do this in master/HEAD?","commit_id":"ff033f1bc491b67756c0bb7e7a4ef6abb1c2416e"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"621d933d379d77740ff1ca3d13c0f91e7e824759","unresolved":false,"context_lines":[{"line_number":93,"context_line":"1. Proposed change is to enforce all the changes to services"},{"line_number":94,"context_line":"data go through the servicegroup APIs."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"2. Fix all places in the code which access/modify the services"},{"line_number":97,"context_line":"data by querying/modifying nova.services and there are many"},{"line_number":98,"context_line":"places in nova codebase which do that."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_6d35d0f5","line":96,"in_reply_to":"fa32b979_3cbdd102","updated":"2015-06-19 17:58:48.000000000","message":"http://lists.openstack.org/pipermail/openstack-dev/2015-May/063602.html\n\nHas a list of everything you need :) Its already part of the references.","commit_id":"ff033f1bc491b67756c0bb7e7a4ef6abb1c2416e"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"54ca40dd6445c4eeda47f04f70809b556165ece3","unresolved":false,"context_lines":[{"line_number":104,"context_line":"can change the state of the service using nova-manage, which will"},{"line_number":105,"context_line":"eventually go through servicegroup API update()."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"4. If the services information is stored in Zookeeper or Memcache"},{"line_number":108,"context_line":"all the interfaces which access/modify services data, service"},{"line_number":109,"context_line":"liveliness information will go through servicegroup API. The details on"},{"line_number":110,"context_line":"how the Zookeeper ephemeral znode will maintain the service"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_dce065fd","line":107,"updated":"2015-06-19 10:31:01.000000000","message":"Does the Zookeeper and Memcache based implementations persist the information on disk? (for recovering from outages)","commit_id":"ff033f1bc491b67756c0bb7e7a4ef6abb1c2416e"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"621d933d379d77740ff1ca3d13c0f91e7e824759","unresolved":false,"context_lines":[{"line_number":104,"context_line":"can change the state of the service using nova-manage, which will"},{"line_number":105,"context_line":"eventually go through servicegroup API update()."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"4. If the services information is stored in Zookeeper or Memcache"},{"line_number":108,"context_line":"all the interfaces which access/modify services data, service"},{"line_number":109,"context_line":"liveliness information will go through servicegroup API. The details on"},{"line_number":110,"context_line":"how the Zookeeper ephemeral znode will maintain the service"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_500423c5","line":107,"in_reply_to":"fa32b979_dce065fd","updated":"2015-06-19 17:58:48.000000000","message":"The servers that make up the ZooKeeper service must all know about each other. As long as a majority of the servers are available, the ZooKeeper service will be available. They maintain an in-memory image of state, along with a transaction logs and snapshots in a persistent store which is managed by Zookeeper.\n\nMemcache[1]  being an in-memory store won\u0027t persist data to disk. But thats how memcahe is designed. That why we would like to propose moving to Redis than using Memcache. Tooz already has drivers for Memcache[3] and Redis[4]\n\n[1] https://code.google.com/p/memcached/\n[2] http://redis.io/\n[3] https://github.com/openstack/tooz/blob/master/tooz/drivers/memcached.py\n[4] https://github.com/openstack/tooz/blob/master/tooz/drivers/redis.py","commit_id":"ff033f1bc491b67756c0bb7e7a4ef6abb1c2416e"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"54ca40dd6445c4eeda47f04f70809b556165ece3","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Work Items"},{"line_number":186,"context_line":"----------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"- Fix admin interface, nova-manage, to use servicegroup API rather than"},{"line_number":189,"context_line":"  directly querying database."},{"line_number":190,"context_line":"- Fix REST API extensions for os-hosts, os-hypervisors, os-services"},{"line_number":191,"context_line":"  and os-availability-zones to use servicegroup API. All of these use"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_1ce1edd0","line":188,"updated":"2015-06-19 10:31:01.000000000","message":"So at the present moment, Can nova-manage work without any of the nova processes started? Is that going to change with this blueprint? what nova-manage capabilities will not be available if the processes are not running?","commit_id":"ff033f1bc491b67756c0bb7e7a4ef6abb1c2416e"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"621d933d379d77740ff1ca3d13c0f91e7e824759","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Work Items"},{"line_number":186,"context_line":"----------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"- Fix admin interface, nova-manage, to use servicegroup API rather than"},{"line_number":189,"context_line":"  directly querying database."},{"line_number":190,"context_line":"- Fix REST API extensions for os-hosts, os-hypervisors, os-services"},{"line_number":191,"context_line":"  and os-availability-zones to use servicegroup API. All of these use"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_d0f7d38a","line":188,"in_reply_to":"fa32b979_1ce1edd0","updated":"2015-06-19 17:58:48.000000000","message":"Yes :) it can and its also a use case that will be fixed!","commit_id":"ff033f1bc491b67756c0bb7e7a4ef6abb1c2416e"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"17b3ee3a133de3cd0600f6b63c704bf30a6b4219","unresolved":false,"context_lines":[{"line_number":185,"context_line":"Work Items"},{"line_number":186,"context_line":"----------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"- Fix admin interface, nova-manage, to use servicegroup API rather than"},{"line_number":189,"context_line":"  directly querying database."},{"line_number":190,"context_line":"- Fix REST API extensions for os-hosts, os-hypervisors, os-services"},{"line_number":191,"context_line":"  and os-availability-zones to use servicegroup API. All of these use"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa32b979_864831ce","line":188,"in_reply_to":"fa32b979_d0f7d38a","updated":"2015-06-19 18:49:37.000000000","message":"NO wonder my operators keep on trying to nova-manage disable/enable things and nothing changes! This explains that ;) `sudo nova-manage enable` not fixing all the things :-P","commit_id":"ff033f1bc491b67756c0bb7e7a4ef6abb1c2416e"}]}
