)]}'
{"specs/mitaka/service-group-using-tooz.rst":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Add service group using Tooz drivers"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/cinder/+spec/service-group-using-Tooz"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec adds a ServiceGroup feature in cinder to manage group membership."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_f460d7a6","line":11,"updated":"2015-12-22 10:38:38.000000000","message":"Link doesn\u0027t actually work.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ddbf45aff1a253f1ab55742a8a18f55412d1c942","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Add service group using Tooz drivers"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/cinder/+spec/service-group-using-Tooz"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec adds a ServiceGroup feature in cinder to manage group membership."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_72bb7c0f","line":11,"in_reply_to":"3a7e1126_f460d7a6","updated":"2015-12-23 07:37:07.000000000","message":"I will modify it. :)","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Currently Cinder uses db driver to store the service info. The state of service"},{"line_number":19,"context_line":"can not be obtained directly. There is no either service group concept or other"},{"line_number":20,"context_line":"drivers support. A better choice is to use a ServiceGroup driver which can"},{"line_number":21,"context_line":"provide an uniform framework to manage the cinder distributed services. All the"},{"line_number":22,"context_line":"service info can be stored in the driver. The service state can be queried from"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_146483b6","line":19,"updated":"2015-12-22 10:38:38.000000000","message":"I\u0027m not sure on \"service group\" meaning, but we have some kind of service membership concept implemented through the DB. But I get the point here.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ddbf45aff1a253f1ab55742a8a18f55412d1c942","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Currently Cinder uses db driver to store the service info. The state of service"},{"line_number":19,"context_line":"can not be obtained directly. There is no either service group concept or other"},{"line_number":20,"context_line":"drivers support. A better choice is to use a ServiceGroup driver which can"},{"line_number":21,"context_line":"provide an uniform framework to manage the cinder distributed services. All the"},{"line_number":22,"context_line":"service info can be stored in the driver. The service state can be queried from"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_b0dd5772","line":19,"in_reply_to":"3a7e1126_146483b6","updated":"2015-12-23 07:37:07.000000000","message":"ok, ServiceGroup is more precise.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":20,"context_line":"drivers support. A better choice is to use a ServiceGroup driver which can"},{"line_number":21,"context_line":"provide an uniform framework to manage the cinder distributed services. All the"},{"line_number":22,"context_line":"service info can be stored in the driver. The service state can be queried from"},{"line_number":23,"context_line":"the driver."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_b456cfcb","line":23,"updated":"2015-12-22 10:38:38.000000000","message":"So Nova agreed on a little different approach here - they use SG driver only to determine the state of the service, and they store other information in the DB. I believe this is a right way to implement that - it\u0027s valid use case to list services even if Tooz backend is down (e.g. in purpose of debugging of the backend itself).","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ddbf45aff1a253f1ab55742a8a18f55412d1c942","unresolved":false,"context_lines":[{"line_number":20,"context_line":"drivers support. A better choice is to use a ServiceGroup driver which can"},{"line_number":21,"context_line":"provide an uniform framework to manage the cinder distributed services. All the"},{"line_number":22,"context_line":"service info can be stored in the driver. The service state can be queried from"},{"line_number":23,"context_line":"the driver."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_30d3a73a","line":23,"in_reply_to":"3a7e1126_b456cfcb","updated":"2015-12-23 07:37:07.000000000","message":"We made a mistake in description. In Cinder, we also only store the state of services.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":29,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":30,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"As an user, I want to know the cinder service state, so that I won\u0027t create or"},{"line_number":33,"context_line":"migrate a volume to an unhealthy node."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_d4591bfe","line":32,"updated":"2015-12-22 10:38:38.000000000","message":"I think it\u0027s more like scheduler should know about failed services earlier. Normally user doesn\u0027t even have access to cinder service-list call.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"17b02df794558dfb4107ba60b322a1c4a7ed621a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":30,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"As an user, I want to know the cinder service state, so that I won\u0027t create or"},{"line_number":33,"context_line":"migrate a volume to an unhealthy node."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_ecb0de8d","line":32,"in_reply_to":"1a7b0d38_d298306d","updated":"2015-12-23 12:31:57.000000000","message":"I see it that way:\n\n As an user, I want my volumes not to be scheduled to failed cinder-volume instances.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ddbf45aff1a253f1ab55742a8a18f55412d1c942","unresolved":false,"context_lines":[{"line_number":29,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":30,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"As an user, I want to know the cinder service state, so that I won\u0027t create or"},{"line_number":33,"context_line":"migrate a volume to an unhealthy node."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_d298306d","line":32,"in_reply_to":"3a7e1126_d4591bfe","updated":"2015-12-23 07:37:07.000000000","message":"Got it. As a consumer?","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Proposed change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Tooz driver will be used to implement the ServiceGroup feature. Tooz is able to"},{"line_number":39,"context_line":"provide the grouping concepts in a way. It supports the backends including"},{"line_number":40,"context_line":"zookeeper, memcached, redis, kazoo, and so on. It provides compatibility APIs"},{"line_number":41,"context_line":"to help developers to build distributed applications."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_7475c761","line":38,"updated":"2015-12-22 10:38:38.000000000","message":"It\u0027s more like ServiceGroup driver feature.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Tooz driver will be used to implement the ServiceGroup feature. Tooz is able to"},{"line_number":39,"context_line":"provide the grouping concepts in a way. It supports the backends including"},{"line_number":40,"context_line":"zookeeper, memcached, redis, kazoo, and so on. It provides compatibility APIs"},{"line_number":41,"context_line":"to help developers to build distributed applications."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Tooz needs to be installed in the Cinder service nodes. The backend used for"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_94707373","line":40,"updated":"2015-12-22 10:38:38.000000000","message":"zookeeper \u003d kazoo (kazoo it\u0027s Python ZooKeeper client)","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ddbf45aff1a253f1ab55742a8a18f55412d1c942","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Tooz driver will be used to implement the ServiceGroup feature. Tooz is able to"},{"line_number":39,"context_line":"provide the grouping concepts in a way. It supports the backends including"},{"line_number":40,"context_line":"zookeeper, memcached, redis, kazoo, and so on. It provides compatibility APIs"},{"line_number":41,"context_line":"to help developers to build distributed applications."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Tooz needs to be installed in the Cinder service nodes. The backend used for"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_b5cea981","line":40,"in_reply_to":"3a7e1126_94707373","updated":"2015-12-23 07:37:07.000000000","message":"ok,delete it.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Tooz needs to be installed in the Cinder service nodes. The backend used for"},{"line_number":44,"context_line":"Tooz can be installed and configured in any node. When the service starts, it"},{"line_number":45,"context_line":"needs to connect to the backend via Tooz and reports the heartbeat"},{"line_number":46,"context_line":"periodically."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Servicegroup driver will provides these basic operations:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_346bbf86","line":45,"updated":"2015-12-22 10:38:38.000000000","message":"Not all drivers need heartbeats. From what I know only Redis and memcached requires it.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ddbf45aff1a253f1ab55742a8a18f55412d1c942","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Tooz needs to be installed in the Cinder service nodes. The backend used for"},{"line_number":44,"context_line":"Tooz can be installed and configured in any node. When the service starts, it"},{"line_number":45,"context_line":"needs to connect to the backend via Tooz and reports the heartbeat"},{"line_number":46,"context_line":"periodically."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Servicegroup driver will provides these basic operations:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_cb9396a2","line":45,"in_reply_to":"3a7e1126_346bbf86","updated":"2015-12-23 07:37:07.000000000","message":"Yes, but we want to provide the uniform framework.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":58,"context_line":"exist, call create_group."},{"line_number":59,"context_line":"* service periodically calls the heartbeat method, in order to let the"},{"line_number":60,"context_line":"servivegroup driver knows that it is alive."},{"line_number":61,"context_line":"* service_is_up API is called when the state of service is needed."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Alternatives"},{"line_number":64,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_54668bbb","line":61,"updated":"2015-12-22 10:38:38.000000000","message":"This is fine for me as long as we still have a DB entry for each service, so we can query them even when our Tooz backend is down.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":105,"context_line":"Other deployer impact"},{"line_number":106,"context_line":"---------------------"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Add a `service_group_url` configure option in cinder.conf. Deployers can"},{"line_number":109,"context_line":"modify the option to decide which driver to use. A example is as follows:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_f40777c7","line":108,"updated":"2015-12-22 10:38:38.000000000","message":"We do have an option to configure Tooz now: https://review.openstack.org/#/c/183537/ It\u0027s better to reuse it. We also need a config option to set SG driver.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"17b02df794558dfb4107ba60b322a1c4a7ed621a","unresolved":false,"context_lines":[{"line_number":105,"context_line":"Other deployer impact"},{"line_number":106,"context_line":"---------------------"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Add a `service_group_url` configure option in cinder.conf. Deployers can"},{"line_number":109,"context_line":"modify the option to decide which driver to use. A example is as follows:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_0c00ca33","line":108,"in_reply_to":"1a7b0d38_b502293d","updated":"2015-12-23 12:31:57.000000000","message":"Ah, good point. So service_group_url should probably default to $backend_url, but having also service_group_url option is useful.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ddbf45aff1a253f1ab55742a8a18f55412d1c942","unresolved":false,"context_lines":[{"line_number":105,"context_line":"Other deployer impact"},{"line_number":106,"context_line":"---------------------"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Add a `service_group_url` configure option in cinder.conf. Deployers can"},{"line_number":109,"context_line":"modify the option to decide which driver to use. A example is as follows:"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_b502293d","line":108,"in_reply_to":"3a7e1126_f40777c7","updated":"2015-12-23 07:37:07.000000000","message":"Ok, here \u0027service_group_url\u0027 means \u0027backend_url\u0027. We can reuse the \u0027backend_url\u0027. But we have a question. If the deployers want to use different backends between ServiceGoup and Lock, what do they do?","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Work Items"},{"line_number":143,"context_line":"----------"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"* Implement the Tooz ServiceGroup driver"},{"line_number":146,"context_line":"* Complete the Unit tests."},{"line_number":147,"context_line":"* Complete the CI."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_140b23d7","line":144,"updated":"2015-12-22 10:38:38.000000000","message":"At first you would need to abstract existing DB approach.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ddbf45aff1a253f1ab55742a8a18f55412d1c942","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Work Items"},{"line_number":143,"context_line":"----------"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"* Implement the Tooz ServiceGroup driver"},{"line_number":146,"context_line":"* Complete the Unit tests."},{"line_number":147,"context_line":"* Complete the CI."}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_0be2fe03","line":144,"in_reply_to":"3a7e1126_140b23d7","updated":"2015-12-23 07:37:07.000000000","message":"Yes, we will add it.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"* Implement the Tooz ServiceGroup driver"},{"line_number":146,"context_line":"* Complete the Unit tests."},{"line_number":147,"context_line":"* Complete the CI."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_b40d6fe9","line":147,"updated":"2015-12-22 10:38:38.000000000","message":"What CI do you mean here exactly?","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ddbf45aff1a253f1ab55742a8a18f55412d1c942","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"* Implement the Tooz ServiceGroup driver"},{"line_number":146,"context_line":"* Complete the Unit tests."},{"line_number":147,"context_line":"* Complete the CI."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_551d0572","line":147,"in_reply_to":"3a7e1126_b40d6fe9","updated":"2015-12-23 07:37:07.000000000","message":"move to Testing section.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":150,"context_line":"Dependencies"},{"line_number":151,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"None"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_d4103b02","line":153,"updated":"2015-12-22 10:38:38.000000000","message":"I think you\u0027re a little dependent on Tooz locks efforts, but most interesting stuff there is already merged, so I understand why you\u0027re not mentioning it here.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ddbf45aff1a253f1ab55742a8a18f55412d1c942","unresolved":false,"context_lines":[{"line_number":150,"context_line":"Dependencies"},{"line_number":151,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"None"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_b55ea943","line":153,"in_reply_to":"3a7e1126_d4103b02","updated":"2015-12-23 07:37:07.000000000","message":"Oh, yes, we didn\u0027t notice that. Thank you for your mention.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":156,"context_line":"Testing"},{"line_number":157,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Unit and functional test cases needs to be added."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_74fce7b7","line":159,"updated":"2015-12-22 10:38:38.000000000","message":"You\u0027re mentioning a CI earlier. Please elaborate on it here.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ddbf45aff1a253f1ab55742a8a18f55412d1c942","unresolved":false,"context_lines":[{"line_number":156,"context_line":"Testing"},{"line_number":157,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Unit and functional test cases needs to be added."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_8b9cae6a","line":159,"in_reply_to":"3a7e1126_74fce7b7","updated":"2015-12-23 07:37:07.000000000","message":"OK.Got it!","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":162,"context_line":"Documentation Impact"},{"line_number":163,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"None"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_94f713d2","line":165,"updated":"2015-12-22 10:38:38.000000000","message":"New config options should be documented.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ddbf45aff1a253f1ab55742a8a18f55412d1c942","unresolved":false,"context_lines":[{"line_number":162,"context_line":"Documentation Impact"},{"line_number":163,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"None"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_2b601a35","line":165,"in_reply_to":"3a7e1126_94f713d2","updated":"2015-12-23 07:37:07.000000000","message":"Got it!","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"6f83a2249b465b3e2817c389f811d4e68745b8f6","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"References"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":170,"context_line":"* OPNFV Doctor project: https://wiki.opnfv.org/doctor"},{"line_number":171,"context_line":"* Tooz: http://docs.openstack.org/developer/Tooz/"},{"line_number":172,"context_line":"* Similar BP in Nova:"},{"line_number":173,"context_line":"  https://github.com/openstack/nova-specs/blob/master/specs/liberty/approved/service-group-using-Tooz.rst"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a7e1126_3402dfb4","line":170,"updated":"2015-12-22 10:38:38.000000000","message":"Why exactly this is related to this blueprint?","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"17b02df794558dfb4107ba60b322a1c4a7ed621a","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"References"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":170,"context_line":"* OPNFV Doctor project: https://wiki.opnfv.org/doctor"},{"line_number":171,"context_line":"* Tooz: http://docs.openstack.org/developer/Tooz/"},{"line_number":172,"context_line":"* Similar BP in Nova:"},{"line_number":173,"context_line":"  https://github.com/openstack/nova-specs/blob/master/specs/liberty/approved/service-group-using-Tooz.rst"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_6c4aae85","line":170,"in_reply_to":"1a7b0d38_ab540a54","updated":"2015-12-23 12:31:57.000000000","message":"No need to delete it if you explain. :)","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ddbf45aff1a253f1ab55742a8a18f55412d1c942","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"References"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":170,"context_line":"* OPNFV Doctor project: https://wiki.opnfv.org/doctor"},{"line_number":171,"context_line":"* Tooz: http://docs.openstack.org/developer/Tooz/"},{"line_number":172,"context_line":"* Similar BP in Nova:"},{"line_number":173,"context_line":"  https://github.com/openstack/nova-specs/blob/master/specs/liberty/approved/service-group-using-Tooz.rst"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a7b0d38_ab540a54","line":170,"in_reply_to":"3a7e1126_3402dfb4","updated":"2015-12-23 07:37:07.000000000","message":"Ok,delete it.","commit_id":"c4ae2af22885bbf35972dbd15979ecc150390701"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"3af601a83a5a4f50abdbbbd38648b28ee54bb0ad","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Problem description"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Currently Cinder uses DB driver to store the service info. The state of service"},{"line_number":19,"context_line":"can not be obtained directly. There is no either ServiceGroup concept or other"},{"line_number":20,"context_line":"drivers support. A better choice is to use a ServiceGroup driver which can"},{"line_number":21,"context_line":"provide an uniform framework to manage the cinder distributed services. The"},{"line_number":22,"context_line":"service state info can be stored and queried from the driver."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_9aa80c8f","line":22,"range":{"start_line":18,"start_character":0,"end_line":22,"end_character":61},"updated":"2015-12-28 01:56:58.000000000","message":"I don\u0027t understand the problem statement here.  What is missing in Cinder? What problem does that cause?","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"7ca4424cbe7f53b5d40433cb9f9499b31e4ffab8","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Problem description"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Currently Cinder uses DB driver to store the service info. The state of service"},{"line_number":19,"context_line":"can not be obtained directly. There is no either ServiceGroup concept or other"},{"line_number":20,"context_line":"drivers support. A better choice is to use a ServiceGroup driver which can"},{"line_number":21,"context_line":"provide an uniform framework to manage the cinder distributed services. The"},{"line_number":22,"context_line":"service state info can be stored and queried from the driver."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_f2d4b520","line":22,"range":{"start_line":18,"start_character":0,"end_line":22,"end_character":61},"in_reply_to":"1a7b0d38_3d56b2ce","updated":"2015-12-29 10:31:12.000000000","message":"@dongwenjuan: Now I\u0027m also getting confused here. I thought the proposition is to simply make it possible to use Tooz to monitor services. I wasn\u0027t aware of more complex integration with ongoing c-vol A/A efforts. Please elaborate more on how you want to integrate then.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ab07c01de19ace72b8eca9aa3bf00f6283cfdeaa","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Problem description"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Currently Cinder uses DB driver to store the service info. The state of service"},{"line_number":19,"context_line":"can not be obtained directly. There is no either ServiceGroup concept or other"},{"line_number":20,"context_line":"drivers support. A better choice is to use a ServiceGroup driver which can"},{"line_number":21,"context_line":"provide an uniform framework to manage the cinder distributed services. The"},{"line_number":22,"context_line":"service state info can be stored and queried from the driver."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_3d56b2ce","line":22,"range":{"start_line":18,"start_character":0,"end_line":22,"end_character":61},"in_reply_to":"1a7b0d38_9aa80c8f","updated":"2015-12-28 03:22:00.000000000","message":"Currently we get the service state via comparing the update time(in DB) with service_down_time(in cinder.conf). We need to deal the data. And DB driver has no concept of group. As a/a cinder-volume support was proposed, cinder-volume has the concept of cluster. Multiple cinder-volume which were attached to a single storage backend can be considered as a group. We only need to report the heartbeat to the ServiceGroup backend periodically. We don\u0027t need to deal the data. We get the service state via querying the service member from the ServiceGroup backend.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"3c5577e3a92831463751ccb4cdf3344c7fcc2a06","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Problem description"},{"line_number":16,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Currently Cinder uses DB driver to store the service info. The state of service"},{"line_number":19,"context_line":"can not be obtained directly. There is no either ServiceGroup concept or other"},{"line_number":20,"context_line":"drivers support. A better choice is to use a ServiceGroup driver which can"},{"line_number":21,"context_line":"provide an uniform framework to manage the cinder distributed services. The"},{"line_number":22,"context_line":"service state info can be stored and queried from the driver."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa69d971_9622a9b8","line":22,"range":{"start_line":18,"start_character":0,"end_line":22,"end_character":61},"in_reply_to":"1a7b0d38_f2d4b520","updated":"2015-12-30 09:20:00.000000000","message":"Oh,maybe i have a misdescription. We don\u0027t integrate with c-vol A/A support. We think about how to group the services. Multiple cinder-volume which were attached to a single storage backend can be considered as a group.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"3af601a83a5a4f50abdbbbd38648b28ee54bb0ad","unresolved":false,"context_lines":[{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":29,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an user, I want my volumes not to be scheduled to failed cinder-volume"},{"line_number":32,"context_line":"instances."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_ba9dc867","line":29,"range":{"start_line":29,"start_character":65,"end_line":29,"end_character":66},"updated":"2015-12-28 01:56:58.000000000","message":"Why \u0027cinder service-list/service-disable/service-enable\u0027 isn\u0027t enough for this purpose?","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"84ec8f127919c6671557513ac1757826cfc3af92","unresolved":false,"context_lines":[{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":29,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an user, I want my volumes not to be scheduled to failed cinder-volume"},{"line_number":32,"context_line":"instances."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_7a4c12c8","line":29,"range":{"start_line":29,"start_character":65,"end_line":29,"end_character":66},"in_reply_to":"1a7b0d38_52710943","updated":"2015-12-29 15:42:44.000000000","message":"Could you elaborate why DB heartbeats is considered not reliable?","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8847041ddfae25c71a2dc394f65e9d6ea4a13df4","unresolved":false,"context_lines":[{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":29,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an user, I want my volumes not to be scheduled to failed cinder-volume"},{"line_number":32,"context_line":"instances."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa69d971_b3482a89","line":29,"range":{"start_line":29,"start_character":65,"end_line":29,"end_character":66},"in_reply_to":"1a7b0d38_7a4c12c8","updated":"2015-12-29 17:39:03.000000000","message":"I\u0027ve never said DB heartbeats are not reliable, I just think that a service like ZooKeeper, designed as \"centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services\" [1] has advantages over DB as service discovery tool and may fit for some use cases. I don\u0027t think this blueprint is proposing changing the default behavior.\n\n[1] https://zookeeper.apache.org/","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ab07c01de19ace72b8eca9aa3bf00f6283cfdeaa","unresolved":false,"context_lines":[{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":29,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an user, I want my volumes not to be scheduled to failed cinder-volume"},{"line_number":32,"context_line":"instances."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_5d237ea7","line":29,"range":{"start_line":29,"start_character":65,"end_line":29,"end_character":66},"in_reply_to":"1a7b0d38_ba9dc867","updated":"2015-12-28 03:22:00.000000000","message":"Oh, you may have made a misunderstand. Cinder service-list can get the services\u0027states. We just add the Tooz driver to store the service state info. We can get the service state via DB or the ServiceGroup driver.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"7ca4424cbe7f53b5d40433cb9f9499b31e4ffab8","unresolved":false,"context_lines":[{"line_number":26,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":29,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an user, I want my volumes not to be scheduled to failed cinder-volume"},{"line_number":32,"context_line":"instances."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_52710943","line":29,"range":{"start_line":29,"start_character":65,"end_line":29,"end_character":66},"in_reply_to":"1a7b0d38_ba9dc867","updated":"2015-12-29 10:31:12.000000000","message":"The idea is to make it possible to use something more reliable than DB heartbeats to monitor services - like ZooKeeper.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"3af601a83a5a4f50abdbbbd38648b28ee54bb0ad","unresolved":false,"context_lines":[{"line_number":28,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":29,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an user, I want my volumes not to be scheduled to failed cinder-volume"},{"line_number":32,"context_line":"instances."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_5a85c404","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":10},"updated":"2015-12-28 01:56:58.000000000","message":"First off, users don\u0027t even know cinder-volume service instances.  2nd, it\u0027s scheduler\u0027s job to make sure a \u0027create\u0027 request is placed to a healthy cinder-volume, if it is not the case in some cases, it\u0027s a fundamental failure in Cinder, let\u0027s fix scheduler.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"7ca4424cbe7f53b5d40433cb9f9499b31e4ffab8","unresolved":false,"context_lines":[{"line_number":28,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":29,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an user, I want my volumes not to be scheduled to failed cinder-volume"},{"line_number":32,"context_line":"instances."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_d284190c","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":10},"in_reply_to":"1a7b0d38_3d5552f9","updated":"2015-12-29 10:31:12.000000000","message":"I don\u0027t understand what you mean by \"consumer\" here.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"ab07c01de19ace72b8eca9aa3bf00f6283cfdeaa","unresolved":false,"context_lines":[{"line_number":28,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":29,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an user, I want my volumes not to be scheduled to failed cinder-volume"},{"line_number":32,"context_line":"instances."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_3d5552f9","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":10},"in_reply_to":"1a7b0d38_5a85c404","updated":"2015-12-28 03:22:00.000000000","message":"As a consumer? Schedule service means the consumer?","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"7ca4424cbe7f53b5d40433cb9f9499b31e4ffab8","unresolved":false,"context_lines":[{"line_number":28,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":29,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an user, I want my volumes not to be scheduled to failed cinder-volume"},{"line_number":32,"context_line":"instances."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_f21355b6","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":10},"in_reply_to":"1a7b0d38_5a85c404","updated":"2015-12-29 10:31:12.000000000","message":"In fact the scheduler is unable to tell that request made to a failed c-vol needs to be rescheduled, because rescheduling needs to be triggered by c-vol itself. Therefore there\u0027s a ~1 minute wide window between a failure and heartbeat timeout when all the volumes scheduled to a failed c-vol will just hang in creating. I believe this blueprint aims at providing new, more reliable and faster method of monitoring the services to shrink that window.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"8847041ddfae25c71a2dc394f65e9d6ea4a13df4","unresolved":false,"context_lines":[{"line_number":28,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":29,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an user, I want my volumes not to be scheduled to failed cinder-volume"},{"line_number":32,"context_line":"instances."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa69d971_b35eea74","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":10},"in_reply_to":"1a7b0d38_da7666d6","updated":"2015-12-29 17:39:03.000000000","message":"I think the blueprint aims to give an option for these \"minority cases\". Also shrinking service_down_time needs shrinking service reporting time. This affects the DB load if we have a lot of c-vol services. ZooKeeper for example simply tracks an open TCP connection to monitor service state, which is more lightweight.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"84ec8f127919c6671557513ac1757826cfc3af92","unresolved":false,"context_lines":[{"line_number":28,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":29,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an user, I want my volumes not to be scheduled to failed cinder-volume"},{"line_number":32,"context_line":"instances."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_da7666d6","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":10},"in_reply_to":"1a7b0d38_f21355b6","updated":"2015-12-29 15:42:44.000000000","message":"In some cases, maybe 60 sec windows is too big but I doubt for most cases, it just works.  One can easily shrink the windows to 10 or 5 sec via cinder.conf if he/she wants to without code change/deployment efforts.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"3c5577e3a92831463751ccb4cdf3344c7fcc2a06","unresolved":false,"context_lines":[{"line_number":28,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":29,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an user, I want my volumes not to be scheduled to failed cinder-volume"},{"line_number":32,"context_line":"instances."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa69d971_b8da3b77","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":10},"in_reply_to":"fa69d971_b35eea74","updated":"2015-12-30 09:20:00.000000000","message":"Eh, \u0027consumer\u0027 means which service uses the API to get the service state, here means the schedule service. I\u0027m not sure that \u0027consumer\u0027 is a correct description. :)","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"302dc436bdb55db4a484eba37085f6e9663be43a","unresolved":false,"context_lines":[{"line_number":28,"context_line":"As an admin, I want to know each cinder service state, so that I can take some"},{"line_number":29,"context_line":"actions to keep cloud in high availability if any service is down."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"As an user, I want my volumes not to be scheduled to failed cinder-volume"},{"line_number":32,"context_line":"instances."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"},{"line_number":35,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa69d971_4388d522","line":32,"range":{"start_line":31,"start_character":0,"end_line":32,"end_character":10},"in_reply_to":"fa69d971_b35eea74","updated":"2015-12-30 21:20:46.000000000","message":"I\u0027d argue that even updating DB on 1 sec internal is really much of load for a DB.  DB is designed to handle thousands of OLTP type transactions. Even one have 1,000 c-vol running at the same time and updating their state every 1 sec, it\u0027s just 1,000 update in DB, which most DB deployment should be able to process without problem.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"7ca4424cbe7f53b5d40433cb9f9499b31e4ffab8","unresolved":false,"context_lines":[{"line_number":105,"context_line":"Other deployer impact"},{"line_number":106,"context_line":"---------------------"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"* Add `servicegroup_driver` configure optinon in cinder.conf."},{"line_number":109,"context_line":"* Add the `backend_url` option."},{"line_number":110,"context_line":"* Configure the `backend_url` if using Tooz as servicegroup driver."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_f27a75f0","line":108,"range":{"start_line":108,"start_character":38,"end_line":108,"end_character":45},"updated":"2015-12-29 10:31:12.000000000","message":"s/optinon/option","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"3c5577e3a92831463751ccb4cdf3344c7fcc2a06","unresolved":false,"context_lines":[{"line_number":105,"context_line":"Other deployer impact"},{"line_number":106,"context_line":"---------------------"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"* Add `servicegroup_driver` configure optinon in cinder.conf."},{"line_number":109,"context_line":"* Add the `backend_url` option."},{"line_number":110,"context_line":"* Configure the `backend_url` if using Tooz as servicegroup driver."},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa69d971_ea945ce9","line":108,"range":{"start_line":108,"start_character":38,"end_line":108,"end_character":45},"in_reply_to":"1a7b0d38_f27a75f0","updated":"2015-12-30 09:20:00.000000000","message":"Done","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"7ca4424cbe7f53b5d40433cb9f9499b31e4ffab8","unresolved":false,"context_lines":[{"line_number":114,"context_line":"::"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"  servicegroup_driver \u003d Tooz"},{"line_number":117,"context_line":"  backend_url \u003d \"memcached://localhost:11211?timeout\u003d5\""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"The interval of heartbeat uses report_interval."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_ad233057","line":117,"updated":"2015-12-29 10:31:12.000000000","message":"I wonder if these options shouldn\u0027t go to [coordination] section. And I thought you want to provide a new option that will default to backend_url in case someone want to use different backend for locks and for health-monitoring.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"3c5577e3a92831463751ccb4cdf3344c7fcc2a06","unresolved":false,"context_lines":[{"line_number":114,"context_line":"::"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"  servicegroup_driver \u003d Tooz"},{"line_number":117,"context_line":"  backend_url \u003d \"memcached://localhost:11211?timeout\u003d5\""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"The interval of heartbeat uses report_interval."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa69d971_5baa1c72","line":117,"in_reply_to":"1a7b0d38_ad233057","updated":"2015-12-30 09:20:00.000000000","message":"Yes, maybe we need to add a [ServiceGroup] section if someone want to use different backends for locks and servicegroup.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"7ca4424cbe7f53b5d40433cb9f9499b31e4ffab8","unresolved":false,"context_lines":[{"line_number":154,"context_line":"Dependencies"},{"line_number":155,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Tooz Lock, adding upport for distributed locks, is implemented as follows:"},{"line_number":158,"context_line":"https://review.openstack.org/#/c/183537/."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"This spec will add ServiceGroup APIs based on the coordinator work."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a7b0d38_8d1f5407","line":157,"range":{"start_line":157,"start_character":18,"end_line":157,"end_character":24},"updated":"2015-12-29 10:31:12.000000000","message":"s/upport/support","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"3c5577e3a92831463751ccb4cdf3344c7fcc2a06","unresolved":false,"context_lines":[{"line_number":154,"context_line":"Dependencies"},{"line_number":155,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Tooz Lock, adding upport for distributed locks, is implemented as follows:"},{"line_number":158,"context_line":"https://review.openstack.org/#/c/183537/."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"This spec will add ServiceGroup APIs based on the coordinator work."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa69d971_6ab06c8c","line":157,"range":{"start_line":157,"start_character":18,"end_line":157,"end_character":24},"in_reply_to":"1a7b0d38_8d1f5407","updated":"2015-12-30 09:20:00.000000000","message":"Done","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"7ca4424cbe7f53b5d40433cb9f9499b31e4ffab8","unresolved":false,"context_lines":[{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* Unit test cases for Tooz code."},{"line_number":167,"context_line":"* A CI configured to test ServiceGroup with Memcached or ZooKeeper as backends."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Documentation Impact"},{"line_number":170,"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":4,"id":"1a7b0d38_edd4d820","line":167,"range":{"start_line":167,"start_character":44,"end_line":167,"end_character":53},"updated":"2015-12-29 10:31:12.000000000","message":"I advice against Memcached. This Tooz driver is considered unreliable. ZooKeeper CI seems like the best idea as ZooKeeper is already in DevStack and on gates.","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"3c5577e3a92831463751ccb4cdf3344c7fcc2a06","unresolved":false,"context_lines":[{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* Unit test cases for Tooz code."},{"line_number":167,"context_line":"* A CI configured to test ServiceGroup with Memcached or ZooKeeper as backends."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Documentation Impact"},{"line_number":170,"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":4,"id":"fa69d971_ca48788a","line":167,"range":{"start_line":167,"start_character":44,"end_line":167,"end_character":53},"in_reply_to":"1a7b0d38_edd4d820","updated":"2015-12-30 09:20:00.000000000","message":"Got it! Thank you~","commit_id":"b15a4f78a9bdd51ac1e6cf84f5fe9e90e1d76371"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"a7fb45bf14d2df3ec66f6a33246c97bed946097a","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Currently Cinder uses DB driver to store the service info. The state of service"},{"line_number":19,"context_line":"can not be changed immediately. It has a delay according to the configuration"},{"line_number":20,"context_line":"of service_down_time. But some external monitor system wants to get the service"},{"line_number":21,"context_line":"state immediately in order to keep cloud in high availability. In addition,"},{"line_number":22,"context_line":"there is no either ServiceGroup concept or other drivers support. A better"},{"line_number":23,"context_line":"choice is to use a ServiceGroup driver which can provide an uniform framework"}],"source_content_type":"text/x-rst","patch_set":5,"id":"fa69d971_e3c1c981","line":20,"range":{"start_line":20,"start_character":26,"end_line":20,"end_character":60},"updated":"2015-12-30 21:15:54.000000000","message":"If it\u0027s for external monitoring system, then this must be Cinder API extension.  And btw, you can track c-vol state by checking process id and log in real time (means no delay), we do it in zabbix for our deployment, it works pretty well.","commit_id":"0df4c5fabcb90cd8f9c2c9332dbfc0cfb8b45abe"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"f5fc111719aaed0d8e0e20aef76eae82b79f4bb6","unresolved":false,"context_lines":[{"line_number":21,"context_line":"is checking for the cinder-volume service state. Although the service state is"},{"line_number":22,"context_line":"up, actually, the service is down. This attemp for creation will be failed."},{"line_number":23,"context_line":"A better choice is to use a ServiceGroup driver so that the service state can"},{"line_number":24,"context_line":"be stored and queried without a delay."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a68dd71_5c7c5920","line":24,"updated":"2016-01-20 14:08:12.000000000","message":"Nothing on a distributed system is \u0027without delay\u0027.\n\nAre you proposing the API node will directly query tooz? I\u0027m generally nervous of blocking calls in the API.","commit_id":"1a47ada1067dc042fa04ecf55d05693cce8755b7"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"0a1754590ef5108e4876426dfac78eab6c5d88ab","unresolved":false,"context_lines":[{"line_number":21,"context_line":"is checking for the cinder-volume service state. Although the service state is"},{"line_number":22,"context_line":"up, actually, the service is down. This attemp for creation will be failed."},{"line_number":23,"context_line":"A better choice is to use a ServiceGroup driver so that the service state can"},{"line_number":24,"context_line":"be stored and queried without a delay."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a68dd71_c465a645","line":24,"in_reply_to":"9a68dd71_5c7c5920","updated":"2016-01-21 08:09:33.000000000","message":"We query the service members from servicegroup to get whether the service state is up or down. I\u0027m confused about \"API node will directly query tooz\". We think that the current API also queries DB directly,as the same as ServiceGroup. So, could you please explain more explicit? :)","commit_id":"1a47ada1067dc042fa04ecf55d05693cce8755b7"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"f5fc111719aaed0d8e0e20aef76eae82b79f4bb6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As an admin, I want to get the reliable cinder service state, so that I can"},{"line_number":31,"context_line":"safely perform actions on storage node."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a68dd71_9ce651e7","line":31,"range":{"start_line":31,"start_character":26,"end_line":31,"end_character":33},"updated":"2016-01-20 14:08:12.000000000","message":"\u0027reliable\u0027 is a loaded term, and there\u0027s no example here of an action that requires better than the current granularity.\n\nOne advantage of the current method is that it means the service is not just \u0027up\u0027 but can also talk to the DB.","commit_id":"1a47ada1067dc042fa04ecf55d05693cce8755b7"},{"author":{"_account_id":18783,"name":"dongwenjuan","email":"dong.wenjuan@zte.com.cn","username":"dongwenjuan"},"change_message_id":"0a1754590ef5108e4876426dfac78eab6c5d88ab","unresolved":false,"context_lines":[{"line_number":28,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"As an admin, I want to get the reliable cinder service state, so that I can"},{"line_number":31,"context_line":"safely perform actions on storage node."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"9a68dd71_efc8c376","line":31,"range":{"start_line":31,"start_character":26,"end_line":31,"end_character":33},"in_reply_to":"9a68dd71_9ce651e7","updated":"2016-01-21 08:09:33.000000000","message":"The service state should reflect it\u0027s real state. For example, the c-vol service is \u0027down\u0027,but the service state is \u0027up\u0027 because of the delay. The volume which is created or migrated will be scheduled to the unhealthy storage node. If the service state change immediately, the new volume will not be scheduled to the c-vol service. The monitor tools detect that the service is down, the deployer can deploy a new storage node.","commit_id":"1a47ada1067dc042fa04ecf55d05693cce8755b7"}]}
