)]}'
{"specs/mitaka/approved/servicegroup-api-control-plane.rst":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"410f3b13eb30fb40a0bf864d34621ed92b50fdb0","unresolved":false,"context_lines":[{"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"},{"line_number":97,"context_line":"data by querying/modifying nova.services and there are many"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_b74f2d6a","line":94,"updated":"2015-09-16 19:47:05.000000000","message":"I don\u0027t think this is good for things at the persistence layer. Meaning, the compute node object has a tie to the service object. (I know that may not live forever). I don\u0027t think it makes sense to have the compute node object call to the server group api to fetch that information.","commit_id":"a82086b4066b42c91573415cfd1c7ea48a368793"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"410f3b13eb30fb40a0bf864d34621ed92b50fdb0","unresolved":false,"context_lines":[{"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":""},{"line_number":100,"context_line":"3. If the services information is stored in database, all the"},{"line_number":101,"context_line":"interfaces will go through servicegroup API layer. New interfaces"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_576811b9","line":98,"updated":"2015-09-16 19:47:05.000000000","message":"Is this all places above the object/persistence layer or ALL places?\n\nSeems to me that things like api and compute manager should use the higher-level SG api, but not things at the same or lower layer (i.e. other things at the object persistence layer).","commit_id":"a82086b4066b42c91573415cfd1c7ea48a368793"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"410f3b13eb30fb40a0bf864d34621ed92b50fdb0","unresolved":false,"context_lines":[{"line_number":110,"context_line":"how the Zookeeper ephemeral znode will maintain the service"},{"line_number":111,"context_line":"representational state and how to migrate from existing"},{"line_number":112,"context_line":"database servicegroup driver to zookeeper servicegroup driver"},{"line_number":113,"context_line":"has been covered in https://review.openstack.org/#/c/138607."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba15a1d1_f79da566","line":113,"updated":"2015-09-16 19:47:05.000000000","message":"It sounds like this means the services table in the database will be empty, is that right?\n\nI don\u0027t understand why this is a valuable change to make at this point. Right now, we expect that the zk (et al) implementations will be something people might want to try and maybe move to. However, in order to seamlessly try zk and roll back, it would be much cleaner to continue to keep service records in the database, and just not use/update them for liveness checks when using a different SG driver.\n\nFurther, we have things like service version, which will require some efficient version calculations in order to drive things like compute rpc version pinning and object backporting. I\u0027m not sure how we\u0027d be able to do min(service.version) in a remotely-efficient way if we\u0027re storing things ONLY in ZK or memcache.","commit_id":"a82086b4066b42c91573415cfd1c7ea48a368793"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"487f082607a6183b621c27a8a4870153ff60afb3","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"At present, there are various interfaces through which services data can"},{"line_number":14,"context_line":"be manipulated - admin interface(nova-manage), extensions"},{"line_number":15,"context_line":"(contrib/services.py), servicegroup API layer. Having different"},{"line_number":16,"context_line":"interfaces to manipulate the source of truth can lead to severe"},{"line_number":17,"context_line":"data inconsistency for something as useful as stored in nova.services."},{"line_number":18,"context_line":"The proposal is to follow a common path, while interacting with services"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_d00e688b","line":15,"updated":"2015-10-08 15:34:17.000000000","message":"I think the wording \u0027interface\u0027 is incorrect because not exactly right. So, we have a REST API resource (/os-services), a nova-manage command (nova-manage service) which was there before having the former API and we have a Factory pattern for the SG API. \n\nAll of them are loosely related because of the same object model (ie. the Service NovaObject). \n\nHonestly, I don\u0027t feel the problem is because we use 3 different accessors for the same object model, but rather because the object model is itself a Facade to the real datastore which could expose different resources, just because it\u0027s a Facade :-)","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"133da7b75b3c2caab50f20a92899c63378b81347","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"At present, there are various interfaces through which services data can"},{"line_number":14,"context_line":"be manipulated - admin interface(nova-manage), extensions"},{"line_number":15,"context_line":"(contrib/services.py), servicegroup API layer. Having different"},{"line_number":16,"context_line":"interfaces to manipulate the source of truth can lead to severe"},{"line_number":17,"context_line":"data inconsistency for something as useful as stored in nova.services."},{"line_number":18,"context_line":"The proposal is to follow a common path, while interacting with services"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_e3582e33","line":15,"in_reply_to":"7a2fa921_d00e688b","updated":"2015-10-10 00:50:49.000000000","message":"Sure please see updated patch","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"68a731831a8db3228ebfbaf33186bf3f4eb74cda","unresolved":false,"context_lines":[{"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 to the services table which is"},{"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"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_db690427","line":32,"updated":"2015-10-06 23:05:23.000000000","message":"This is listed as a problem, but I think only the duplication of information between the services table and the external service is the problem (IMHO).","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"487f082607a6183b621c27a8a4870153ff60afb3","unresolved":false,"context_lines":[{"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 to the services table which is"},{"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"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_2df0a590","line":32,"in_reply_to":"7a2fa921_db690427","updated":"2015-10-08 15:34:17.000000000","message":"Right, I don\u0027t see that as a current problem, rather a design discussion.","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"68a731831a8db3228ebfbaf33186bf3f4eb74cda","unresolved":false,"context_lines":[{"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"},{"line_number":39,"context_line":"the deployments. But for deployments using Zookeeper or Memcache"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_fbe720e2","line":36,"updated":"2015-10-06 23:05:23.000000000","message":"I\u0027m not sure I see these all as on the same level. I agree that it\u0027s a problem that nova-manage duplicates the information we get out of the API, and would be fine removing that. However, I\u0027m not sure why you include \"servicegroup API layer\" in here. That\u0027s internal nova stuff, unlike the other two.","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"133da7b75b3c2caab50f20a92899c63378b81347","unresolved":false,"context_lines":[{"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"},{"line_number":39,"context_line":"the deployments. But for deployments using Zookeeper or Memcache"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_de12eb56","line":36,"in_reply_to":"7a2fa921_d343d211","updated":"2015-10-10 00:50:49.000000000","message":"Done","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"133da7b75b3c2caab50f20a92899c63378b81347","unresolved":false,"context_lines":[{"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"},{"line_number":39,"context_line":"the deployments. But for deployments using Zookeeper or Memcache"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_be15af40","line":36,"in_reply_to":"7a2fa921_fbe720e2","updated":"2015-10-10 00:50:49.000000000","message":"Done","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"487f082607a6183b621c27a8a4870153ff60afb3","unresolved":false,"context_lines":[{"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"},{"line_number":39,"context_line":"the deployments. But for deployments using Zookeeper or Memcache"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_d343d211","line":36,"in_reply_to":"7a2fa921_fbe720e2","updated":"2015-10-08 15:34:17.000000000","message":"See my point above, I also agree with Dan, we should get rid of nova-manage service by some point in the future.","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"487f082607a6183b621c27a8a4870153ff60afb3","unresolved":false,"context_lines":[{"line_number":39,"context_line":"the deployments. But for deployments using Zookeeper or Memcache"},{"line_number":40,"context_line":"servicegroup driver, we will end up in severe data inconsistency given"},{"line_number":41,"context_line":"that we have 3 different interfaces to modify the critical services"},{"line_number":42,"context_line":"information which is stored in nova db."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"4. There is no abstraction provided to choose a different backend"},{"line_number":45,"context_line":"to store the service data. It is tightly coupled with database"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_be413d65","line":42,"updated":"2015-10-08 15:34:17.000000000","message":"I\u0027m not exactly agreing that. That\u0027s because the DB driver is not exactly separated from the services table (I mean the is_up() call goes check what\u0027s in the services) while the decision-making is done elsewhere for the other drivers.","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"133da7b75b3c2caab50f20a92899c63378b81347","unresolved":false,"context_lines":[{"line_number":39,"context_line":"the deployments. But for deployments using Zookeeper or Memcache"},{"line_number":40,"context_line":"servicegroup driver, we will end up in severe data inconsistency given"},{"line_number":41,"context_line":"that we have 3 different interfaces to modify the critical services"},{"line_number":42,"context_line":"information which is stored in nova db."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"4. There is no abstraction provided to choose a different backend"},{"line_number":45,"context_line":"to store the service data. It is tightly coupled with database"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_c355f2f9","line":42,"in_reply_to":"7a2fa921_be413d65","updated":"2015-10-10 00:50:49.000000000","message":"Sure please see updated patch","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"68a731831a8db3228ebfbaf33186bf3f4eb74cda","unresolved":false,"context_lines":[{"line_number":52,"context_line":"https://review.openstack.org/#/c/138607/. The scope of"},{"line_number":53,"context_line":"of this spec is limited to calls accesing and fetching service data"},{"line_number":54,"context_line":"and service liveliness information by enforcing all the"},{"line_number":55,"context_line":"interfaces go through the servicegroup api layer."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_9b4aacab","line":55,"updated":"2015-10-06 23:05:23.000000000","message":"I feel like this point is also very obscure to me. Perhaps you could rewrite this whole section as \"Nova\u0027s method for determining service live-ness is not pluggable\" ?","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"487f082607a6183b621c27a8a4870153ff60afb3","unresolved":false,"context_lines":[{"line_number":52,"context_line":"https://review.openstack.org/#/c/138607/. The scope of"},{"line_number":53,"context_line":"of this spec is limited to calls accesing and fetching service data"},{"line_number":54,"context_line":"and service liveliness information by enforcing all the"},{"line_number":55,"context_line":"interfaces go through the servicegroup api layer."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_9e2481c5","line":55,"in_reply_to":"7a2fa921_9b4aacab","updated":"2015-10-08 15:34:17.000000000","message":"Agreed.","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"133da7b75b3c2caab50f20a92899c63378b81347","unresolved":false,"context_lines":[{"line_number":52,"context_line":"https://review.openstack.org/#/c/138607/. The scope of"},{"line_number":53,"context_line":"of this spec is limited to calls accesing and fetching service data"},{"line_number":54,"context_line":"and service liveliness information by enforcing all the"},{"line_number":55,"context_line":"interfaces go through the servicegroup api layer."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_23538618","line":55,"in_reply_to":"7a2fa921_9e2481c5","updated":"2015-10-10 00:50:49.000000000","message":"Sure please see updated patch","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"416fbe01debe95b8bce06c4c55e4a1ffc98b9887","unresolved":false,"context_lines":[{"line_number":79,"context_line":"database as the underlying backend. This implementation is also"},{"line_number":80,"context_line":"inconsistent with servicegroup driver API \u0027get_all\u0027 view of"},{"line_number":81,"context_line":"services data."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Project Priority"},{"line_number":85,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_c455c31d","line":82,"updated":"2015-10-07 08:18:18.000000000","message":"I think this is quite different to what we are suggestion here.\n\nMark down and disabled states should always be stored in the DB.\n\nLooking at the API here:\nhttps://github.com/openstack/nova/blob/master/nova/servicegroup/api.py\n\nThe only thing you get in a driver specific way is the \"live-ness\" information, the is_up state.\n\nIdeally it should be similar in performance to the is_up in the DB driver, notice no DB calls are made in is_up, its all based on information we get from the database.\nhttps://github.com/openstack/nova/blob/master/nova/servicegroup/drivers/db.py#L81\n\nI have a feeling what you will really want is to wrap the DB objects returned by get_all with enough information to answer the is_up call during the scheduler call.\n\nThe rest of the code, that does not need to call is_up can then just modify the DB objects directly in all cases.\n\nDoes that seem like it is doable? Keep the disabled and marked_down state always in the DB, for all drivers, and only make the driver deal with is_up, ideally in a very efficient way, making the expensive call in the get_all call, to match how the scheduler uses the API, I think this is the call that will need to be changed:\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/host_manager.py#L530\nI presume there are similar calls in the API and nova-compute manager that do is_up that will need a similar treatment.","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"133da7b75b3c2caab50f20a92899c63378b81347","unresolved":false,"context_lines":[{"line_number":79,"context_line":"database as the underlying backend. This implementation is also"},{"line_number":80,"context_line":"inconsistent with servicegroup driver API \u0027get_all\u0027 view of"},{"line_number":81,"context_line":"services data."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Project Priority"},{"line_number":85,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_8344da49","line":82,"in_reply_to":"7a2fa921_59b92314","updated":"2015-10-10 00:50:49.000000000","message":"Sure please see updated patch","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"487f082607a6183b621c27a8a4870153ff60afb3","unresolved":false,"context_lines":[{"line_number":79,"context_line":"database as the underlying backend. This implementation is also"},{"line_number":80,"context_line":"inconsistent with servicegroup driver API \u0027get_all\u0027 view of"},{"line_number":81,"context_line":"services data."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Project Priority"},{"line_number":85,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_59b92314","line":82,"in_reply_to":"7a2fa921_c455c31d","updated":"2015-10-08 15:34:17.000000000","message":"So I feel that we should :\n- get a Service object using the regular service_obj \u003d Service.get_by_sth()\n- call service_obj.is_up()\n\nin order to get the liveness of the service. The disabled and markdown checks should be done within the Service object, not checked outside of it.","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"68a731831a8db3228ebfbaf33186bf3f4eb74cda","unresolved":false,"context_lines":[{"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 above the objects/persistence layer in the code"},{"line_number":97,"context_line":"which access/modify the services data by querying/modifying nova.services"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_bb276811","line":94,"updated":"2015-10-06 23:05:23.000000000","message":"Is this still correct? It seems like you contradict this below in #5.","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"133da7b75b3c2caab50f20a92899c63378b81347","unresolved":false,"context_lines":[{"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 above the objects/persistence layer in the code"},{"line_number":97,"context_line":"which access/modify the services data by querying/modifying nova.services"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_b5cdc586","line":94,"in_reply_to":"7a2fa921_bb276811","updated":"2015-10-10 00:50:49.000000000","message":"Fixed. Thanks","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"68a731831a8db3228ebfbaf33186bf3f4eb74cda","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"2. Fix all places above the objects/persistence layer in the code"},{"line_number":97,"context_line":"which access/modify the services data by querying/modifying nova.services"},{"line_number":98,"context_line":"and there are many places in nova codebase which do that."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"3. Service data will live in the database but the liveliness information"},{"line_number":101,"context_line":"can be managed by the respective servicegroup driver configured. This"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_7b21d0fa","line":98,"updated":"2015-10-06 23:05:23.000000000","message":"Same here.","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"133da7b75b3c2caab50f20a92899c63378b81347","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"2. Fix all places above the objects/persistence layer in the code"},{"line_number":97,"context_line":"which access/modify the services data by querying/modifying nova.services"},{"line_number":98,"context_line":"and there are many places in nova codebase which do that."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"3. Service data will live in the database but the liveliness information"},{"line_number":101,"context_line":"can be managed by the respective servicegroup driver configured. This"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_15a359b3","line":98,"in_reply_to":"7a2fa921_7b21d0fa","updated":"2015-10-10 00:50:49.000000000","message":"Fixed. Thanks","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"68a731831a8db3228ebfbaf33186bf3f4eb74cda","unresolved":false,"context_lines":[{"line_number":195,"context_line":"Developer impact"},{"line_number":196,"context_line":"----------------"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"1. Inorder to fetch services details like service information, service"},{"line_number":199,"context_line":"liveliness, the call should go through servicegroup API rather than directly"},{"line_number":200,"context_line":"fetching the information either through sqlalchemy layer and then db or"},{"line_number":201,"context_line":"using service objects."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_9be14c9d","line":198,"range":{"start_line":198,"start_character":3,"end_line":198,"end_character":10},"updated":"2015-10-06 23:05:23.000000000","message":"\"In order\"","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"133da7b75b3c2caab50f20a92899c63378b81347","unresolved":false,"context_lines":[{"line_number":195,"context_line":"Developer impact"},{"line_number":196,"context_line":"----------------"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"1. Inorder to fetch services details like service information, service"},{"line_number":199,"context_line":"liveliness, the call should go through servicegroup API rather than directly"},{"line_number":200,"context_line":"fetching the information either through sqlalchemy layer and then db or"},{"line_number":201,"context_line":"using service objects."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_180710cb","line":198,"in_reply_to":"7a2fa921_9be14c9d","updated":"2015-10-10 00:50:49.000000000","message":"Done","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"68a731831a8db3228ebfbaf33186bf3f4eb74cda","unresolved":false,"context_lines":[{"line_number":198,"context_line":"1. Inorder to fetch services details like service information, service"},{"line_number":199,"context_line":"liveliness, the call should go through servicegroup API rather than directly"},{"line_number":200,"context_line":"fetching the information either through sqlalchemy layer and then db or"},{"line_number":201,"context_line":"using service objects."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_3b191889","line":201,"updated":"2015-10-06 23:05:23.000000000","message":"Now I\u0027m confused. Is this not yet updated, or are you still proposing that all queries go through the servicegroup API internally? Because it seems highly inefficient to implement every method of quering/updating/creating/deleting services by implementing it at:\n\n 1. db/sqlalchemy/api\n 2. db/api\n 3. objects/service\n 4. servicegroup\n\nWhy can\u0027t we just have servicegroup exposure for the liveness bit?","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"133da7b75b3c2caab50f20a92899c63378b81347","unresolved":false,"context_lines":[{"line_number":198,"context_line":"1. Inorder to fetch services details like service information, service"},{"line_number":199,"context_line":"liveliness, the call should go through servicegroup API rather than directly"},{"line_number":200,"context_line":"fetching the information either through sqlalchemy layer and then db or"},{"line_number":201,"context_line":"using service objects."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_f811f404","line":201,"in_reply_to":"7a2fa921_3b191889","updated":"2015-10-10 00:50:49.000000000","message":"Sure updated accordingly.","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"68a731831a8db3228ebfbaf33186bf3f4eb74cda","unresolved":false,"context_lines":[{"line_number":218,"context_line":"----------"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"- Fix admin interface, nova-manage, to use servicegroup API rather than"},{"line_number":221,"context_line":"  directly querying database."},{"line_number":222,"context_line":"- Fix REST API extensions for os-hosts, os-hypervisors, os-services"},{"line_number":223,"context_line":"  and os-availability-zones to use servicegroup API. All of these use"},{"line_number":224,"context_line":"  direct calls to objects. ServiceList or host_api.service_get_all (which"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_3e27c6b7","line":221,"updated":"2015-10-06 23:05:23.000000000","message":"Can you elaborate on this? What exactly?","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"133da7b75b3c2caab50f20a92899c63378b81347","unresolved":false,"context_lines":[{"line_number":218,"context_line":"----------"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"- Fix admin interface, nova-manage, to use servicegroup API rather than"},{"line_number":221,"context_line":"  directly querying database."},{"line_number":222,"context_line":"- Fix REST API extensions for os-hosts, os-hypervisors, os-services"},{"line_number":223,"context_line":"  and os-availability-zones to use servicegroup API. All of these use"},{"line_number":224,"context_line":"  direct calls to objects. ServiceList or host_api.service_get_all (which"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_98fb20c1","line":221,"in_reply_to":"7a2fa921_3e27c6b7","updated":"2015-10-10 00:50:49.000000000","message":"Updated.","commit_id":"437e64c835bfe201ca007215414fb97b0108e318"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6b976ad0e0f0add6a135b32f4edf639d814cd102","unresolved":false,"context_lines":[{"line_number":13,"context_line":"At present, there are various interfaces through which services data can"},{"line_number":14,"context_line":"be manipulated - admin interface(nova-manage), extensions"},{"line_number":15,"context_line":"(contrib/services.py), etc. Every interface relies on the servicegroup"},{"line_number":16,"context_line":"layer API is_up() to get details about service live-ness. The proposal"},{"line_number":17,"context_line":"is keep service data in nova database nova.services table and fetch"},{"line_number":18,"context_line":"the live-ness information from the configured servicegroup(SG) driver."},{"line_number":19,"context_line":"Liveness will be a combination of service live-ness and RPC live-ness,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_af8c2536","line":16,"range":{"start_line":16,"start_character":47,"end_line":16,"end_character":56},"updated":"2015-10-12 20:22:52.000000000","message":"You\u0027re inconsistent about \"liveness\", \"live-ness\" and \"liveliness\" in this spec. I think you should choose one. The third is definitely not right, and the first two are in my order of preference :)","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":13,"context_line":"At present, there are various interfaces through which services data can"},{"line_number":14,"context_line":"be manipulated - admin interface(nova-manage), extensions"},{"line_number":15,"context_line":"(contrib/services.py), etc. Every interface relies on the servicegroup"},{"line_number":16,"context_line":"layer API is_up() to get details about service live-ness. The proposal"},{"line_number":17,"context_line":"is keep service data in nova database nova.services table and fetch"},{"line_number":18,"context_line":"the live-ness information from the configured servicegroup(SG) driver."},{"line_number":19,"context_line":"Liveness will be a combination of service live-ness and RPC live-ness,"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_81ba5dbf","line":16,"in_reply_to":"7a2fa921_af8c2536","updated":"2015-10-12 22:00:14.000000000","message":"Sure :) Done.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6b976ad0e0f0add6a135b32f4edf639d814cd102","unresolved":false,"context_lines":[{"line_number":17,"context_line":"is keep service data in nova database nova.services table and fetch"},{"line_number":18,"context_line":"the live-ness information from the configured servicegroup(SG) driver."},{"line_number":19,"context_line":"Liveness will be a combination of service live-ness and RPC live-ness,"},{"line_number":20,"context_line":"where the later will be computed based on information in nova.services."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_d4ac988e","line":20,"range":{"start_line":20,"start_character":10,"end_line":20,"end_character":15},"updated":"2015-10-12 20:22:52.000000000","message":"Should be \"latter\".","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":17,"context_line":"is keep service data in nova database nova.services table and fetch"},{"line_number":18,"context_line":"the live-ness information from the configured servicegroup(SG) driver."},{"line_number":19,"context_line":"Liveness will be a combination of service live-ness and RPC live-ness,"},{"line_number":20,"context_line":"where the later will be computed based on information in nova.services."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_e16c7138","line":20,"in_reply_to":"7a2fa921_d4ac988e","updated":"2015-10-12 22:00:14.000000000","message":"Done","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":29,"context_line":"is computed by the is_up() call. This is_up() call is implemented"},{"line_number":30,"context_line":"depending on what backend servicegroup driver is choosen."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Right now other SG driver are not functional and need to be revamped"},{"line_number":33,"context_line":"to allow them be involved in giving details about service live-ness."},{"line_number":34,"context_line":"That will be covered as part of seperate spec."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_af3505f8","line":32,"range":{"start_line":32,"start_character":19,"end_line":32,"end_character":25},"updated":"2015-10-12 20:57:51.000000000","message":"drivers","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":29,"context_line":"is computed by the is_up() call. This is_up() call is implemented"},{"line_number":30,"context_line":"depending on what backend servicegroup driver is choosen."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Right now other SG driver are not functional and need to be revamped"},{"line_number":33,"context_line":"to allow them be involved in giving details about service live-ness."},{"line_number":34,"context_line":"That will be covered as part of seperate spec."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_7a09eadc","line":32,"in_reply_to":"7a2fa921_af3505f8","updated":"2015-10-12 22:00:14.000000000","message":"Done","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":33,"context_line":"to allow them be involved in giving details about service live-ness."},{"line_number":34,"context_line":"That will be covered as part of seperate spec."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"The scope of this spec is limited to :-"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"1. Making sure the 2 seperate interfaces mentioned above namely the"},{"line_number":39,"context_line":"REST API interface and admin interface use the servicegroup layer API"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_4f11d15c","line":36,"range":{"start_line":36,"start_character":38,"end_line":36,"end_character":39},"updated":"2015-10-12 20:57:51.000000000","message":"not sure it\u0027s needed","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":33,"context_line":"to allow them be involved in giving details about service live-ness."},{"line_number":34,"context_line":"That will be covered as part of seperate spec."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"The scope of this spec is limited to :-"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"1. Making sure the 2 seperate interfaces mentioned above namely the"},{"line_number":39,"context_line":"REST API interface and admin interface use the servicegroup layer API"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_fa6e5a95","line":36,"in_reply_to":"7a2fa921_4f11d15c","updated":"2015-10-12 22:00:14.000000000","message":"It is to clear out what is exactly done as part of this spec","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"The scope of this spec is limited to :-"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"1. Making sure the 2 seperate interfaces mentioned above namely the"},{"line_number":39,"context_line":"REST API interface and admin interface use the servicegroup layer API"},{"line_number":40,"context_line":"while fetching service live-ness."},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_a11c396b","line":38,"range":{"start_line":38,"start_character":19,"end_line":38,"end_character":40},"updated":"2015-10-12 20:57:51.000000000","message":"Are you sure that the above examples are the only ones that use the SG API ? I can also count the ComputeFilter, you know","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"The scope of this spec is limited to :-"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"1. Making sure the 2 seperate interfaces mentioned above namely the"},{"line_number":39,"context_line":"REST API interface and admin interface use the servicegroup layer API"},{"line_number":40,"context_line":"while fetching service live-ness."},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_1a5796cb","line":38,"in_reply_to":"7a2fa921_a11c396b","updated":"2015-10-12 22:00:14.000000000","message":"IMHO going ahead we will be checking nova.object.Service.is_up which will be a combination of service liveness and rpc liveness","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"1. Making sure the 2 seperate interfaces mentioned above namely the"},{"line_number":39,"context_line":"REST API interface and admin interface use the servicegroup layer API"},{"line_number":40,"context_line":"while fetching service live-ness."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"2. Is_up will be an attribute for the service object which will be"},{"line_number":43,"context_line":"computed as a combination of service live-ness and rpc"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_013e4db8","line":40,"updated":"2015-10-12 20:57:51.000000000","message":"well, the whole paragraph is a bit weird, since for example, nova-manage already calls SG.is_up().\n\nI think you wanted to say that we want to have the same Facade for both service liveness and state, right? That implies changing the current calls.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"1. Making sure the 2 seperate interfaces mentioned above namely the"},{"line_number":39,"context_line":"REST API interface and admin interface use the servicegroup layer API"},{"line_number":40,"context_line":"while fetching service live-ness."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"2. Is_up will be an attribute for the service object which will be"},{"line_number":43,"context_line":"computed as a combination of service live-ness and rpc"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_7ad48a46","line":40,"in_reply_to":"7a2fa921_013e4db8","updated":"2015-10-12 22:00:14.000000000","message":"Yes","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6b976ad0e0f0add6a135b32f4edf639d814cd102","unresolved":false,"context_lines":[{"line_number":39,"context_line":"REST API interface and admin interface use the servicegroup layer API"},{"line_number":40,"context_line":"while fetching service live-ness."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"2. Is_up will be an attribute for the service object which will be"},{"line_number":43,"context_line":"computed as a combination of service live-ness and rpc"},{"line_number":44,"context_line":"live-ness. Service live-ness will be implemented by the respective"},{"line_number":45,"context_line":"SG driver and depending whether the service is up/down a boolean will"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_f4ee74b3","line":42,"range":{"start_line":42,"start_character":3,"end_line":42,"end_character":8},"updated":"2015-10-12 20:22:52.000000000","message":"This is not going to be capitalized in the object, so should be here either. Since this is on Service, which is an object, you can fix this with just:\n\n 2. Service.is_up will be ...","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":39,"context_line":"REST API interface and admin interface use the servicegroup layer API"},{"line_number":40,"context_line":"while fetching service live-ness."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"2. Is_up will be an attribute for the service object which will be"},{"line_number":43,"context_line":"computed as a combination of service live-ness and rpc"},{"line_number":44,"context_line":"live-ness. Service live-ness will be implemented by the respective"},{"line_number":45,"context_line":"SG driver and depending whether the service is up/down a boolean will"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_e1f8f1c6","line":42,"range":{"start_line":42,"start_character":3,"end_line":42,"end_character":8},"in_reply_to":"7a2fa921_f4ee74b3","updated":"2015-10-12 20:57:51.000000000","message":"I don\u0027t see a problem description in the point #2, rather an implementation proposal that should be explained in the next section.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":39,"context_line":"REST API interface and admin interface use the servicegroup layer API"},{"line_number":40,"context_line":"while fetching service live-ness."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"2. Is_up will be an attribute for the service object which will be"},{"line_number":43,"context_line":"computed as a combination of service live-ness and rpc"},{"line_number":44,"context_line":"live-ness. Service live-ness will be implemented by the respective"},{"line_number":45,"context_line":"SG driver and depending whether the service is up/down a boolean will"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_01516d62","line":42,"in_reply_to":"7a2fa921_f4ee74b3","updated":"2015-10-12 22:00:14.000000000","message":"Sure. Done. Since it was first letter of the sentence it was Capital. My bad should have explicitly mentioned it as Service.is_up.\n\nThanks for the feedback.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6b976ad0e0f0add6a135b32f4edf639d814cd102","unresolved":false,"context_lines":[{"line_number":44,"context_line":"live-ness. Service live-ness will be implemented by the respective"},{"line_number":45,"context_line":"SG driver and depending whether the service is up/down a boolean will"},{"line_number":46,"context_line":"be returned. Whereas to check rpc live-ness Nova will still rely on"},{"line_number":47,"context_line":"the nova.service table stored in Nova database."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Use Cases"},{"line_number":50,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_34ce2c5b","line":47,"range":{"start_line":47,"start_character":9,"end_line":47,"end_character":16},"updated":"2015-10-12 20:22:52.000000000","message":"Should be \"services\".","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":44,"context_line":"live-ness. Service live-ness will be implemented by the respective"},{"line_number":45,"context_line":"SG driver and depending whether the service is up/down a boolean will"},{"line_number":46,"context_line":"be returned. Whereas to check rpc live-ness Nova will still rely on"},{"line_number":47,"context_line":"the nova.service table stored in Nova database."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Use Cases"},{"line_number":50,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_01d88dee","line":47,"in_reply_to":"7a2fa921_34ce2c5b","updated":"2015-10-12 22:00:14.000000000","message":"Done","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6b976ad0e0f0add6a135b32f4edf639d814cd102","unresolved":false,"context_lines":[{"line_number":50,"context_line":"---------"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Deployment using Zookeeper servicegroup driver to manage service"},{"line_number":53,"context_line":"liveliness :"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"1. In this case, even though Zookeeper servicegroup"},{"line_number":56,"context_line":"driver will be used to report service liveliness. Service data will still"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_54d088c9","line":53,"updated":"2015-10-12 20:22:52.000000000","message":"This isn\u0027t worded as a use-case. Recommend something like:\n\n\"As an operator, I want to use zookeeper to achieve quick detection of service outages.\"\n\nThe same goes for the rest of the cases here, some of which doesn\u0027t belong in this section.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":50,"context_line":"---------"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Deployment using Zookeeper servicegroup driver to manage service"},{"line_number":53,"context_line":"liveliness :"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"1. In this case, even though Zookeeper servicegroup"},{"line_number":56,"context_line":"driver will be used to report service liveliness. Service data will still"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_e488ffc8","line":53,"in_reply_to":"7a2fa921_54d088c9","updated":"2015-10-12 22:00:14.000000000","message":"Sure done. Please check the next patch.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"2. An operator uses admin interface, nova-manage service disable, to"},{"line_number":60,"context_line":"mark a service down. Zookeeper won\u0027t be aware of this change and"},{"line_number":61,"context_line":"still thinks service is up and running."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"3. When Nova service delete(REST api) is invoked a SG api to leave()"},{"line_number":64,"context_line":"the group need to be invoked."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_415c45ed","line":61,"updated":"2015-10-12 20:57:51.000000000","message":"Well, you mention in the above that ZK and MC are buggy but that the spec won\u0027t change that, so I\u0027m not sure that the above usecase is right.\n\nInstead, I feel this spec is more a pure refactoring spec, needed for helping with the later move to Tooz that you want to provide in a separate spec.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"2. An operator uses admin interface, nova-manage service disable, to"},{"line_number":60,"context_line":"mark a service down. Zookeeper won\u0027t be aware of this change and"},{"line_number":61,"context_line":"still thinks service is up and running."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"3. When Nova service delete(REST api) is invoked a SG api to leave()"},{"line_number":64,"context_line":"the group need to be invoked."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_baff82a9","line":61,"in_reply_to":"7a2fa921_415c45ed","updated":"2015-10-12 22:00:14.000000000","message":"The point I wanted to make is the host should not be considered for scheduling when it is marked as disable. I have updated this in detail in upcoming patch","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6b976ad0e0f0add6a135b32f4edf639d814cd102","unresolved":false,"context_lines":[{"line_number":60,"context_line":"mark a service down. Zookeeper won\u0027t be aware of this change and"},{"line_number":61,"context_line":"still thinks service is up and running."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"3. When Nova service delete(REST api) is invoked a SG api to leave()"},{"line_number":64,"context_line":"the group need to be invoked."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Deployment using Database servicegroup driver to manage service"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_540ba87d","line":63,"range":{"start_line":63,"start_character":27,"end_line":63,"end_character":28},"updated":"2015-10-12 20:22:52.000000000","message":"Need a space here.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":60,"context_line":"mark a service down. Zookeeper won\u0027t be aware of this change and"},{"line_number":61,"context_line":"still thinks service is up and running."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"3. When Nova service delete(REST api) is invoked a SG api to leave()"},{"line_number":64,"context_line":"the group need to be invoked."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Deployment using Database servicegroup driver to manage service"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_e4aebfe6","line":63,"in_reply_to":"7a2fa921_540ba87d","updated":"2015-10-12 22:00:14.000000000","message":"Done","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6b976ad0e0f0add6a135b32f4edf639d814cd102","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Project Priority"},{"line_number":72,"context_line":"----------------"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"None"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_74eca48f","line":74,"updated":"2015-10-12 20:22:52.000000000","message":"This is no longer in the template and you can remove it.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Project Priority"},{"line_number":72,"context_line":"----------------"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"None"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_a4b8c72b","line":74,"in_reply_to":"7a2fa921_74eca48f","updated":"2015-10-12 22:00:14.000000000","message":"Keep it as it is since running unit test gave me error as\n\nAssertionError: While checking \u0027specs/mitaka/approved/servicegroup-api-control-plane.rst\u0027:\n  Section \u0027Problem description\u0027 is missing subsections: [u\u0027Project Priority\u0027]","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":80,"context_line":"1. Proposed change is to fetch service data from DB and verify service"},{"line_number":81,"context_line":"liveness using configured SG driver. The details of how the liveness"},{"line_number":82,"context_line":"will be configured by each driver is upto the implementation details"},{"line_number":83,"context_line":"of each SG driver. Point #3.2.2 has details for how the Zookeeper SG"},{"line_number":84,"context_line":"will compute it."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"2. By storing the Service data in the database but the liveliness"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_e1e6b115","line":83,"range":{"start_line":83,"start_character":56,"end_line":83,"end_character":68},"updated":"2015-10-12 20:57:51.000000000","message":"not sure it\u0027s a good idea to mention the drivers here. You don\u0027t really want to change the driver internals, just the interface","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":80,"context_line":"1. Proposed change is to fetch service data from DB and verify service"},{"line_number":81,"context_line":"liveness using configured SG driver. The details of how the liveness"},{"line_number":82,"context_line":"will be configured by each driver is upto the implementation details"},{"line_number":83,"context_line":"of each SG driver. Point #3.2.2 has details for how the Zookeeper SG"},{"line_number":84,"context_line":"will compute it."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"2. By storing the Service data in the database but the liveliness"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_7acb2a1f","line":83,"in_reply_to":"7a2fa921_e1e6b115","updated":"2015-10-12 22:00:14.000000000","message":"Not changing driver internals just mentioning more details. Since the existing version of these drivers are not usable so whatever change needs to get the API working.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":85,"context_line":""},{"line_number":86,"context_line":"2. By storing the Service data in the database but the liveliness"},{"line_number":87,"context_line":"information can be managed by the respective servicegroup driver configured"},{"line_number":88,"context_line":"will help in better transitioning to other drivers if we happen to move"},{"line_number":89,"context_line":"to other drivers (zk, mc) in future to store service information. Also,"},{"line_number":90,"context_line":"we have things like service version, which will require some efficient"},{"line_number":91,"context_line":"version calculations in order to drive things like compute rpc version"},{"line_number":92,"context_line":"pinning and object backporting. That can be done efficiently if the services"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_a1751933","line":89,"range":{"start_line":88,"start_character":51,"end_line":89,"end_character":64},"updated":"2015-10-12 20:57:51.000000000","message":"Well, we\u0027re only discussing about having the SG liveness information behind the same Facade, not talking about what could be default backend for the service information. That whole mid-term assumption is a bit preemptive, I guess, and should be removed.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":86,"context_line":"2. By storing the Service data in the database but the liveliness"},{"line_number":87,"context_line":"information can be managed by the respective servicegroup driver configured"},{"line_number":88,"context_line":"will help in better transitioning to other drivers if we happen to move"},{"line_number":89,"context_line":"to other drivers (zk, mc) in future to store service information. Also,"},{"line_number":90,"context_line":"we have things like service version, which will require some efficient"},{"line_number":91,"context_line":"version calculations in order to drive things like compute rpc version"},{"line_number":92,"context_line":"pinning and object backporting. That can be done efficiently if the services"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_1ab3160c","line":89,"in_reply_to":"7a2fa921_a1751933","updated":"2015-10-12 22:00:14.000000000","message":"Done","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":91,"context_line":"version calculations in order to drive things like compute rpc version"},{"line_number":92,"context_line":"pinning and object backporting. That can be done efficiently if the services"},{"line_number":93,"context_line":"data is stored in database (as database supports max/min functionality) as"},{"line_number":94,"context_line":"opposed to storing in Zookeeper or Memcache."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"3. Change for the liveliness API we could have two options like this :"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_41b445d0","line":94,"updated":"2015-10-12 20:57:51.000000000","message":"Again, I don\u0027t see the value of mentioning that point #2 because you\u0027re not speaking of changing where to store the service information.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":91,"context_line":"version calculations in order to drive things like compute rpc version"},{"line_number":92,"context_line":"pinning and object backporting. That can be done efficiently if the services"},{"line_number":93,"context_line":"data is stored in database (as database supports max/min functionality) as"},{"line_number":94,"context_line":"opposed to storing in Zookeeper or Memcache."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"3. Change for the liveliness API we could have two options like this :"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_9ac72664","line":94,"in_reply_to":"7a2fa921_41b445d0","updated":"2015-10-12 22:00:14.000000000","message":"Removed that specific portion","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6b976ad0e0f0add6a135b32f4edf639d814cd102","unresolved":false,"context_lines":[{"line_number":112,"context_line":"              in nova.services table."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"          #2. Check Service liveness depending upon the Zookeeper"},{"line_number":115,"context_line":"              SG driver or Memcache SG driver is_up() method."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"              #2.1: If Znode for the compute host has not joined"},{"line_number":118,"context_line":"                    the topic \u0027compute\u0027 then the nova-compute service"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_543ac8e8","line":115,"updated":"2015-10-12 20:22:52.000000000","message":"Separating these out is confusing and I think might be headed down the wrong direction as a result.\n\nIMHO, this should be something like:\n\n\"The Service object will be the interface by which we determine whether a service is up or down. It will necessarily look up the updated_at stamp like it does now, and will optionally consult an external interface (such as zookeeper) through a defined interface. If either indication results in a \"down\" verdict, the service will be considered down.\"","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":112,"context_line":"              in nova.services table."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"          #2. Check Service liveness depending upon the Zookeeper"},{"line_number":115,"context_line":"              SG driver or Memcache SG driver is_up() method."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"              #2.1: If Znode for the compute host has not joined"},{"line_number":118,"context_line":"                    the topic \u0027compute\u0027 then the nova-compute service"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_61dce118","line":115,"in_reply_to":"7a2fa921_543ac8e8","updated":"2015-10-12 20:57:51.000000000","message":"+1, the whole point #3 can be explained by Dan\u0027s proposal.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":112,"context_line":"              in nova.services table."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"          #2. Check Service liveness depending upon the Zookeeper"},{"line_number":115,"context_line":"              SG driver or Memcache SG driver is_up() method."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"              #2.1: If Znode for the compute host has not joined"},{"line_number":118,"context_line":"                    the topic \u0027compute\u0027 then the nova-compute service"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_d767b7e8","line":115,"in_reply_to":"7a2fa921_543ac8e8","updated":"2015-10-12 22:00:14.000000000","message":"Alongwith this text *explicitly* mentioned that both the below steps i.e. #1 \u0026\u0026 #2 will be needed to detect service liveness.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6b976ad0e0f0add6a135b32f4edf639d814cd102","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                    zookeeper/memcache SG driver has been covered"},{"line_number":124,"context_line":"                    in https://review.openstack.org/#/c/138607."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Please check `etherpad`_ for more details."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"4. A SG api to leave a group need to be introduced to the SG layer"},{"line_number":129,"context_line":"and will be implemented by backend drivers."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_af9f45b3","line":126,"updated":"2015-10-12 20:22:52.000000000","message":"Please don\u0027t link to random etherpads here. They are likely to not be up or the same as when you linked them for readers of this spec. Specs need to live for a long time, and thus linking to an etherpad is a bad idea, IMHO.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                    zookeeper/memcache SG driver has been covered"},{"line_number":124,"context_line":"                    in https://review.openstack.org/#/c/138607."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Please check `etherpad`_ for more details."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"4. A SG api to leave a group need to be introduced to the SG layer"},{"line_number":129,"context_line":"and will be implemented by backend drivers."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_97613fd6","line":126,"in_reply_to":"7a2fa921_af9f45b3","updated":"2015-10-12 22:00:14.000000000","message":"Done","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6b976ad0e0f0add6a135b32f4edf639d814cd102","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Please check `etherpad`_ for more details."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"4. A SG api to leave a group need to be introduced to the SG layer"},{"line_number":129,"context_line":"and will be implemented by backend drivers."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Alternatives"},{"line_number":132,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_af518510","line":129,"updated":"2015-10-12 20:22:52.000000000","message":"I think it\u0027s probably a good idea to define what this looks like, either here or in a proposed patch. I don\u0027t really see any reason not to make the join happen in the __init__() of the servicegroup driver being used, and the leave happen during teardown. In the case of zk, the ephemeral node goes away when the service disconnects, so we don\u0027t really need a teardown for it, do we?","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Please check `etherpad`_ for more details."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"4. A SG api to leave a group need to be introduced to the SG layer"},{"line_number":129,"context_line":"and will be implemented by backend drivers."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Alternatives"},{"line_number":132,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_4110c5a8","line":129,"in_reply_to":"7a2fa921_af518510","updated":"2015-10-12 20:57:51.000000000","message":"++ for providing a stub of what could be that interface, since that spec is mostly focusing on refining the interfaces.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Please check `etherpad`_ for more details."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"4. A SG api to leave a group need to be introduced to the SG layer"},{"line_number":129,"context_line":"and will be implemented by backend drivers."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Alternatives"},{"line_number":132,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_7799031f","line":129,"in_reply_to":"7a2fa921_af518510","updated":"2015-10-12 22:00:14.000000000","message":"I agree but for the first pass would like to have join() seperate that __init__().\n\nAlso you are right since the znodes are ephemeral (which means they will be destroyed when the service is disabled) but we need to expose something like leave() for memcache or someother driver we plan to add in future for managing services. The drivers that don\u0027t need this will just *pass* it (won\u0027t implement any specific logic).\n\nAdded leave() API example.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":181,"context_line":"Service live-ness is fetched from configured SG driver where as"},{"line_number":182,"context_line":"service details will be fetched from nova database nova.services"},{"line_number":183,"context_line":"tables. RPC live-ness will also be computed based on the data in"},{"line_number":184,"context_line":"nova.services table."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Implementation"},{"line_number":187,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_617861f9","line":184,"updated":"2015-10-12 20:57:51.000000000","message":"not sure it\u0027s worth mentioning that","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":181,"context_line":"Service live-ness is fetched from configured SG driver where as"},{"line_number":182,"context_line":"service details will be fetched from nova database nova.services"},{"line_number":183,"context_line":"tables. RPC live-ness will also be computed based on the data in"},{"line_number":184,"context_line":"nova.services table."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Implementation"},{"line_number":187,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_5aed0e8d","line":184,"in_reply_to":"7a2fa921_617861f9","updated":"2015-10-12 22:00:14.000000000","message":"It is","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":202,"context_line":"- Fix admin interface, nova-manage where a service is_up/is_down"},{"line_number":203,"context_line":"  will depend on the combination of service live-ness depending on"},{"line_number":204,"context_line":"  what SG driver is configured and RPC live-ness computed based of"},{"line_number":205,"context_line":"  information stored in nova.services table."},{"line_number":206,"context_line":"- Introduce an additional attribute is_up to nova.objects.service."},{"line_number":207,"context_line":"- Introduce leave() API at the SG layer to make sure when a service"},{"line_number":208,"context_line":"  is deleted in situations where service live-ness is maintained by"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_41d525b7","line":205,"updated":"2015-10-12 20:57:51.000000000","message":"that step can\u0027t be done before the step below, please rearrange the work items correctly","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":202,"context_line":"- Fix admin interface, nova-manage where a service is_up/is_down"},{"line_number":203,"context_line":"  will depend on the combination of service live-ness depending on"},{"line_number":204,"context_line":"  what SG driver is configured and RPC live-ness computed based of"},{"line_number":205,"context_line":"  information stored in nova.services table."},{"line_number":206,"context_line":"- Introduce an additional attribute is_up to nova.objects.service."},{"line_number":207,"context_line":"- Introduce leave() API at the SG layer to make sure when a service"},{"line_number":208,"context_line":"  is deleted in situations where service live-ness is maintained by"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_3aecd28e","line":205,"in_reply_to":"7a2fa921_41d525b7","updated":"2015-10-12 22:00:14.000000000","message":"sure.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":203,"context_line":"  will depend on the combination of service live-ness depending on"},{"line_number":204,"context_line":"  what SG driver is configured and RPC live-ness computed based of"},{"line_number":205,"context_line":"  information stored in nova.services table."},{"line_number":206,"context_line":"- Introduce an additional attribute is_up to nova.objects.service."},{"line_number":207,"context_line":"- Introduce leave() API at the SG layer to make sure when a service"},{"line_number":208,"context_line":"  is deleted in situations where service live-ness is maintained by"},{"line_number":209,"context_line":"  backends other than db, the znode or the associated structure for"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_415e8577","line":206,"range":{"start_line":206,"start_character":15,"end_line":206,"end_character":35},"updated":"2015-10-12 20:57:51.000000000","message":"since you said it\u0027s an attribute, how can it be updated with the correct state ? Or were you thinking of a property ?","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"dcae4e2ae0764dea23a3c1fa25156be3b1387fea","unresolved":false,"context_lines":[{"line_number":203,"context_line":"  will depend on the combination of service live-ness depending on"},{"line_number":204,"context_line":"  what SG driver is configured and RPC live-ness computed based of"},{"line_number":205,"context_line":"  information stored in nova.services table."},{"line_number":206,"context_line":"- Introduce an additional attribute is_up to nova.objects.service."},{"line_number":207,"context_line":"- Introduce leave() API at the SG layer to make sure when a service"},{"line_number":208,"context_line":"  is deleted in situations where service live-ness is maintained by"},{"line_number":209,"context_line":"  backends other than db, the znode or the associated structure for"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_da5d9e49","line":206,"in_reply_to":"7a2fa921_415e8577","updated":"2015-10-12 22:00:14.000000000","message":"If it helps to say that it will be allowed to get/set then yes you can call it as a property.","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"acbe7a18dcf13a354a5735143d214e786cadee10","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"1. Existing unit tests will be updated to make sure the services"},{"line_number":222,"context_line":"   data is fetched from nova.services tables and live-ness using"},{"line_number":223,"context_line":"   servicegroup API."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_e12471c7","line":223,"updated":"2015-10-12 20:57:51.000000000","message":"well, that\u0027s a pleonasm, nope ? :-)","commit_id":"c485639fb04adbdb854105199970c1639a1e3c78"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"6a5b666e7e0682ad4b7f7052ab76746be4d101ee","unresolved":false,"context_lines":[{"line_number":16,"context_line":"layer API is_up() to get details about service liveness. The proposal"},{"line_number":17,"context_line":"is keep service data in nova database nova.services table and fetch"},{"line_number":18,"context_line":"the liveness information from the configured servicegroup(SG) driver."},{"line_number":19,"context_line":"Liveness will be a combination of service liveness and RPC liveness,"},{"line_number":20,"context_line":"where the latter will be computed based on information in nova.services."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_d5724f49","line":19,"updated":"2015-10-12 22:23:47.000000000","message":":( sadface\n\nI still don\u0027t like 2 sources of liveness information, but I guess this is step #1 of many...","commit_id":"3eda67da1423c3eba86cf62b20c9823d60c6174c"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"6a5b666e7e0682ad4b7f7052ab76746be4d101ee","unresolved":false,"context_lines":[{"line_number":44,"context_line":"liveness. Service liveness will be implemented by the respective"},{"line_number":45,"context_line":"SG driver and depending whether the service is up/down a boolean will"},{"line_number":46,"context_line":"be returned. Whereas to check rpc liveness Nova will still rely on"},{"line_number":47,"context_line":"the nova.services table stored in Nova database."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Use Cases"},{"line_number":50,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_5502bf70","line":47,"updated":"2015-10-12 22:23:47.000000000","message":"Is this really sufficient? If RPC liveness means responding to RPC requests/responses, then how does having an entry in a database ensure RPC liveness; it seems like it gives a confidence that it will work, but isn\u0027t really a guarantee, the only guarantee that I can think of is to call the RPC target, and if it doesn\u0027t respond, then its dead, otherwise its not. Probably I am stating the obvious, but thought I\u0027d mention it anyway.","commit_id":"3eda67da1423c3eba86cf62b20c9823d60c6174c"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"6a5b666e7e0682ad4b7f7052ab76746be4d101ee","unresolved":false,"context_lines":[{"line_number":84,"context_line":"of each SG driver. Point #3.2.2 has details for how the Zookeeper SG"},{"line_number":85,"context_line":"will compute it."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"2. By storing the Service data in the database but the liveness"},{"line_number":88,"context_line":"information can be managed by the respective servicegroup driver"},{"line_number":89,"context_line":"configured. Also, we have things like service version, which will require"},{"line_number":90,"context_line":"some efficient version calculations in order to drive things like compute"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_b51f93b6","line":87,"updated":"2015-10-12 22:23:47.000000000","message":"Seems like only half of the liveness data is stored in a service group right? If there are now 2 concepts of liveness, then its probably worthwhile denoting which one is which when referring to \u0027liveness\u0027 in this spec.","commit_id":"3eda67da1423c3eba86cf62b20c9823d60c6174c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e3c208c679dc28c199fba211b0fc2f41a1113c66","unresolved":false,"context_lines":[{"line_number":58,"context_line":"mark a service down. Zookeeper won\u0027t be aware of this change and"},{"line_number":59,"context_line":"still thinks service is up and running. Although since the service for"},{"line_number":60,"context_line":"a specific compute is marked as down it won\u0027t be considered for"},{"line_number":61,"context_line":"scheduling by the nova-scheduler."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"3. As an operator, I want to be sure that when Nova service"},{"line_number":64,"context_line":"delete (REST api) is invoked the service record from respective backend"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_3c2cb001","line":61,"updated":"2015-10-14 18:45:13.000000000","message":"I don\u0027t get that usecase. That\u0027s already what we have in place with forced_down, right ?","commit_id":"1962bcad6edcb0945b8e4389c9f5d2f9488f845b"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"4925793bf5f2ffb97e4e0512c93c1952e6b8ea34","unresolved":false,"context_lines":[{"line_number":58,"context_line":"mark a service down. Zookeeper won\u0027t be aware of this change and"},{"line_number":59,"context_line":"still thinks service is up and running. Although since the service for"},{"line_number":60,"context_line":"a specific compute is marked as down it won\u0027t be considered for"},{"line_number":61,"context_line":"scheduling by the nova-scheduler."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"3. As an operator, I want to be sure that when Nova service"},{"line_number":64,"context_line":"delete (REST api) is invoked the service record from respective backend"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_ff15c19a","line":61,"in_reply_to":"5a2ca52d_3c2cb001","updated":"2015-10-14 19:34:56.000000000","message":"Sure. Removed it. Although I still fee other 2 cases are important. Will definitely spell it out that its a refactoring effort.","commit_id":"1962bcad6edcb0945b8e4389c9f5d2f9488f845b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e3c208c679dc28c199fba211b0fc2f41a1113c66","unresolved":false,"context_lines":[{"line_number":69,"context_line":"liveness will remain the same apart from including the logic to include"},{"line_number":70,"context_line":"is_up as service object attribute and computing as proposed in the"},{"line_number":71,"context_line":"\"Proposed change\" section."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Project Priority"},{"line_number":74,"context_line":"----------------"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_dcd7bcbd","line":72,"updated":"2015-10-14 18:45:13.000000000","message":"Well, since it seems like a refactoring effort, I\u0027m really not sure there are visible usecases for operators. I mean, what UX change do you see ?\n\nPutting N/A just seems pretty good, no need to paraphrase something that you explain below.","commit_id":"1962bcad6edcb0945b8e4389c9f5d2f9488f845b"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"4925793bf5f2ffb97e4e0512c93c1952e6b8ea34","unresolved":false,"context_lines":[{"line_number":69,"context_line":"liveness will remain the same apart from including the logic to include"},{"line_number":70,"context_line":"is_up as service object attribute and computing as proposed in the"},{"line_number":71,"context_line":"\"Proposed change\" section."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Project Priority"},{"line_number":74,"context_line":"----------------"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_ff63813f","line":72,"in_reply_to":"5a2ca52d_dcd7bcbd","updated":"2015-10-14 19:34:56.000000000","message":"Will definitely spell it out that its a refactoring effort.","commit_id":"1962bcad6edcb0945b8e4389c9f5d2f9488f845b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e3c208c679dc28c199fba211b0fc2f41a1113c66","unresolved":false,"context_lines":[{"line_number":103,"context_line":"              in nova.services table."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"          #2. Check Service liveness depending upon the SG database"},{"line_number":106,"context_line":"              drivers is_up() method."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        B] For Zookeeper/Memcache SG drivers:"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_d1d47ebe","line":106,"updated":"2015-10-14 18:45:13.000000000","message":"Again, I don\u0027t see why you need to separate the DB driver from the other SG drivers, since the below behaviour should be identical for all of them","commit_id":"1962bcad6edcb0945b8e4389c9f5d2f9488f845b"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"4925793bf5f2ffb97e4e0512c93c1952e6b8ea34","unresolved":false,"context_lines":[{"line_number":103,"context_line":"              in nova.services table."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"          #2. Check Service liveness depending upon the SG database"},{"line_number":106,"context_line":"              drivers is_up() method."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        B] For Zookeeper/Memcache SG drivers:"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_bfd429bd","line":106,"in_reply_to":"5a2ca52d_d1d47ebe","updated":"2015-10-14 19:34:56.000000000","message":"The only thing I want to spell it out clearly here is \n\nHow will is_up be computed when CONF.sg_driver \u003d db\n\nwhereas \n\nHow will is_up be computed when CONF.sg_driver \u003d zk/mc\n\n\nA] when CONF.sg_driver \u003d db then \n\n#1. RPC liveness still computed by DB\n\n#2. Service liveness computed by values in nova db, nova.services\n\nB] when CONF.sg_driver \u003d zk/mc then \n\n#1. RPC liveness still computed by DB\n\n#2. Service liveness computed by zk/mc depending on which one is chosen.","commit_id":"1962bcad6edcb0945b8e4389c9f5d2f9488f845b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e3c208c679dc28c199fba211b0fc2f41a1113c66","unresolved":false,"context_lines":[{"line_number":120,"context_line":"          #1. Check RPC liveness using the updated_at attribute"},{"line_number":121,"context_line":"              in nova.services table."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"          #2. Check Service liveness depending upon the Zookeeper"},{"line_number":124,"context_line":"              SG driver or Memcache SG driver is_up() method."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"              #2.1: If Znode for the compute host has not joined"},{"line_number":127,"context_line":"                    the topic \u0027compute\u0027 then the nova-compute service"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_3159325b","line":124,"range":{"start_line":123,"start_character":56,"end_line":124,"end_character":53},"updated":"2015-10-14 18:45:13.000000000","message":"see my comment above, I don\u0027t see why we should have a different behaviour for the DB driver...","commit_id":"1962bcad6edcb0945b8e4389c9f5d2f9488f845b"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"4925793bf5f2ffb97e4e0512c93c1952e6b8ea34","unresolved":false,"context_lines":[{"line_number":121,"context_line":"              in nova.services table."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"          #2. Check Service liveness depending upon the Zookeeper"},{"line_number":124,"context_line":"              SG driver or Memcache SG driver is_up() method."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"              #2.1: If Znode for the compute host has not joined"},{"line_number":127,"context_line":"                    the topic \u0027compute\u0027 then the nova-compute service"}],"source_content_type":"text/x-rst","patch_set":9,"id":"5a2ca52d_3ff81949","line":124,"in_reply_to":"5a2ca52d_3159325b","updated":"2015-10-14 19:34:56.000000000","message":"when CONF.sg_driver \u003d zk/mc then \n\n#1. RPC liveness still computed by DB\n#2. Service liveness computed by zk/mc depending on which one is chosen.","commit_id":"1962bcad6edcb0945b8e4389c9f5d2f9488f845b"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"04aa0a36f92a2e7fd7d22279f53e5ae6d0d5925f","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"1. Making sure the 2 separate interfaces mentioned above namely the"},{"line_number":39,"context_line":"REST API interface and admin interface use the servicegroup layer API"},{"line_number":40,"context_line":"while fetching service liveness."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"2. Service.is_up will be an attribute for the Service object which"},{"line_number":43,"context_line":"will be computed as a combination of service liveness and rpc"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_145f3fe6","line":40,"updated":"2015-10-14 21:27:39.000000000","message":"Great.","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"04aa0a36f92a2e7fd7d22279f53e5ae6d0d5925f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"liveness. Service liveness will be implemented by the respective"},{"line_number":45,"context_line":"SG driver and depending whether the service is up/down a boolean will"},{"line_number":46,"context_line":"be returned. Whereas to check rpc liveness Nova will still rely on"},{"line_number":47,"context_line":"the nova.services table stored in Nova database."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Use Cases"},{"line_number":50,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_1475ff96","line":47,"updated":"2015-10-14 21:27:39.000000000","message":"My understanding is: \n*The SG api will store information in the services table.\n*The SG drivers will only deal with liveness information.\n*The is_up method will be called on the SG api and will use a combination\nof services table info and SG driver liveness.\n\nEven if I got that all right, i\u0027m not sure its completely clear.","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5ebf4e71a55ed4fa2115ac7098c9b17ae536e455","unresolved":false,"context_lines":[{"line_number":44,"context_line":"liveness. Service liveness will be implemented by the respective"},{"line_number":45,"context_line":"SG driver and depending whether the service is up/down a boolean will"},{"line_number":46,"context_line":"be returned. Whereas to check rpc liveness Nova will still rely on"},{"line_number":47,"context_line":"the nova.services table stored in Nova database."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Use Cases"},{"line_number":50,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_184bbc2b","line":47,"in_reply_to":"5a2ca52d_1475ff96","updated":"2015-10-15 21:41:29.000000000","message":"RPC liveness will be computed depending on nova.service.updated_at\n\n\nService liveness will be computed depending on CONF.sg_driver is_up","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"04aa0a36f92a2e7fd7d22279f53e5ae6d0d5925f","unresolved":false,"context_lines":[{"line_number":55,"context_line":"1. As an operator, I want to use zookeeper to achieve quick detection"},{"line_number":56,"context_line":"of service outages. Zookeeper servicegroup driver will be used to report"},{"line_number":57,"context_line":"service liveness although service data will still reside in"},{"line_number":58,"context_line":"nova.services."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"2. As an operator, I want to be sure that when Nova service"},{"line_number":61,"context_line":"delete (REST api) is invoked the service record from respective backend"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_e063de18","line":58,"updated":"2015-10-14 21:27:39.000000000","message":"What is the purpose of using Zookeeper in this case? Is it speed alone? As I understand the above description nova will still be writing to the services db table as often as before. And the services db table will still be read on every call to is_up. (As it will use a combination of driver and db data to determine liveness).\n\nIn this situation what is the addition of Zookeeper giving us? Surely it isn\u0027t going to help with scaling when the same amount of database accesses are happening as before. Is it just that the zookeeper liveness check will happen quicker than before / more accurately / reliably than before?\n\nI suppose that could help if the scheduler is placing to unavailable nodes less often.","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5ebf4e71a55ed4fa2115ac7098c9b17ae536e455","unresolved":false,"context_lines":[{"line_number":55,"context_line":"1. As an operator, I want to use zookeeper to achieve quick detection"},{"line_number":56,"context_line":"of service outages. Zookeeper servicegroup driver will be used to report"},{"line_number":57,"context_line":"service liveness although service data will still reside in"},{"line_number":58,"context_line":"nova.services."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"2. As an operator, I want to be sure that when Nova service"},{"line_number":61,"context_line":"delete (REST api) is invoked the service record from respective backend"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_d6a8b422","line":58,"in_reply_to":"5a2ca52d_a3916b54","updated":"2015-10-15 21:41:29.000000000","message":"Agree with what Josh just said above. Initially the plan was as discussed here http://lists.openstack.org/pipermail/openstack-dev/2015-May/063602.html\n\nFor now with this spec we will just get the is_up (Service liveness) from the configured CONG.sg_driver. Eventually would like to get more details specific to service being stored in respective sg_driver","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"c4453e6d8541f8f0a5c76d80242cfd485cfa8be5","unresolved":false,"context_lines":[{"line_number":55,"context_line":"1. As an operator, I want to use zookeeper to achieve quick detection"},{"line_number":56,"context_line":"of service outages. Zookeeper servicegroup driver will be used to report"},{"line_number":57,"context_line":"service liveness although service data will still reside in"},{"line_number":58,"context_line":"nova.services."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"2. As an operator, I want to be sure that when Nova service"},{"line_number":61,"context_line":"delete (REST api) is invoked the service record from respective backend"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_a3916b54","line":58,"in_reply_to":"5a2ca52d_e063de18","updated":"2015-10-15 00:28:43.000000000","message":"Yup, that\u0027s my question to.\n\nThis specficiation started off differently, but now it still retains the old mechanism, and still uses it, along with a new mechanism. Is this just step #1 of many (where a later step will be to get rid of the other liveness check that is still using the database?); IMHO calling the database timestamps as RPC liveness is inaccurate but I\u0027ll avoid that debate...","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"04aa0a36f92a2e7fd7d22279f53e5ae6d0d5925f","unresolved":false,"context_lines":[{"line_number":60,"context_line":"2. As an operator, I want to be sure that when Nova service"},{"line_number":61,"context_line":"delete (REST api) is invoked the service record from respective backend"},{"line_number":62,"context_line":"either Zookeeper or Memcache is removed. A SG api to leave() the group, which"},{"line_number":63,"context_line":"will be added as part of this change, will be invoked."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Deployment using Database servicegroup driver to manage service"},{"line_number":66,"context_line":"liveness will remain the same apart from including the logic to include"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_7468f387","line":63,"updated":"2015-10-14 21:27:39.000000000","message":"Again, not sure why having this info in zookeeper rather than the database is attractive.","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5ebf4e71a55ed4fa2115ac7098c9b17ae536e455","unresolved":false,"context_lines":[{"line_number":60,"context_line":"2. As an operator, I want to be sure that when Nova service"},{"line_number":61,"context_line":"delete (REST api) is invoked the service record from respective backend"},{"line_number":62,"context_line":"either Zookeeper or Memcache is removed. A SG api to leave() the group, which"},{"line_number":63,"context_line":"will be added as part of this change, will be invoked."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Deployment using Database servicegroup driver to manage service"},{"line_number":66,"context_line":"liveness will remain the same apart from including the logic to include"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_b63898f0","line":63,"in_reply_to":"5a2ca52d_7468f387","updated":"2015-10-15 21:41:29.000000000","message":"As mentioned above we will start with service liveness monitored by sg_driver. And hence keeping this information in sg_driver.","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"c04f10f44b41e3f810ea9a9ea671f0930b1bb662","unresolved":false,"context_lines":[{"line_number":75,"context_line":"Proposed change"},{"line_number":76,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"1. Proposed change is to fetch service data from DB and verify service"},{"line_number":79,"context_line":"liveness using configured SG driver. The details of how the liveness"},{"line_number":80,"context_line":"will be configured by each driver is upto the implementation details"},{"line_number":81,"context_line":"of each SG driver. Point #3.2.2 has details for how the Zookeeper SG"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_c3b027e0","line":78,"updated":"2015-10-15 00:31:08.000000000","message":"There are 2 concepts of liveness here now so whenever liveness is mentioned it really needs to specific which one (or if its combining both, say that explicitly). Otherwise I have no idea which liveness u are talking about here.","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5ebf4e71a55ed4fa2115ac7098c9b17ae536e455","unresolved":false,"context_lines":[{"line_number":75,"context_line":"Proposed change"},{"line_number":76,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"1. Proposed change is to fetch service data from DB and verify service"},{"line_number":79,"context_line":"liveness using configured SG driver. The details of how the liveness"},{"line_number":80,"context_line":"will be configured by each driver is upto the implementation details"},{"line_number":81,"context_line":"of each SG driver. Point #3.2.2 has details for how the Zookeeper SG"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_16286c99","line":78,"in_reply_to":"5a2ca52d_83cb0f53","updated":"2015-10-15 21:41:29.000000000","message":"Done","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"5524ec694e38bbc9439c6aaa505c8a239963c3cf","unresolved":false,"context_lines":[{"line_number":75,"context_line":"Proposed change"},{"line_number":76,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"1. Proposed change is to fetch service data from DB and verify service"},{"line_number":79,"context_line":"liveness using configured SG driver. The details of how the liveness"},{"line_number":80,"context_line":"will be configured by each driver is upto the implementation details"},{"line_number":81,"context_line":"of each SG driver. Point #3.2.2 has details for how the Zookeeper SG"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_83cb0f53","line":78,"in_reply_to":"5a2ca52d_c3b027e0","updated":"2015-10-15 00:31:26.000000000","message":"*specific -\u003e specify","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5ebf4e71a55ed4fa2115ac7098c9b17ae536e455","unresolved":false,"context_lines":[{"line_number":75,"context_line":"Proposed change"},{"line_number":76,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"1. Proposed change is to fetch service data from DB and verify service"},{"line_number":79,"context_line":"liveness using configured SG driver. The details of how the liveness"},{"line_number":80,"context_line":"will be configured by each driver is upto the implementation details"},{"line_number":81,"context_line":"of each SG driver. Point #3.2.2 has details for how the Zookeeper SG"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_994fcd6a","line":78,"in_reply_to":"5a2ca52d_c3b027e0","updated":"2015-10-15 21:41:29.000000000","message":"Sure. Will be more specific in next patch.","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"36a06c4d4e34f9a8a01c957baa9b58841eb873a2","unresolved":false,"context_lines":[{"line_number":81,"context_line":"of each SG driver. Point #3.2.2 has details for how the Zookeeper SG"},{"line_number":82,"context_line":"will compute it."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"2. By storing the Service data in the database but the liveness"},{"line_number":85,"context_line":"information can be managed by the respective servicegroup driver"},{"line_number":86,"context_line":"configured. Also, we have things like service version, which will require"},{"line_number":87,"context_line":"some efficient version calculations in order to drive things like compute"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_c3d107cf","line":84,"updated":"2015-10-15 00:39:46.000000000","message":"Which liveness is this referring to?","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5ebf4e71a55ed4fa2115ac7098c9b17ae536e455","unresolved":false,"context_lines":[{"line_number":81,"context_line":"of each SG driver. Point #3.2.2 has details for how the Zookeeper SG"},{"line_number":82,"context_line":"will compute it."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"2. By storing the Service data in the database but the liveness"},{"line_number":85,"context_line":"information can be managed by the respective servicegroup driver"},{"line_number":86,"context_line":"configured. Also, we have things like service version, which will require"},{"line_number":87,"context_line":"some efficient version calculations in order to drive things like compute"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_56102459","line":84,"in_reply_to":"5a2ca52d_c3d107cf","updated":"2015-10-15 21:41:29.000000000","message":"This is service liveness.","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"04aa0a36f92a2e7fd7d22279f53e5ae6d0d5925f","unresolved":false,"context_lines":[{"line_number":237,"context_line":"1. Existing unit tests will be updated to make sure the services"},{"line_number":238,"context_line":"   data is fetched from nova.services tables and liveness using"},{"line_number":239,"context_line":"   servicegroup API."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"Documentation Impact"},{"line_number":243,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_34befbd4","line":240,"updated":"2015-10-14 21:27:39.000000000","message":"Don\u0027t we also need the addition of CI tests for zookeeper and memcache SG drivers?","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":10263,"name":"Vilobh Meshram","email":"vilobhmm@yahoo-inc.com","username":"vilobhmm"},"change_message_id":"5ebf4e71a55ed4fa2115ac7098c9b17ae536e455","unresolved":false,"context_lines":[{"line_number":237,"context_line":"1. Existing unit tests will be updated to make sure the services"},{"line_number":238,"context_line":"   data is fetched from nova.services tables and liveness using"},{"line_number":239,"context_line":"   servicegroup API."},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"Documentation Impact"},{"line_number":243,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5a2ca52d_f6013007","line":240,"in_reply_to":"5a2ca52d_34befbd4","updated":"2015-10-15 21:41:29.000000000","message":"I think tooz has testing for it. But sure.","commit_id":"5a1a8c36b6015ae1e3973c98626febfdcb25615b"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"e680545ad400626125aaad2950c945b746ab001c","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Right now other SG drivers are not functional and need to be"},{"line_number":33,"context_line":"revamped to allow them be involved in giving details about service"},{"line_number":34,"context_line":"liveness. That will be covered as part of separate spec."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"The scope of this spec is limited to :-"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_d9746f69","line":34,"updated":"2015-10-21 02:12:48.000000000","message":"I assume that spec is https://review.openstack.org/#/c/222422 which now depends on this one.","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2f0846d332cd6cefa864c7846a80614e4d98f498","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Right now other SG drivers are not functional and need to be"},{"line_number":33,"context_line":"revamped to allow them be involved in giving details about service"},{"line_number":34,"context_line":"liveness. That will be covered as part of separate spec."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"The scope of this spec is limited to :-"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa80f949_4f643021","line":34,"in_reply_to":"3a29b11f_d9746f69","updated":"2015-11-05 20:59:49.000000000","message":"Right","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2f0846d332cd6cefa864c7846a80614e4d98f498","unresolved":false,"context_lines":[{"line_number":44,"context_line":"liveness. Service liveness will be implemented by the respective"},{"line_number":45,"context_line":"SG driver and depending whether the service is up/down a boolean will"},{"line_number":46,"context_line":"be returned. Whereas to check rpc liveness Nova will still rely on"},{"line_number":47,"context_line":"the nova.services table stored in Nova database."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Use Cases"},{"line_number":50,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa80f949_2f168c55","line":47,"updated":"2015-11-05 20:59:49.000000000","message":"I just feel the whole above paragraph is redundant with what you said in the abstract (L13-20) but that\u0027s a nit.","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"619136951ea88140e4d47d43df68083facefc7b7","unresolved":false,"context_lines":[{"line_number":45,"context_line":"SG driver and depending whether the service is up/down a boolean will"},{"line_number":46,"context_line":"be returned. Whereas to check rpc liveness Nova will still rely on"},{"line_number":47,"context_line":"the nova.services table stored in Nova database."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Use Cases"},{"line_number":50,"context_line":"---------"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_fd96cd3c","line":48,"updated":"2015-10-21 18:04:51.000000000","message":"Would it be a good idea to make the use of nova.services to check RPC liveness optional? Is there a better way to check RPC liveness than accessing nova.services? Send a \u0027nonce\u0027 message?","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2f0846d332cd6cefa864c7846a80614e4d98f498","unresolved":false,"context_lines":[{"line_number":45,"context_line":"SG driver and depending whether the service is up/down a boolean will"},{"line_number":46,"context_line":"be returned. Whereas to check rpc liveness Nova will still rely on"},{"line_number":47,"context_line":"the nova.services table stored in Nova database."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Use Cases"},{"line_number":50,"context_line":"---------"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa80f949_aa16eaee","line":48,"in_reply_to":"3a29b11f_a156eb59","updated":"2015-11-05 20:59:49.000000000","message":"It\u0027s just about keeping the same level of behavioural verification : since the compute nodes were updating their state periodically by using the conductor, it meant that if the MQ was saying bye-bye, the compute was seen down.\n\nProviding a way to only check the liveness by ZK means that there could be some possibility that the compute node would be seen as up while the MQ is down. By adding a way to verify the DB updated state, we keep the behaviour I mentioned.\n\nNo need to use gross words ;-)","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d6666212e1abff049afa21c7a6846c600258d769","unresolved":false,"context_lines":[{"line_number":45,"context_line":"SG driver and depending whether the service is up/down a boolean will"},{"line_number":46,"context_line":"be returned. Whereas to check rpc liveness Nova will still rely on"},{"line_number":47,"context_line":"the nova.services table stored in Nova database."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Use Cases"},{"line_number":50,"context_line":"---------"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_a156eb59","line":48,"in_reply_to":"3a29b11f_fd96cd3c","updated":"2015-10-21 21:41:47.000000000","message":"How does that guarantee a service is up before u send a message to it? To me u either have to enable reliable messaging and send it and let the MQ broker deal with actually delivering it (to a host that may be dead, or may be down...) or u have to accept that 100% accurate RPC liveness is a fantasy/dream and be able to handle that. Pretty sure the CAP theorum can get involved here, but let\u0027s not go there...","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"782a198dc48f96ebb27ec60464e1e4497db0f9a4","unresolved":false,"context_lines":[{"line_number":45,"context_line":"SG driver and depending whether the service is up/down a boolean will"},{"line_number":46,"context_line":"be returned. Whereas to check rpc liveness Nova will still rely on"},{"line_number":47,"context_line":"the nova.services table stored in Nova database."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Use Cases"},{"line_number":50,"context_line":"---------"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a740942_23d607c6","line":48,"in_reply_to":"fa80f949_aa16eaee","updated":"2015-12-03 21:50:20.000000000","message":"Fair enough, just RPC saying its up at time X doesn\u0027t guarantee that at time X + 1 that the MQ will still be up. So that\u0027s why the fantasy/dream is that this RPC ping/pong message actually implies liveness (it doesn\u0027t).","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"e680545ad400626125aaad2950c945b746ab001c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"1. Proposed change is to fetch service data from DB and verify service"},{"line_number":79,"context_line":"liveness using configured SG driver. The details of how the service"},{"line_number":80,"context_line":"liveness will be configured by each driver is upto the implementation"},{"line_number":81,"context_line":"details of each SG driver. Point #3.2.2 has details for how the Zookeeper"},{"line_number":82,"context_line":"SG will compute it."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"2. By storing the Service data in the database but the service liveness"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_d9b1cf48","line":81,"range":{"start_line":81,"start_character":33,"end_line":81,"end_character":39},"updated":"2015-10-21 02:12:48.000000000","message":"I\u0027m not certain what this refers to.  I think it\u0027s the \u0027mark\u0027 below","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2f0846d332cd6cefa864c7846a80614e4d98f498","unresolved":false,"context_lines":[{"line_number":102,"context_line":"          #2. Check Service liveness depending upon the SG database"},{"line_number":103,"context_line":"              drivers is_up() method."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        B] For Zookeeper/Memcache SG drivers:"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"          The Service object will be the interface by which we determine"},{"line_number":108,"context_line":"          whether a service is up or down. It will necessarily look up the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa80f949_8ac9a67a","line":105,"updated":"2015-11-05 20:59:49.000000000","message":"I feel that A) and B) cases are confusing. We just want to have one single facade for all the drivers, right?","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"e680545ad400626125aaad2950c945b746ab001c","unresolved":false,"context_lines":[{"line_number":117,"context_line":"          #1. Check RPC liveness using the updated_at attribute"},{"line_number":118,"context_line":"              in nova.services table."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"          #2. Check Service liveness depending upon the Zookeeper"},{"line_number":121,"context_line":"              SG driver or Memcache SG driver is_up() method."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"              #2.1: If Znode for the compute host has not joined"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_99b7d739","line":120,"updated":"2015-10-21 02:12:48.000000000","message":"mark","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2f0846d332cd6cefa864c7846a80614e4d98f498","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                    the service representational state and how to migrate"},{"line_number":128,"context_line":"                    from existing database servicegroup driver to"},{"line_number":129,"context_line":"                    zookeeper/memcache SG driver has been covered"},{"line_number":130,"context_line":"                    in https://review.openstack.org/#/c/138607."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"4. A SG api to leave a group need to be introduced to the SG layer"},{"line_number":133,"context_line":"and will be implemented by backend drivers. The drivers that don\u0027t need"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa80f949_4a909e43","line":130,"updated":"2015-11-05 20:59:49.000000000","message":"I just feel all of the above (L94-130) makes things confusing while the proposed change is pretty simple :\n- verify updated_at anyway\n- call driver.is_up() whatever the driver is (incl. DB)","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b4fc031e318f3ac2389dd83d7a0765dd56affd81","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                    the service representational state and how to migrate"},{"line_number":128,"context_line":"                    from existing database servicegroup driver to"},{"line_number":129,"context_line":"                    zookeeper/memcache SG driver has been covered"},{"line_number":130,"context_line":"                    in https://review.openstack.org/#/c/138607."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"4. A SG api to leave a group need to be introduced to the SG layer"},{"line_number":133,"context_line":"and will be implemented by backend drivers. The drivers that don\u0027t need"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a740942_f6a9a2e0","line":130,"in_reply_to":"fa80f949_4a909e43","updated":"2015-12-03 20:55:25.000000000","message":"Agreed. The whole block of pseudocode is replaced by Sylvain\u0027s two bullet points. Since I think that\u0027s what they\u0027re actually saying, I won\u0027t block this given the deadline, but I think that we can replace almost all of it.","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"79478c25b3c4a39ea59e82d5ab7c7aea3dda1205","unresolved":false,"context_lines":[{"line_number":148,"context_line":"service liveness. Whereas at the object layer is_up will be computed as"},{"line_number":149,"context_line":"a combination of when the service record was last updated which will give"},{"line_number":150,"context_line":"details about RPC liveness and querying the respective CONF.sg_driver"},{"line_number":151,"context_line":"for service liveness."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Alternatives"},{"line_number":154,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa80f949_daa6ab52","line":151,"updated":"2015-11-05 16:33:05.000000000","message":"So in reality, I suspect we might need to bulk fetch this data when listing out all the compute services in the scheduler, but the concept is sound, thats just some light caching for efficiency reasons. Anyways, ignore my comment, its an implementation detail.","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"2f0846d332cd6cefa864c7846a80614e4d98f498","unresolved":false,"context_lines":[{"line_number":229,"context_line":"- Introduce leave() API at the SG layer to make sure when a service"},{"line_number":230,"context_line":"  is deleted in situations where service liveness is maintained by"},{"line_number":231,"context_line":"  backends other than db, the znode or the associated structure for"},{"line_number":232,"context_line":"  the service is freed up."},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"Dependencies"},{"line_number":235,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa80f949_cacb2e52","line":232,"updated":"2015-11-05 20:59:49.000000000","message":"I would feel that adding leave() should be done before modifying the callers (nova-manage, admin if) but that\u0027s yakshaving","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"e680545ad400626125aaad2950c945b746ab001c","unresolved":false,"context_lines":[{"line_number":258,"context_line":"- https://review.openstack.org/#/c/138607"},{"line_number":259,"context_line":"- http://lists.openstack.org/pipermail/openstack-dev/2015-September/075267.html"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":".. _etherpad: https://etherpad.openstack.org/p/servicegroup-refactoring"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_b9b41335","line":261,"range":{"start_line":261,"start_character":14,"end_line":261,"end_character":71},"updated":"2015-10-21 02:12:48.000000000","message":"This link isn\u0027t used so perhaps just make it a std. reference.","commit_id":"0090754ebf25f36a96365107e57c86c863410774"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6f315db667e05d743e6cc9def574ec98cf79adfd","unresolved":false,"context_lines":[{"line_number":258,"context_line":"- https://review.openstack.org/#/c/138607"},{"line_number":259,"context_line":"- http://lists.openstack.org/pipermail/openstack-dev/2015-September/075267.html"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":".. _etherpad: https://etherpad.openstack.org/p/servicegroup-refactoring"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa80f949_7d83f956","line":261,"range":{"start_line":261,"start_character":14,"end_line":261,"end_character":71},"in_reply_to":"3a29b11f_b9b41335","updated":"2015-11-05 16:40:28.000000000","message":"+1","commit_id":"0090754ebf25f36a96365107e57c86c863410774"}]}
